硬汉嵌入式论坛

 找回密码
 立即注册
查看: 290|回复: 2
收起左侧

[有问必答] while循环无法进行条件判断

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2023-6-1 19:12:54 | 显示全部楼层 |阅读模式
写了一个基于定时器的延时函数,只配置了时基单元,使得每次中断频率为0.1Mhz,定义了两个全局变量,一个计数器timcount,一个是等待时长wait,

debug时发现,程序卡死在了死循环里,while的无法进行判断,包括也试了在while(1)中使用if判断,if语句仍然无法作用。
timecount不断增加,大于wait几百倍,也仍然无法跳出循环。虽然这样的延迟函数可能不好,但还是想知道哪里出现问题导致这个情况,求解答。

延时bug.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2023-6-2 09:39:28 | 显示全部楼层
timcont变量定义前面加__IO, 防止编译器优化,保证每次都从变量源地址读取,看看是否正常。
回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2023-6-2 12:42:31 | 显示全部楼层
对,因为变量是在中断中变化的,需要加上 _IO(volatile) 来告诉编译器。
程序可以正常运行了,谢谢解答!
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 17:05 , Processed in 0.163350 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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