10
70
1311
金牌会员
16位变量在主函数和中断中都可以操作有可能出错问题:
比如定时器中断有一个16位全局变量a在累加,main函数在读取a或给a置零时由于16位变量需要分开两个字节来处理,如果刚好在操作完第一个字节时定时器中断打断了并且改变了a变量,这种情况在某些要求高的项目上会是一个不容易察觉的漏洞,为项目带来隐患。
我想到的解决办法是关闭中断后再读写a,但是频繁开关中断不好。请问STC32位单片机是否可以一次完成16位变量的读写,这样就不会有问题,或者有其他办法可以保证16位变量读写中不会被中断打断?
使用道具 举报 送花
3
1160
1031
等待验证会员
c<br> disableirq(); // 关闭中断<br> a = 0; // 操作变量<br> enableirq(); // 开启中断复制代码
46
1694
2544
76
4833
8343
超级版主
DebugLab
17
446
1173
本版积分规则 发表回复 回帖后跳转到最后一页
|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )
GMT+8, 2025-5-2 13:13 , Processed in 0.143352 second(s), 71 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.