260|3

38

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于延时函数很奇怪的问题 [复制链接]

    我今天在测试一个程序的时候,利用stm32普通IO口去控制风扇12V供电的开启和关闭,然后利用PWM通过按键去控制风扇的转速。

在测试时,主程序我写了一个代码,12V风扇供电开启30s,再关闭30s,一直循环,中间放置了一个30s的延时函数,按键控制PWM的占空比

测试程序时发现,风扇供电开启和关闭可以实现,但是按键按下去没反应,通过排查,发现按键消抖部分同样调用了延时函数,想着应该是使用的同一延时函数造成的影响,于是屏蔽掉了主函数风扇供电的延时函数,屏蔽后,按键可以正常控制PWM占空比。

    于是我便自己写了一个最普通的延时函数,用在了按键消抖部分,但是验证后结果依然是解决不了问题,觉得很奇怪,还请有知道的指导下,不甚感激。

代码如下:

   

延时程序如下:

   

此帖出自stm32/stm8论坛

最新回复

是的。   详情 回复 发表于 2024-12-11 12:56
点赞 关注
 

回复
举报

3052

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 

你程序整体逻辑有问题,你30s延时的时候查询按键是没有办法响应的,

也就是说你的while里面不能有占用时间太长的函数。

中间放置了一个30s的延时函数--------这么长的时间都在延时函数里空跑是不合适的。你应该用个定时器做。比如100ms或1秒一个中断,然后计数。然后在判断。

 

此帖出自stm32/stm8论坛

点评

谢谢您的指导,我也怀疑是这个问题,这地方我还是有些疑惑,我30s用的延时也是定时器弄的,是不是我必须要将这个延时修改为定时器中断延时才可以?  详情 回复 发表于 2024-12-11 10:15
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
tagetage 发表于 2024-12-10 19:13 你程序整体逻辑有问题,你30s延时的时候查询按键是没有办法响应的, 也就是说你的while里面不能有占用时 ...

谢谢您的指导,我也怀疑是这个问题,这地方我还是有些疑惑,我30s用的延时也是定时器弄的,是不是我必须要将这个延时修改为定时器中断延时才可以?

此帖出自stm32/stm8论坛

点评

是的。  详情 回复 发表于 2024-12-11 12:56
 
 

回复

3052

帖子

0

TA的资源

五彩晶圆(中级)

4
 
Tacking 发表于 2024-12-11 10:15 谢谢您的指导,我也怀疑是这个问题,这地方我还是有些疑惑,我30s用的延时也是定时器弄的,是不是我必须 ...

是的。

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表