STM32——滴答定时器
时钟作为芯片的心脏,芯片依靠时钟维持运动的状态 。
stm32的延时函数,依赖滴答定时器,独立的提供延时 。
滴答定时器:
时钟是由HCLK经过8分频来作为小心脏的 。假设HCLK时钟为72MHz,8分频后,滴答定时器频率为9MHz,即一个时钟周期为1/9us 。
在我们使用滴答定时器进行us定时时,需要修改fac_us的值,假设设定HCLK时钟为72MHz,则fac_us应该设定为9,使delay_us()保持1us 。
以下为SysTick定时器us的延时函数 。
//nus为要延时的us数.
void delay_us(u32 nus)
{
u32 temp;
SysTick->LOAD=nus*fac_us; //时间加载
SysTick->VAL=0x00; //清空计数器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16))); //等待时间到达
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
【STM32——滴答定时器】
推荐阅读
- STM32学习笔记之复位后初始化变量非零方法
- STM32系列第25篇--CAN总线
- STM32的printf函数实现方法
- STM32IAP升级-----编写IAP升级遇到的问题总结
- STM32存储器理解
- STM32学习笔记之fatfs文件系统接口函数使用
- 在内存中调试STM32
- STM32F4 独立看门狗IWDG
- 装修最后一关——验收
- STM32中TIM输出比较的三种模式