无意中看到你之前回答的中断中修改全局变量的代码,在主函数中必须关闭中断再操作该变量
http://www.nuvoton-mcu.com/nufaq/?q-334.html
就是说对ARM cortex的任何芯片,不管是8位、16位还是32位变量,都要在主函数中先关闭中断再操作变量?
但我有用到的M451 Series, NUC123SeriesBSP好多例程都是中断会改变变量值,而主循环一直读该变量进行判断操作,都是没关闭中断的,如这个例程
M451 Series BSP CMSIS V3.01.001\SampleCode\StdDriver\SPI_MasterMode
还是说主循环如果只是对变量进行大小之类的逻辑判断,不是重新赋值给该变量,就不需要关中断?
2022/09/06 14:45
1>,如果中断内外都对一个变量写,中断外的写就要关中断。
2>,如果中断内写,中断外只读;或中断外写,中断内只读,可以不关中断,
3>,如果一变量只在一个中断里写个标志(不与其它中断共用),中断外检测并清标志,代码较少时,只要不会在执行中断代码时,又发生中断标志置位,就不会丢标志。否则仍有可能丢一次标志。
精简指令单片机,无论8位,16位,还是32位都有上述问题。非精简指令单片机,一条指令完成内存中的数据改写,就不存在上述问题,