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.

使用430f5510单片机,关于一些原子操作的问题



用TIME0循环读四路风扇转速,是直接用time0来计算脉宽,我是循环开中断来做的,
(TA0CCTL1&= ~CCIE;  TA0CCTL2|= CCIE;)-->(TA0CCTL2&= ~CCIE;  TA0CCTL3|= CCIE;)......
(TA0CCTL4&= ~CCIE;  TA0CCTL1|= CCIE;)

在中断里面关掉自己中断的使能和 TA0CTL|=TACLR;有没有潜在的危险?

另外程序也开了time1做轮询中断,因为mian函数中和轮询中断中存在这共同的全局变量,所以mian函数中在读写这个全局变量的时候要先关掉轮询中断,现在不清楚TA2CCTL1 &= ~CCIE; 存在不存在原子操作的说法,会不会在执行TA2CCTL1 &= ~CCIE;被中断硬件修改CCIFG位造成不可预知的情况?

  • 楼主你好!

    1、MSP430进入中断服务程序的时候,默认关掉全局中断使能。退出中断前才会使能全局中断。

    2、中断服务程序建议使用影子变量,即变量的一个缓存,以防止和其他任务或者中循环冲突。