当前位置:首页 > 单片机 > 单片机
[导读]时钟作为芯片的心脏,芯片依靠时钟维持运动的状态。stm32的延时函数,依赖滴答定时器,独立的提供延时。滴答定时器:时钟是由HCLK经过8分频来作为小心脏的。假设HCLK时钟为72MHz,8分频后,滴答定时器频率为9MHz,即

时钟作为芯片的心脏,芯片依靠时钟维持运动的状态。

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; //清空计数器

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭