野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10852|回复: 3

中断函数对全局变量赋值,主函数打印该变量时发现依旧为初始值

[复制链接]
发表于 2018-1-16 10:29:26 | 显示全部楼层 |阅读模式
串口助手给单片机发了20.7这个数值,中断函数中打印出的convalue值是20.7,再按复位键打印main中的convalue值显示是0.0
无标题.png
无标题1.png
回复

使用道具 举报

发表于 2018-1-16 10:44:39 | 显示全部楼层
加个 volatile 关键字,防止被优化,或者在中断里面设置个断点,看看中断服务函数有没有执行成功。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-16 11:01:16 | 显示全部楼层
fire 发表于 2018-1-16 10:44
加个 volatile 关键字,防止被优化,或者在中断里面设置个断点,看看中断服务函数有没有执行成功。

火哥,中断函数前我声明了extern volatile float convalue。然后用助手给板子发了20.7,助手接收框显示了20.7,应该说明进入中断函数了。接着按复位键,助手接收框显示的就是0.0了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-16 16:57:07 | 显示全部楼层
额,发现原因了,好像是按了复位键数据就重新初始化了。把这个全局变量放在循环里发,不要按复位发就行
无标题.png
无标题1.png
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 09:25 , Processed in 0.063599 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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