首页 > 代码库 > stm32中的延时函数
stm32中的延时函数
//粗延时函数,微秒
- void delay_nus(u16 time)
- {
- u16 i=0;
- while(time--)
- {
- i=10; //自己定义
- while(i--) ;
- }
- }
//毫秒级的延时
- void delay_nms(u16 time)
- {
- u16 i=0;
- while(time--)
- {
- i=12000; //自己定义
- while(i--) ;
- }
- }
运用SysTick来实现准确定时:
- SysTick_Config(SystemCoreClock / 10) 函数的形参就是systick重装定时器的值。
- systick计数频率为每秒72000000次,所以7200000次就是1/10秒,也就是100ms。
- SysTick是1个24bit递减计数器,通过对SysTick控制与状态寄存器的设置,可选择HCLK时钟(72M)或HCLK的8分频作为SysTick的时钟源。//V3.5默认为HCLK时钟
- SysTick的重装寄存器决定了定时器频率。
- 若SysTick的时钟源是72M, SystemFrequency = 72000000Hz
- 所以 SysTick_Config(SystemCoreClock / 1000); 就是1ms时基。
SysTick的初始化设置:
void Init_SysTick(void)
{
if(SysTick_Config(SystemCoreClock / 1000)) //注意:3.5库中 SystemFrequency 被 SystemCoreClock 取代。
while(1);
}
延时函数:
__IO uint32_t TimingDelay;
void delay_ms(__IO uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}
中断函数:
extern __IO uint32_t TimingDelay;
void SysTick_Handler(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
delay_ms(1000);
stm32中的延时函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。