完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以下一段代码是32延时函数里的一段代码,我的问题是:定义了 ticks 变量但是我在初始化里并没有找到这个变量被赋予的相关的值,然而在下面的代码里却用这个变量进行比较 例如: if(tcnt>=ticks)break; 这就让我有点蒙逼了。书上用了一段文字阐述了这个变量的含义: ticks 是延时nus需要等待的SysTick计数次数(也就是延时时间)。可是具体的值在下面的代码里面却并有提到,只是定义了一下这个变量而已???求大神赐教。谢谢!!!!
void delay_us(u32 nus) { u32 ticks; u32 told,tnow,tcnt=0; u32 reload=SysTick->LOAD; //LOAD的值 ticks=nus*fac_us; //需要的节拍数 tcnt=0; delay_osschedlock(); //阻止OS调度,防止打断us延时 told=SysTick->VAL; //刚进入时的计数器值 while(1) { tnow=SysTick->VAL; if(tnow!=told) { if(tnow told=tnow; if(tcnt>=ticks)break; //时间超过/等于要延迟的时间,则退出. } }; delay_osschedunlock(); //恢复OS调度 } |
|
相关推荐
1个回答
|
|
你看一下第4行代码: ticks=nus*fac_us; 这里函数一开始就计算出来了ticks的值,while(1)中tcnt是++的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
542 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
648 浏览 0 评论
751 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1295 浏览 0 评论
1143 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12055 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 13:21 , Processed in 0.615139 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号