找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 508|回复: 6
打印 上一主题 下一主题
收起左侧

stm32单片机中断函数调用main函数中的变量

[复制链接]
跳转到指定楼层
楼主
ID:1069599 发表于 2023-10-21 17:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问如何在中断函数中使用main函数中的变量。
就是假设我在main函数里定义了一个uint16_t  cnt;然后通过按键产生外部中断时需要在中断函数里利用变量cnt进行if判断,就是if(cnt>10){};
但是编译显示未定义cnt。我查了一下好像是中断函数不能直接使用全局变量。请问有什么解决的办法吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2023-10-21 17:57 | 只看该作者
main函数里面的变量也是局部变量,不叫全局变量,虽然至始至终都存在。
回复

使用道具 举报

板凳
ID:195496 发表于 2023-10-21 18:01 | 只看该作者
定义成全局变量就可以了
回复

使用道具 举报

地板
ID:1069599 发表于 2023-10-21 18:24 | 只看该作者
大漠落日 发表于 2023-10-21 18:01
定义成全局变量就可以了

好的好的,谢谢
回复

使用道具 举报

5#
ID:1069599 发表于 2023-10-21 18:24 | 只看该作者
Hephaestus 发表于 2023-10-21 17:57
main函数里面的变量也是局部变量,不叫全局变量,虽然至始至终都存在。

是的是的,我概念混淆了
回复

使用道具 举报

6#
ID:526543 发表于 2023-10-22 16:02 | 只看该作者
volatile试试
回复

使用道具 举报

7#
ID:883242 发表于 2023-10-22 18:04 | 只看该作者
2396711244 发表于 2023-10-21 18:24
是的是的,我概念混淆了

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表