硬汉嵌入式论坛

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

[TIMER] 请教大佬们,怎么用一个LPTIM配置成编码器模式啊

[复制链接]

2

主题

8

回帖

14

积分

新手上路

积分
14
发表于 2021-6-3 15:24:30 | 显示全部楼层 |阅读模式
LPTIM的工作方式和一般的定时器好像不太一样,不知道怎么配置成编码器模式
求详细的配置代码和说明
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2021-6-3 16:15:23 | 显示全部楼层
手动艾特硬汉@eric2013
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2021-6-3 17:34:30 | 显示全部楼层
STM32CubeH7软件包如下路径:
QQ截图20210603173418.png


回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2021-6-3 18:44:37 | 显示全部楼层
eric2013 发表于 2021-6-3 17:34
STM32CubeH7软件包如下路径:

多谢提醒,找到了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2021-6-4 07:24:25 | 显示全部楼层
JaysonZ 发表于 2021-6-3 18:44
多谢提醒,找到了

好的,后面还有什么问题再交流。
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2021-6-5 15:37:58 | 显示全部楼层
eric2013 发表于 2021-6-4 07:24
好的,后面还有什么问题再交流。

我之前一直都是用TIM3或者TIM4的编码器模式的,也通过函数处理16位溢出翻转的问题,但是我尝试了一下换成了LPTIM1的编码器模式替代以前的,照着例程去配置的,可是读数似乎比原来小
-------------------------------------------------------------------------------------------------------------
static void MX_LPTIM1_Init(void)
{

  /* USER CODE BEGIN LPTIM1_Init 0 */
        /* reset handle state */
        __HAL_LPTIM_RESET_HANDLE_STATE(&hlptim1);
  /* USER CODE END LPTIM1_Init 0 */

  /* USER CODE BEGIN LPTIM1_Init 1 */
  hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_INTERNAL;
  hlptim1.Init.Trigger.ActiveEdge = LPTIM_ACTIVEEDGE_RISING;
  hlptim1.Init.Trigger.SampleTime = LPTIM_TRIGSAMPLETIME_DIRECTTRANSITION;
  /* USER CODE END LPTIM1_Init 1 */
  hlptim1.Instance = LPTIM1;
  hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_APBCLOCK_LPOSC;
  hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;
  hlptim1.Init.UltraLowPowerClock.Polarity = LPTIM_CLOCKPOLARITY_RISING;
  hlptim1.Init.UltraLowPowerClock.SampleTime = LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION;
  hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;
  hlptim1.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH;
  hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;
  hlptim1.Init.Input1Source = LPTIM_INPUT1SOURCE_GPIO;
  hlptim1.Init.Input2Source = LPTIM_INPUT2SOURCE_GPIO;
  if (HAL_LPTIM_Init(&hlptim1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN LPTIM1_Init 2 */
        /* Start LPTIM Encoder mode */
        if(HAL_OK != HAL_LPTIM_Encoder_Start(&hlptim1, 0xFFFF))
  {
    Error_Handler();
  }
  /* USER CODE END LPTIM1_Init 2 */

}
----------------------------------------------------------------------------------------------------------------
static void MX_TIM3_Init(void)
{

  /* USER CODE BEGIN TIM3_Init 0 */

  /* USER CODE END TIM3_Init 0 */

  TIM_Encoder_InitTypeDef sConfig = {0};
  TIM_MasterConfigTypeDef sMasterConfig = {0};

  /* USER CODE BEGIN TIM3_Init 1 */

  /* USER CODE END TIM3_Init 1 */
  htim3.Instance = TIM3;
  htim3.Init.Prescaler = 0;
  htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim3.Init.Period = 0xffff;
  htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  sConfig.EncoderMode = TIM_ENCODERMODE_TI12;
  sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;
  sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;
  sConfig.IC1Prescaler = TIM_ICPSC_DIV1;
  sConfig.IC1Filter = 0;
  sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;
  sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
  sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
  sConfig.IC2Filter = 0;
  if (HAL_TIM_Encoder_Init(&htim3, &sConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN TIM3_Init 2 */

  /* USER CODE END TIM3_Init 2 */

}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107028
QQ
发表于 2021-6-6 08:34:03 | 显示全部楼层
JaysonZ 发表于 2021-6-5 15:37
我之前一直都是用TIM3或者TIM4的编码器模式的,也通过函数处理16位溢出翻转的问题,但是我尝试了一下换成 ...

1、使用LPTIM一点要通过PLL配置选择的时钟源,LPTIM支持LSE,LSI,  APB时钟等。

2、选择ABP时钟,最高支持100MHz。


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 15:37 , Processed in 0.291733 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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