硬汉嵌入式论坛

 找回密码
 立即注册
查看: 232|回复: 1
收起左侧

[技术讨论] 求助,LL_TIM_GetCounter(TIM2)语句会随机性出现读多一个数的问题,是什么原因?怎么解决呢?

[复制链接]

3

主题

2

回帖

11

积分

新手上路

积分
11
发表于 2025-7-7 11:02:06 | 显示全部楼层 |阅读模式
初始化函数:


static void MX_TIM2_Init(void)
{

  /* USER CODE BEGIN TIM2_Init 0 */
  //TIM_HandleTypeDef htim2 ={0};
  /* USER CODE END TIM2_Init 0 */

  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  TIM_MasterConfigTypeDef sMasterConfig = {0};

  htim2.Instance = TIM2;
  /* USER CODE BEGIN TIM2_Init 1 */
  HAL_TIM_Base_DeInit(&htim2);
  /* USER CODE END TIM2_Init 1 */
  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 0;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 65535;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  {
     while(1);
  }
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_ETRMODE2;
  sClockSourceConfig.ClockPolarity = TIM_CLOCKPOLARITY_NONINVERTED;
  sClockSourceConfig.ClockPrescaler = TIM_CLOCKPRESCALER_DIV1;
  sClockSourceConfig.ClockFilter = 15;
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  {
      while(1);
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  {
     while(1);
  }
  /* USER CODE BEGIN TIM2_Init 2 */
  HAL_TIM_Base_Start(&htim2);
  /* USER CODE END TIM2_Init 2 */

}
读取前进行关闭中断:


       __disable_interrupt();
      g_usLastFreCNTVal =  LL_TIM_GetCounter(TIM2);  /* 脉冲采集 */
     __enable_interrupt();

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2025-7-8 09:15:13 | 显示全部楼层
不需要开关中断,把开关中断去掉。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 18:08 , Processed in 0.037646 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表