金沙网址论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

【求助】如何在while循环内让一个语句每隔10分钟运行一次,其他正常循环

[复制链接]
跳转到指定楼层
楼主
5黑币
代码萌新,最近在看STM32,还没有看完全,但是现在需要用到,所以来求助一下各位:如何在while循环内让一个语句每隔10分钟运行一次,其他正常循环。如图红色区域的语句是需要每十分钟发送一次的。
while(1){
    proRS485();
    proTask();


    p=(u8*)DO_autocalib;
    Send2RSSENCE(p,13);

    return (EXIT_SUCCESS);
}

感谢~~

1562028826(1).jpg (5.27 KB, 下载次数: 0)

1562028826(1).jpg
沙发
笨笨兔 发表于 2019-7-2 10:05 | 只看该作者
打开一个定时器,定时器里面每10分钟就设定一个标志:while里面查标志位,有标志就发送一次即可
板凳
devcang 发表于 2019-7-2 10:05 | 只看该作者
建议使用定时器,加计时变量。

~~~~~~~~~~
地板
lfc315 发表于 2019-7-2 10:34 | 只看该作者
定时器+计数器,计数到需要的时间就进去这个语句执行一次
5#
单片学子 发表于 2019-7-2 11:01 | 只看该作者

加一个计数器,用定时器中断给这个计数器+1。
循环里面判断上次运行到现在计数器增加了多少,如果达到你的10分钟的计数值,就运行程序,同时记录这次运行后的计数器值。
6#
lihaijun7781 发表于 2019-7-2 11:13 | 只看该作者
每次循环,拿现在的时间和你保存的时间比,超过10s, 把当前时间保存,运行你的函数。如果不到10s,忽略,继续跑其他函数。大循环时间长,10s的精度就会差,如果要准确的10s,你要放中断里做了。
7#
lhl139679 发表于 2019-7-2 11:14 | 只看该作者
先定义一个变量T=0, 用定时器,定时到你想要的时间后,将变量T=1,再在while(1){}
8#
lhl139679 发表于 2019-7-2 11:19 | 只看该作者
先定义一个变量T=0,再用定时器,到你想要的时间后,将T=1,关闭定时器,在while(1){if(T==1){红色区域内代码;T=0;开启定时器;}}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|新利 |51Hei金沙网址16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 金沙网址教程网

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