打印
[应用相关]

STM32 HAL/LL混合库查询方式实现精确微秒延时

[复制链接]
522|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
慢动作|  楼主 | 2021-11-30 23:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
HAL与LL库查询方式实现精确微秒或毫秒延时,可以用于IO口模拟I2C、SPI通信等。通过HAL实现初始化5us初始化,后面在延时函数中可以再设置延时值。

使用特权

评论回复
沙发
慢动作|  楼主 | 2021-11-30 23:14 | 只看该作者
1. 定时器实现1us延时

使用特权

评论回复
板凳
慢动作|  楼主 | 2021-11-30 23:14 | 只看该作者
中断Enable不打钩

使用特权

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

使用特权

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

使用特权

评论回复
6
慢动作|  楼主 | 2021-11-30 23:16 | 只看该作者
复制必要库文件,.c/.h单独一个文件,设置好。

使用特权

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

使用特权

评论回复
8
慢动作|  楼主 | 2021-11-30 23:32 | 只看该作者
本帖最后由 慢动作 于 2021-11-30 23:34 编辑

生成代码如下:
/* TIM3 init function */
void MX_TIM3_Init(void)
{
  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  TIM_MasterConfigTypeDef sMasterConfig = {0};

  htim3.Instance = TIM3;
  htim3.Init.Prescaler = 72-1;
  htim3.Init.CounterMode = TIM_COUNTERMODE_DOWN;
  htim3.Init.Period = 5-1;
  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
  {
    Error_Handler();
  }
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
}

使用特权

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

本版积分规则

63

主题

695

帖子

0

粉丝