打印
[应用相关]

STM32 HAL库实现US微秒延时函数

[复制链接]
712|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
慢动作|  楼主 | 2021-11-30 21:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
STM32之CubeL4定时器控制实现微秒延时
现代的ST主推HAL库,但是这么强大的HAL库,居然没有一个微秒级别的延时函数????

在HAL库中有毫秒级延时HAL_Delay(),原理是使用Systick作为延时计数器来实现的。如果需要增加精确的微秒级别延时,一般都是直接更改Systick配置参数,但HAL固件很多的地方都使用了HAL_Delay()函数,因此不建议修改系统自动配置的Systick参数。

使用特权

评论回复
沙发
慢动作|  楼主 | 2021-11-30 21:07 | 只看该作者
一、定时器微秒实现原理
CK_INT 80M时钟输入定时器,80分频后1Mhz = 1us,也就是计数器CNT每加一次就是1us。

使用特权

评论回复
评论
慢动作 2021-11-30 21:08 回复TA
STM32L4x1 参考手册P780 
板凳
慢动作|  楼主 | 2021-11-30 21:09 | 只看该作者

我是用到是TIM2,首先需要知道TIM2的时钟,查看手册得知TIM2在APB1总线上

使用特权

评论回复
地板
慢动作|  楼主 | 2021-11-30 21:24 | 只看该作者
定时器计数配置
首先配置系统时钟

使用特权

评论回复
5
慢动作|  楼主 | 2021-11-30 21:36 | 只看该作者
接下来配置定时器

使用特权

评论回复
6
慢动作|  楼主 | 2021-11-30 21:37 | 只看该作者
编写思路

设置CNT的值为0 --> (开始计数) --> 比较CNT值 --> (到达CNT值) --> 停止计数

使用特权

评论回复
7
慢动作|  楼主 | 2021-11-30 21:39 | 只看该作者
具体代码实现
// Core\Src\delay.c
void HAL_Delay_US(uint32_t Delay_us)
{

                __HAL_TIM_SetCounter(&htim2, 0);

                __HAL_TIM_ENABLE(&htim2);

                while(__HAL_TIM_GetCounter(&htim2) < Delay_us);
                /* Disable the Peripheral */
                __HAL_TIM_DISABLE(&htim2);


}

使用特权

评论回复
8
慢动作|  楼主 | 2021-11-30 22:38 | 只看该作者
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
   
                GPIOA->BSRR = GPIO_PIN_2;        // PA2 = 1        
                HAL_Delay_US(10);
                GPIOA->BSRR = (uint32_t)GPIO_PIN_2<< 16U; // PA2 = 0        
                HAL_Delay_US(10);
  
  }
  /* USER CODE END 3 */
}

使用特权

评论回复
9
慢动作|  楼主 | 2021-11-30 22:39 | 只看该作者
2us

使用特权

评论回复
10
慢动作|  楼主 | 2021-11-30 22:41 | 只看该作者
5us

使用特权

评论回复
11
慢动作|  楼主 | 2021-11-30 22:41 | 只看该作者
10us

使用特权

评论回复
12
慢动作|  楼主 | 2021-11-30 23:09 | 只看该作者
10us

使用特权

评论回复
13
慢动作|  楼主 | 2021-11-30 23:09 | 只看该作者
50us

使用特权

评论回复
14
慢动作|  楼主 | 2021-11-30 23:10 | 只看该作者
500us

使用特权

评论回复
15
慢动作|  楼主 | 2021-11-30 23:10 | 只看该作者

使用特权

评论回复
16
caoenq| | 2021-12-1 08:54 | 只看该作者
很好很强大

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

695

帖子

0

粉丝