标题: stm32单片机中断函数调用main函数中的变量 [打印本页]

作者: 2396711244    时间: 2023-10-21 17:40
标题: stm32单片机中断函数调用main函数中的变量
请问如何在中断函数中使用main函数中的变量。
就是假设我在main函数里定义了一个uint16_t  cnt;然后通过按键产生外部中断时需要在中断函数里利用变量cnt进行if判断,就是if(cnt>10){};
但是编译显示未定义cnt。我查了一下好像是中断函数不能直接使用全局变量。请问有什么解决的办法吗?

作者: Hephaestus    时间: 2023-10-21 17:57
main函数里面的变量也是局部变量,不叫全局变量,虽然至始至终都存在。
作者: 大漠落日    时间: 2023-10-21 18:01
定义成全局变量就可以了
作者: 2396711244    时间: 2023-10-21 18:24
大漠落日 发表于 2023-10-21 18:01
定义成全局变量就可以了

好的好的,谢谢
作者: 2396711244    时间: 2023-10-21 18:24
Hephaestus 发表于 2023-10-21 17:57
main函数里面的变量也是局部变量,不叫全局变量,虽然至始至终都存在。

是的是的,我概念混淆了
作者: 123456ZXC1    时间: 2023-10-22 16:02
volatile试试
作者: Hephaestus    时间: 2023-10-22 18:04
2396711244 发表于 2023-10-21 18:24
是的是的,我概念混淆了

中断和main函数只能通过全局变量交换数据,注意原子操作就行了,其他的不用考虑。32位单片机16位数据就是原子的。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1