永发信息网

请问大神,stm32,Systick延时函数怎么写,看看我的哪里错了???

答案:1  悬赏:40  手机版
解决时间 2021-11-28 14:18
  • 提问者网友:树红树绿
  • 2021-11-27 13:55
请问大神,stm32,Systick延时函数怎么写,看看我的哪里错了???
最佳答案
  • 五星知识达人网友:琴狂剑也妄
  • 2021-11-27 15:06
Systick的计数器是24位的追问执行到delay函数,就是这里,就不会往下走了,应该是while不对吧,我弄一天了,能不能帮我改一下,感激不尽,我不给他很大的数字,应该不会超出数限追答不是超不超的问题

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; //清空计数器
}
或者
void Delay_us(u32 Nus)
{
SysTick->LOAD=Nus*9; //时间加载 72M主频
SysTick->CTRL|=0x01; //开始倒数
while(!(SysTick->CTRL&(1<<16))); //等待时间到达
SysTick->CTRL=0x00000000; //关闭计数器
SysTick->VAL=0x00000000; //清空计数器
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯