哪里有关于在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
}
}
Maka Luo:
你需要什么样功能,UART中断和定时中断?
chao Fang1:
回复 Maka Luo:
你好,是的,需要在bootloader 里用到UART 与定时器。 有这样的范例?
而且APP里也需要用,应该用怎么样的方法的去实现?我用的芯片是MSP430G2755.
其实还要兼容 bootloader 里I2C 升级,不然光UART 与定时器还是可以不放到bootloader 里去处理的。只有弄明白BOOTLOADER 里中断 与APP中断的问题才能更好的开发。谢谢。
Hardy Zhou:
不理解你指的错误是什么,能把你的代码完整贴出来吗?
才知道ResetVectorValid()的内容是什么, UpMode又是如何定义的?全局变量?
如果UpMode是全局变量,由于bootloader和APP可能会占用相同的RAM空间,会将UpMode的值改掉.
所以建议Bootloader的UART采用查询方式,APP采用中断方式运行
chao Fang1:
回复 Hardy Zhou:
ResetVectorValid() 只是判断地址有没有问题,已经仿真过了,跳转的问题。哎,看来只好自己在仿真,在看汇编了。
chao Fang1:
回复 灰小子:
谢谢,就是参考附件那个文档写的。