下列哪个库函数是利用滴答定时器进行延时

下列哪个库函数是利用滴答定时器进行延时?A

A.HAL_Delay();

B.HAL_GetTick();

C.HAL_RCC_GetSysClockFreq();

D.HAL_Init();

答:

HAL库之HAL_Delay()函数在72M主频,STM32CUBEMX自动生成情况下,默认为延时1ms单位,即HAL_Delay(500)表示500ms延时,这是因为在默认状态下,SysTick()默认设置为1ms中断。

Systick 定时器延时原理:Systick(滴答时钟)是一个24位,向下计数的定时器,当倒计时完成后,定时器可以产生一个中断,所以,当频率一定,计数个数一定时,这个中断就会以一定的时间间隔发生,如果每个中断发送后调用的中断函数中给一个变量累加,这样我们就可以获得一个与时间相关的变量。

HAL_Delay()延时函数的使用:如果你使用STM32CubeMx来生成一个工程,那么使用Systick来延时是非常方便的,你只需要调用HAL库的一个虚函数,它的原型如下:

__weak void HAL_Delay(__IO uint32_t Delay),可以看到,HAL_Delay()是一个虚函数,这表明用户可以在其它的位置重定义,如果这样,新的函数将会取代它,编译 过程中也不会出现重定义的错误。该函数只有一个32位的参数,明显的,这个形参指定了延时的时间,它的单位是毫秒(ms)。

HAL_RCC_GetSysClockFreq(),函数原型uint32_t HAL_RCC_GetSysClockFreq (void ),返回系统时钟(SYSCLK)频率。

注意:

该函数计算系统频率并非芯片的真实系统频率。它是根据预定义值以及所选的时钟源:
若系统时钟源为HSI,函数返回值是基于HSI_VALUE(),该常数预定义在stm32f4xx_hal_conf.h文件,默认值为16MHz,但是真实参数会随着电压和温度变化。
若系统时钟源为HSE,函数返回值是基于HSE_VALUE(),该常数预定义在stm32f4xx_hal_conf.h文件,默认25MHz,用户必须保证该值与实际使用晶振频率一致,否则该函数将计算出错。
若系统时钟源为PLL,函数返回值是基于HSE_VALUE(**)或者HSI_VALUE(*)和PLL配置参数。
当HSE晶体频率不是整数值时,该函数返回值不正确。
该函数可以用于计算外设通信的脉宽或者计算其他的参数。
每当系统时钟改变时,则需要重新调用该函数更新系统时钟值。否则,基于该函数配置将会出错。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碳水小王子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值