奇怪的行为使用MSP430FR4133开启LED

时间:2016-09-06 18:17:57

标签: assembly msp430

当我使用汇编语言对MSP430FR4133板进行编程以打开LED时,我看到了一些非常奇怪的行为。

运行装配程序时,LED不会亮起。

问题在于,当我运行一个简单的C程序时,LED亮起,它就像我编程一样工作。

现在,如果我回去运行装配程序,LED将会亮起!但如果我停止程序并重新启动程序,LED将不再重新打开。

有什么想法可能会发生这种奇怪的行为吗?

这是我正在使用的汇编代码:

    ;MSP430 Assembler Code Template for use with TI Code Composer Studio

    .cdecls C,LIST,"msp430fr4133.h"       ; Include device header file


    .def    RESET                  

    .text                           ; Assemble into program memory.
    .retain                         ; Override ELF conditional linking
                                        ; and retain current section.
    .retainrefs                     ; And retain any sections that have
                                        ; references to current section.


     RESET       mov.w   #__STACK_END,SP   ; Initialize stackpointer
     StopWDT     mov.w   #WDTPW|WDTHOLD,&WDTCTL  ; Stop watchdog timer

     mov.w  #0x0001,&P1OUT
     mov.b  #0x0001,&P1DIR


     ; Main loop here


     InfLoop:
        jmp InfLoop
        NOP

     .global __STACK_END
     .sect   .stack


     ; Interrupt Vectors

      .sect   ".reset"                ; MSP430 RESET Vector
      .short  RESET

这是我在电路板上运行的C代码:

      #include <msp430fr4133.h>

      int main(void)
      {
           PM5CTL0 &= ~LOCKLPM5; // Disable the GPIO power-on default  high-impedance mode

           WDTCTL = WDTPW | WDTHOLD; // Stop the watchdog timer

           P1DIR = 0x01;
           P4DIR = 0x01;

           P1OUT = 0x01;
           P4OUT = 0x01;

           for(;;)
           {
           }

           return (0);
       }

2 个答案:

答案 0 :(得分:0)

C代码有:

  PM5CTL0 &= ~LOCKLPM5; // Disable the GPIO power-on default  high-impedance mode

汇编程序代码中缺少此初始化;没有它,其他任何引脚配置设置都不会生效。

答案 1 :(得分:0)

请参阅LPSP5(低功耗模式)的MSP430用户指南。典型的asm示例:

...

StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop WDT
SetupGPIO   bis.b   #BIT0,&P1DIR
            bis.b   #BIT0,&P1OUT
UnlockGPIO  bic.w   #LOCKLPM5,&PM5CTL0      ; Disable the GPIO power-on default
                                            ; high-impedance mode to activate
                                            ; previously configured port settings

...