野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8653|回复: 3

关于定时器的一些问题

[复制链接]
发表于 2017-7-31 17:56:05 | 显示全部楼层 |阅读模式
大家好 我想问下火哥这个例程  可能是我C语言学的不太好~
关于这里毫秒定时  例如传入的uint 32  ms =500
那我在定时500ms的时候  通过上面SysTick_Config(72000);实现了1ms的功能
但是下面的循环用i<ms i++难道不还是软件定时吗 感觉和上面设置的1ms好像没关系啊
很疑惑希望大神解答

ms定时程序

ms定时程序

主题推荐

回复

使用道具 举报

发表于 2017-7-31 18:02:09 | 显示全部楼层
SysTick_Config(72000); 这个配置的是 计数器计一个周期的时间是1ms,那下面的for循环就是告诉你这样的1ms的周期你要重复多少次,如果是500次,那定时的时间就是500ms,这个时间是精确的,不是499ms也不是501ms,明白没?     而软件延时是不精确的,只是一个大概的时间。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-31 19:17:23 | 显示全部楼层
fire 发表于 2017-7-31 18:02
SysTick_Config(72000); 这个配置的是 计数器计一个周期的时间是1ms,那下面的for循环就是告诉你这样的1ms ...

火哥 这个意思就是说这个i++中间的判断或者说增加的间隔由原来的软件延时 变为了1ms的间隔吗
回复 支持 反对

使用道具 举报

发表于 2017-8-10 15:43:47 | 显示全部楼层
老哥,你程序可能没理解好
SysTick_Config(72000);这句话是设置系统定时器的定时时间,里面是72000的话就是1ms。你下面括号里for语句,意思是说,我要用这个定时器计数多少次。你定时器设置了1ms,然后ms输入500,说明你使用了500次1ms  也就是定时500ms 这个时间是准确的。你说的软件延时应该是for(i=0;i<ms;i++)
                                                                                       {   for(a=0;a<500;a++)       类似于这个是软件延时。不知道我有没有理解对你要问的。
                                                                                            }     
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-12 00:23 , Processed in 0.032546 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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