永发信息网

stm32 怎样延时5秒

答案:2  悬赏:60  手机版
解决时间 2021-11-12 05:11
stm32 怎样延时5秒
最佳答案
void SysTick_Init(uint32_t ticks)
{
SysTick->LOAD = (ticks & SYSTICK_MAXCOUNT) - 1;
NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);
SysTick->VAL = (0x00);
SysTick->CTRL = (0 << SYSTICK_CLKSOURCE) | (1< }
这样配置systick,当函数的初始化为SysTick_Init(9000000)时,中断1次就是1s。中断5次就是5s了。
全部回答
楼主我给你delay_ms 和 delay_us 多谢几个delay_ms()就可以5秒了
#include
static u8 fac_us=0;//us延时倍乘数
static u16 fac_ms=0;//ms延时倍乘数
//初始化延迟函数
//SYSTICK的时钟固定为HCLK时钟的1/8
//SYSCLK:系统时钟
void delay_init(u8 SYSCLK)
{
SysTick->CTRL&=0xfffffffb;//bit2清空,选择外部时钟 HCLK/8
fac_us=SYSCLK/8;
fac_ms=(u16)fac_us*1000;
}
//延时nms
//注意nms的范围
//SysTick->LOAD为24位寄存器,所以,最大延时为:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLK单位为Hz,nms单位为ms
//对72M条件下,nms<=1864
void delay_ms(u16 nms)
{
u32 temp;
SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)
SysTick->VAL =0x00; //清空计数器
SysTick->CTRL=0x01 ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0x00; //清空计数器
}
//延时nus
//nus为要延时的us数.
void delay_us(u32 nus)
{
u32 temp;
SysTick->LOAD=nus*fac_us; //时间加载
SysTick->VAL=0x00; //清空计数器
SysTick->CTRL=0x01 ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0x00; //清空计数器
}追问毫秒到秒可是1000倍的关系.不可能写1000个吧,那么用一个循环函数怎么用?谢谢追答我写的是delay_ms(u16 nms) nms<=1864那么delay_ms(1864)就是1.864秒了 或者你写5个delay_ms(1000)不就是5秒了吗 我给的函数不是死的 你要活用
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
湖北宜昌的消费水平怎么样?要多少才能一个人
为什么当手指触摸到金属片“M”时,三极管“T
杨钰莹歌唱大自然山水美的歌曲有哪些
非法ip地址是什么a202.96.72.14b202.196.72.1
512一(373一212)的简便计算
by,To,是什么意思?
大众不是德国生产的吗?为什么叫上海大众
oppor7充电变得很慢而且没有闪充的画面了
如何看穿透率这个指标?
手指削掉一小块皮肉,怎么能让它快点愈合啊
怎样给龟纹石假山做预算
今年小明6岁,他母亲34岁,再过多少年母亲的年
装修新家用吉维森集成墙板好不好?
卡农音乐培训地址好找么,我有些事要过去,
想昌乐离术近的海边有多少公里?想去海耍耍。
推荐资讯
光隔离器隔离度1db是多少功率
求助17R4 调节音量的时候会产生杂音
带书和画的成语
写投标施组与图为准还是招投标为准
元代杂曲兴盛的社会原因
如何修持真言密法
大学要做毕业设计,
平民怎么快速堆战力和培养英雄,感觉要培养3
tuo四声和mo是个什么词
0.866在数学里代表什么
突然感觉大腿被什么东西扎了一下,几
信访办能解决问题吗再审过期了往下可否求助信
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?