完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 变向高手 于 2015-10-17 22:14 编辑
if (u16IRrepeatcnt %2 == 0) { HAL_Delay(100); u8IR_Bluzzer_State = 1; Bluzzer_Counter = 1000; vcalc(20,15) } u8IR_Bluzzer_State = 1;Bluzzer_Counter = 1000;是蜂鸣器响50ms的动作 ;vcalc(20,15)是调光动作。 u16IRrepeatcnt 一直在计数,每接收两个u16IRrepeatcnt后延时100ms蜂鸣器响一声并作出调光动作。 为什么在if语句中调用Delay()函数后,后面的语句就不执行了? 更多 0 |
|
相关推荐
14个回答
|
|
|
|
|
|
你用的不是STM32么?它是有自己的延时函数的,你可以根据自己的要求调用他的函数啊,或者简单的对它的延时函数进行修改啊!!!
|
|
|
|
定时器实现单位时间的中断(比如1ms),在中断处理函数里面实现1ms的累加,作为系统时钟,通过系统时钟的时间点来延时。
|
|
|
|
这里有延时函数可以看下
|
|
|
|
能帮我看看这个程序哪里出问题了吗 if (u16IRrepeatcnt %2 == 0) { HAL_Delay(100); u8IR_Bluzzer_State = 1; Bluzzer_Counter = 1000; vcalc(20,15) } u8IR_Bluzzer_State = 1;Bluzzer_Counter = 1000;是蜂鸣器响50ms的动作 ;vcalc(20,15)是调光动作。 u16IRrepeatcnt 一直在计数,每接收两个u16IRrepeatcnt后延时100ms蜂鸣器响一声并作出调光动作。 为什么在if语句中调用Delay()函数后,后面的语句就不执行了? |
|
|
|
能帮我看看这个程序哪里出问题了吗 if (u16IRrepeatcnt %2 == 0) { HAL_Delay(100); u8IR_Bluzzer_State = 1; Bluzzer_Counter = 1000; vcalc(20,15) } u8IR_Bluzzer_State = 1;Bluzzer_Counter = 1000;是蜂鸣器响50ms的动作 ;vcalc(20,15)是调光动作。 u16IRrepeatcnt 一直在计数,每接收两个u16IRrepeatcnt后延时100ms蜂鸣器响一声并作出调光动作。 为什么在if语句中调用Delay()函数后,后面的语句就不执行了? |
|
|
|
|
|
|
|
可以DEBUG一下,看程序到底死在哪里
|
|
|
|
你的这段代码是不是写在中断里的,看看优先级的关系对不对,有可能是所在的中断优先级较高,delay才会不响应。或着查看下delay有没有问题, |
|
|
|
1158189985 发表于 2015-10-15 18:56 我的delay延时取10ms时就没问题,延时时间长一点的话程序就死在if语句里,我的u16IRrepeatcnt是根据相邻两个下降沿的时间来判断的,遥控器长按时,会在一个正常码后面跟许多个连续的repeatcode,每个repeatcode的周期是108ms,我们是根据repeatcode的码头的相邻两个下降沿等于11.25ms就认为是一个repeatcode,这时u16IRrepeatcnt计数器就加1。首先一个正常码后延时100ms响一声,然后每接收到两个repeatcode时,延时100ms蜂鸣器响一声并做出调光动作。delay是没问题的,我是通过对u16IRrepeatcnt计数器是偶数来认为是每隔两个repeatcode做动作的 请问问题出在哪里呢? |
|
|
|
delay取10ms时就没问题,取100ms就死在if语句的那个地方,怎么处理呢 |
|
|
|
如何处理呢 现在的问题是我要每接收到两个repeatcode时延时100ms蜂鸣器响一声。我如果去掉延时的话就没问题 |
|
|
|
变向高手 发表于 2015-10-15 20:21 这段程序是写在中断里吧!!!如果是写在中断里的话有可能是中断的时间里,你的程序没有执行完,然后一直卡在这里,你试试把这段代码所在中断的时间延长看看还有没有这个现象。 |
|
|
|
1158189985 发表于 2015-10-16 00:43 然后用短的延时就能够在中断的时间内正常执行,用长的延时就超过了中断的时间,导致不正常运行。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
462 浏览 0 评论
2318 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2121 浏览 3 评论
4752 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2264 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 05:28 , Processed in 0.842854 second(s), Total 97, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号