发新帖我要提问
12
返回列表
打印
[51单片机]

关于主函数定时刷新问题。

[复制链接]
楼主: 一个小黄人
手机看帖
扫描二维码
随时随地手机跟帖
21
icecut| | 2016-8-16 15:53 | 只看该作者 回帖奖励 |倒序浏览
volatile.....

使用特权

评论回复
22
yzjgod| | 2016-8-16 16:05 | 只看该作者

大神说的对,主函数里的变量一直没变应该。

使用特权

评论回复
23
HARRY007| | 2016-8-16 17:25 | 只看该作者
限制主函数循环的时间可以试着这样
if( basetime < 20 )
    continue;
basetime = 0;

使用特权

评论回复
24
joyme| | 2016-8-16 17:56 | 只看该作者
控制好任务的执行时间,怎么会影响到其他函数?
中断里变化的全局变量建议用volatile修饰,可以减少那种概率很小判断错误

使用特权

评论回复
25
Waming| | 2016-8-16 17:59 | 只看该作者
本帖最后由 Waming 于 2016-8-16 18:01 编辑
一个小黄人 发表于 2016-8-16 11:11
不是降低功耗,我是初学者。我案件扫描原本使用delay()延时的,做到后面我发现这种方法非常不好,功能 ...

如果楼主仅仅是想定时扫描按键,那就没有必要去限制 while(1) 的循环,你可以把BaseTime 放在 按键扫描函数keyscan() 中:

void keyscan(void)
{
    if(BaseTime > 20)
   {
        BaseTime = 0;

        //do something
   }
}
BaseTime 最好定义为 volatile

使用特权

评论回复
26
一个小黄人|  楼主 | 2016-8-16 21:10 | 只看该作者

谢谢,试过之后,确实可以行的通。

使用特权

评论回复
27
一个小黄人|  楼主 | 2016-8-16 21:12 | 只看该作者
joyme 发表于 2016-8-16 17:56
控制好任务的执行时间,怎么会影响到其他函数?
中断里变化的全局变量建议用volatile修饰,可以减少那种概 ...

get了,谢谢。

使用特权

评论回复
28
一个小黄人|  楼主 | 2016-8-16 21:13 | 只看该作者
Waming 发表于 2016-8-16 17:59
如果楼主仅仅是想定时扫描按键,那就没有必要去限制 while(1) 的循环,你可以把BaseTime 放在 按键扫描函 ...

我不仅仅是想定时扫描按键,还需要用到其他模块。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则