Part Number: MSP432P401R
你好,使用Timer定时中断,在中断回调中使用UART 、I2C 串行通信接口遇到程序跑飞的问题。中断回调运行到串行通信代码时候,程序就飞了。代码摘录如下
定时中断回调
void timerCallback(Timer_Handle myHandle)
{
GPIO_toggle(CONFIG_GPIO_LED_0);
Display_printf(hSerial, 0, 0, "timer callback\n");//此处飞掉,如果此行代码去掉,程序正常运行;而且在中断回调外部调用串口通信的话无问题,只在此定时回调中调用串口通信会导致程序飞掉
}
使用的是SDK中 display_MSP_EXP432P401R_nortos_ccs的例程修改,只加入了timer32的使用。
CCS版本: Version: 10.1.0.00010
SDK版本:simplelink_msp432p4_sdk_3_40_01_02
Susan Yang:
LUN123 LUN123 说:而且在中断回调外部调用串口通信的话无问题,只在此定时回调中调用串口通信会导致程序飞掉
中断处理程序里面可以调用别的函数。但一般不建议在中断服务程序内这样使用。
如果中断处理程序的这一段时间中出现了其它的中断并且认为的在中断服务程序中打开了中断相应,系统会将其放入等待队列,一旦这个队列过大,就会跑飞。一般MSP432在进入一个中断处理程序,系统会自动关闭对其他中断的响应,所以无论中断处理程序中调用了时间复杂度多么大的程序都不会有问题。但是如果想使用定时器中断作精确延时的时候,就容易造成死锁。