STM32CubeIDE如何实现HAL库 微秒Us延迟(HAL_Us_Delay)

在STM32CubeIDE中,此软件使用的是HAL库,而且对于时间延迟只有HAL_Delay()函数,也就是毫秒延迟函数。

下文将讲述如何在STM32CubeIDE中获取微秒延迟函数(HAL_Delay_us)。

首先选择一个定时器,要注意选择的是哪一个定时器。因为不同的定时器可能时钟频率不同。由于选择的时钟频率不同,后续程序中的数值要对应进行相应的修改。

本次作者使用的是TIM4定时器,使用的是STM32F437芯片,打开芯片数据手册可观察到TIM4挂载在APB1总线上。

 文章来源地址https://uudwc.com/A/ABw4V

 在图形化配置界面,打开Clock Configuration 可以观察到TIM5挂载的APB1时钟频率是多少。此时作者配置的是90MHz,如下图所示。

 在TIM5配置中选中Internal Clock,然后将预分频系数设置成90-1=89(因为此处是从0开始计数)

Counter Period 改成1

点击生成代码

在tim.c中添加如下代码

void HAL_Delay_us(uint16_t us)
{
    uint16_t delay = 0xffff-us-5;		//从此数进行计数,如计数了65535次则刚好1us	
    										
    HAL_TIM_Base_Start(&htim5);  	    //开启计数器
    __HAL_TIM_SetCounter(&htim5,delay);	//设置计数器
    while(delay<0xffff-5)
    {
        delay = __HAL_TIM_GetCounter(&htim5); 获取当前计数值
    }
    HAL_TIM_Base_Stop(&htim5);
}

在tim.h中添加如下代码

void HAL_Delay_us(uint16_t us);

至此得到了微秒延迟的函数,只需要调用HAL_Delay_us()函数即可

测试:

使用引脚高低电平翻转+延迟函数,如设置正确的话将实现方波信号。

(测试前需要对引脚进行使能)

测试代码如下:

在main.c的While循环中添加如下代码:

//us延时测试
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_8);
HAL_Delay_us(1000);

打开示波器,接上设置的相应引脚,烧录程序,可得如下图示波形:

 

原文地址:https://blog.csdn.net/WilliamNUAA/article/details/126964033

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年08月08日 04:03
【广州华锐视点】葡萄种植VR虚拟仿真实训平台
下一篇 2023年08月08日 04:05