完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
while(1)
{ GPIO_SetBits(GPIOG, GPIO_Pin_1); //延时1ms的程序 for(count =0 ; count < 6; count++) { for(i = 0; i < 1000; i++); } //SET TO LOW GPIO_ResetBits(GPIOG, GPIO_Pin_1); //延时1ms的程序 for(count =0 ; count < 6; count++) { for(i = 0; i < 1000; i++); } } while(1) { GPIO_SetBits(GPIOG, GPIO_Pin_1); //延时1ms的程序 for(count =0 ; count < 1; count++) { for(i = 0; i < 6000; i++); } GPIO_ResetBits(GPIOG, GPIO_Pin_1); //延时1ms的程序 for(count =0 ; count <1; count++) { for(i = 0; i < 6000; i++); } } 只是修改了一下参数,G1脚高电平持续的时间,变化很大,这是什么原因呢? |
|
相关推荐
13个回答
|
|
|
这是肯定的,因为指令周期不同
|
|
|
|
|
|
for(count =0 ; count < ms; count++) { for(i = 0; i < 1000; i++); } 外面的for和里面的for周期各是多少呢? |
|
|
|
|
|
一个for循环执行的时间差不多是4个机器周期,如果循环次数大可以忽略for的次数,小的话就要考虑了。如果想精确用定时器。
|
|
|
|
|
|
这个你去查编程手册了,我也不清楚这个 |
|
|
|
|
|
看一下反汇编就知道总共延时多少了,
|
|
|
|
|
|
软件延时是粗略延迟,不准的,建议是用定时器或系统滴答 |
|
|
|
|
|
建议使用systemtick,你这种软件延时可以用在对延时时间不是很精确的场合,而且会受程序运行的影响,也就是说相同的延时程序在不同的运行情况下可能会有不同的延时时间。
|
|
|
|
|
|
定时器之类的硬件时钟更准确些
|
|
|
|
|
|
看看主频。。。。
|
|
|
|
|
|
应该看一下编译的代码,即使只有一点差异,6000次积累下来差异就大了
|
|
|
|
|
|
示波器高大上啊,我们这还是淘汰品
|
|
|
|
|
|
软件延时本身就不太精确时用的
|
|
|
|
|
|
不错的经验,感谢分享,学习中
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
651 浏览 0 评论
712 浏览 0 评论
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
4375 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
3176 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2629 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-9 22:06 , Processed in 0.987753 second(s), Total 94, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3641