stm32 us延时函数
时间: 2023-08-21 16:05:53 浏览: 140
在STM32系列微控制器中,可以使用以下代码来实现us级别的延时函数:
```c
void Delay_us(uint32_t nus)
{
uint32_t ticks;
uint32_t told, tnow, tcnt = 0;
uint32_t reload = SysTick->LOAD;
ticks = nus * (SystemCoreClock / 1000000);
tcnt = 0;
told = SysTick->VAL;
while (1) {
tnow = SysTick->VAL;
if (tnow != told) {
if (tnow < told)
tcnt += told - tnow;
else
tcnt += reload - tnow + told;
told = tnow;
if (tcnt >= ticks)
break;
}
}
}
```
该函数基于系统滴答定时器(SysTick)实现。首先计算出需要延时的系统滴答定时器的滴答次数,然后在while循环中不断读取SysTick->VAL寄存器的值,直到延时时间到达。需要注意的是,该函数可能会受到其他中断的干扰,因此在实际使用中需要进行一定的优化和调试。
相关问题
STM32 HAL 延时函数
STM32 HAL是STMicroelectronics提供的一套针对STM32系列微控制器的硬件抽象层(Hardware Abstraction Layer)库。它提供了一系列的API函数,用于简化STM32微控制器的底层驱动和操作。
在STM32 HAL库中,延时函数是用来实现延时操作的函数。延时函数可以用于在程序中添加一定的时间延迟,以满足特定的需求,比如等待外设初始化完成、产生特定的时间间隔等。
在HAL库中,提供了两种常用的延时函数:
1. HAL_Delay(ms):该函数用于实现毫秒级别的延时,参数ms表示延时的毫秒数。
2. HAL_Delay_us(us):该函数用于实现微秒级别的延时,参数us表示延时的微秒数。
这两个函数底层使用了系统滴答定时器(SysTick)来实现延时功能。SysTick定时器是STM32微控制器内置的一个定时器,可以用来生成固定时间间隔的中断。
使用延时函数时,需要注意以下几点:
1. 在使用延时函数之前,需要先初始化SysTick定时器。
2. 延时函数会阻塞当前线程的执行,直到延时时间到达。
3. 延时时间并不是绝对准确的,受到系统时钟频率和其他中断的影响。
stm32f4延迟函数
引用\[1\]和\[2\]提供了两个不同的头文件delay.h,它们都包含了一些延迟函数的声明。这些函数可以用于在STM32F4上进行延迟操作。具体来说,这些函数包括Delay_Init、delay、delay_sec、delay_ms和delay_us。其中,Delay_Init函数用于初始化延迟函数,delay函数用于以查询方式进行延迟,delay_sec函数用于进行秒级延迟,delay_ms函数用于进行毫秒级延迟,delay_us函数用于进行微秒级延迟。引用\[3\]提供了delay_us函数的具体实现,它使用了SysTick定时器来实现延迟。在该函数中,首先将延迟时间加载到SysTick的LOAD寄存器中,然后清空计数器并启动倒数。最后,通过轮询等待时间到达,并在时间到达后关闭计数器和清空计数器。因此,通过使用这些延迟函数,可以在STM32F4上实现不同精度的延迟操作。
#### 引用[.reference_title]
- *1* [stm32f4滴答定时器延时函数工训案例代码剖析](https://blog.csdn.net/lmf666/article/details/126812543)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [STM32F4-正点原子探索者-SYSTEM文件夹下的delay.c文件内延时函数详解](https://blog.csdn.net/m0_62722416/article/details/126181663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]