This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

bootloader中断-BOOT中断与APP中断共用问题

Other Parts Discussed in Thread: MSP430G2755

哪里有关于在BOOT区用了定时中断与UART中断,与APP中断也用定时中断与UART中断的程序范例?

#pragma vector=18
__interrupt void intec_9(void)              //
{
   asm(" br &0xEFF2;");
}

用以上的方法是没有问题。

但是我在BOOT区若是如下用,就会中断错误。应该怎么写?

#pragma vector=18
__interrupt void intec_9(void)              //
{

if((ResetVectorValid()==1)&&(UpMode==0))  
        {
        asm("br &0xEFF2;");
        }

   else if(ResetVectorValid()==0)  
    {
       ++UpTime10ms; 
       TACCR0 +=1000 ;                          // Add Offset to TACCR0
    }

}

  • 你需要什么样功能,UART中断和定时中断?

  • 你好,是的,需要在bootloader 里用到UART 与定时器。 有这样的范例?

    而且APP里也需要用,应该用怎么样的方法的去实现?我用的芯片是MSP430G2755.

    其实还要兼容 bootloader 里I2C 升级,不然光UART 与定时器还是可以不放到bootloader 里去处理的。只有弄明白BOOTLOADER 里中断 与APP中断的问题才能更好的开发。谢谢。

  • 不理解你指的错误是什么,能把你的代码完整贴出来吗?

    才知道ResetVectorValid()的内容是什么, UpMode又是如何定义的?全局变量?

    如果UpMode是全局变量,由于bootloader和APP可能会占用相同的RAM空间,会将UpMode的值改掉.

    所以建议Bootloader的UART采用查询方式,APP采用中断方式运行

  • 参考下这个帖子,可能会有帮助http://www.deyisupport.com/question_answer/microcontrollers/msp430/f/55/t/51847.aspx

  • ResetVectorValid()  只是判断地址有没有问题,已经仿真过了,跳转的问题。哎,看来只好自己在仿真,在看汇编了。

  • 谢谢,就是参考附件那个文档写的。

  • 还是得靠自己仿真,仿真,仿真,看汇编,请以后的注意在APP程序里嵌入即可。

    asm("pop.w R14;");
    // asm("pop.w R14;"); 
    asm("RET");

    还得在验证。