STM32 HAL库自己写个延时函数,不用HAL_Delay()
时间: 2024-06-19 13:02:21 浏览: 11
可以使用系统滴答定时器(SysTick)实现延时函数。SysTick是一个24位向下计数器,每次减1,当减到0时会产生一个中断,通过中断服务函数可以实现延时操作。以下是一个使用SysTick实现的延时函数:
```
void delay_ms(uint32_t nms)
{
uint32_t ticks = nms * (SystemCoreClock / 1000 / 8);
SysTick->LOAD = ticks;
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk;
while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));
}
```
这个函数的参数是需要延时的毫秒数。在函数内部,首先计算出需要的滴答定时器的计数值,然后将其加载到LOAD寄存器中。接着将VAL寄存器清零,使滴答定时器立即开始倒计时。最后,使能滴答定时器,并等待滴答定时器计数完成。
相关问题
stm32hal库中的延时函数
STM32HAL库中提供了多个延时函数,其中最常用的是HAL_Delay()函数。这个函数利用了SysTick定时器来实现延时,可以实现毫秒级别的延时。除此之外,HAL库还提供了其他延时函数,如HAL_Delay_US()函数,可以实现微秒级别的延时。此外,HAL库还提供了一些配置函数,如HAL_SYSTICK_Config()函数,可以配置每隔1ms中断一次。如果需要更加精确的延时,可以自定义延时函数,通过调用HAL_GetTick()函数获取当前时间,并计算出延时时间。
STM32 HAL库延时函数
STM32 HAL库提供了许多不同的延时函数,其中包括HAL_Delay()和HAL_Delay_US()函数。这些函数可以用来在程序中添加时间延迟,从而控制程序的执行时间和顺序。HAL_Delay()函数的参数是毫秒数,可以延迟1毫秒到几千毫秒的时间。HAL_Delay_US()函数的参数是微秒数,可以延迟1微秒到几百万微秒的时间。这些延时函数都是基于系统时钟的,因此在使用之前需要先配置好系统时钟。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)