stm32产生微秒延时
时间: 2023-10-13 14:05:10 浏览: 86
STM32 定时器控制微秒延时
在使用STM32进行微秒级延时时,可以通过定时器来实现。首先,在STM32CubeMX中配置一个通用计时器(比如TIM3)来实现微秒级延时。然后,通过编写具体的实现代码来控制定时器产生微秒延时。
具体的实现代码如下:
```
void setState(bool state) {
elapsed = state;
}
bool getState() {
return elapsed;
}
void usDelay(uint32_t time) {
__HAL_TIM_SetCounter(&htim2, time); //设置计数值
setState(false);
HAL_TIM_Base_Start_IT(&htim2); //开启定时器
while (!getState()); //判断计数值是否耗尽
HAL_TIM_Base_Stop_IT(&htim2); //关闭定时器
}
```
在这段代码中,我们使用了一个volatile类型的变量elapsed来判断设置的计数值是否耗尽(向下计数模式)。当计数值耗尽时,在中断中会将elapsed设置为true,从而结束延时。
通过调用usDelay函数,并传入需要延时的微秒数,就可以实现微秒级的延时了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [用 STM32 通用定时器做微秒延时函数(STM32CubeMX版本)](https://blog.csdn.net/qq_33974167/article/details/110413882)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [STM32 定时器控制微秒延时](https://download.csdn.net/download/weixin_38688371/14030825)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文