STM32F429基于HAL库实现通用定时器3的编码器接口(Encoder Mode)模式

原文链接:https://www.itdoy.com/index.php/post/15.html
编码器型号:62SY22D11-3(品牌:HUAVEI)
ARM IC:STM32F429IGT6

一、编码器建议电路图

在这里插入图片描述

需要注意的是,编码器的AB两个接口需要2.2K的上拉电阻。

二、定时器3的初始化函数

TIM_HandleTypeDef hTimEncoder;

void eNcoderInit(void)
{
	TIM_Encoder_InitTypeDef hEncoder;
	TIM_MasterConfigTypeDef sMasterConfig;
	
	hTimEncoder.Instance = TIM3;
	hTimEncoder.Init.Prescaler = 0;
	hTimEncoder.Init.CounterMode = TIM_COUNTERMODE_UP;
	hTimEncoder.Init.Period = 0xFFFF;
	hTimEncoder.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
	
	hEncoder.EncoderMode = TIM_ENCODERMODE_TI12;
	hEncoder.IC1Polarity = TIM_ICPOLARITY_RISING;
	hEncoder.IC1Selection = TIM_ICSELECTION_DIRECTTI;
	hEncoder.IC1Prescaler = TIM_ICPSC_DIV1;
	hEncoder.IC1Filter = 0;
	hEncoder.IC2Polarity = TIM_ICPOLARITY_RISING;
	hEncoder.IC2Selection = TIM_ICSELECTION_DIRECTTI;
	hEncoder.IC2Prescaler = TIM_ICPSC_DIV1;
	hEncoder.IC2Filter = 0;
	
	HAL_TIM_Encoder_Init(&hTimEncoder,&hEncoder);
	
	sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
        sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
        HAL_TIMEx_MasterConfigSynchronization(&hTimEncoder, &sMasterConfig);
	
	HAL_TIM_Encoder_Start(&hTimEncoder,TIM_CHANNEL_ALL);
}

void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim)
{
	if(htim->Instance==TIM3)
	{
		GPIO_InitTypeDef GPIO_Initure;
		__HAL_RCC_GPIOA_CLK_ENABLE();//使能TIM3时钟
		__HAL_RCC_TIM3_CLK_ENABLE();//开启GPIOA时钟

		GPIO_Initure.Pin=GPIO_PIN_6|GPIO_PIN_7;
		GPIO_Initure.Mode=GPIO_MODE_AF_OD;     //输入
		GPIO_Initure.Pull=GPIO_NOPULL;          //无上下拉
		GPIO_Initure.Alternate=GPIO_AF2_TIM3;
		HAL_GPIO_Init(GPIOA,&GPIO_Initure);
	}

}
三、主函数中读取数据

if(__HAL_TIM_DIRECTION_STATUS(&hTimEncoder)==0)i=i+__HAL_TIM_GetCounter(&hTimEncoder);
else if(__HAL_TIM_GetCounter(&hTimEncoder)!=0)i=i-(0xFFFF-__HAL_TIM_GetCounter(&hTimEncoder)+1);
printf("%d\n",i);
__HAL_TIM_SetCounter(&hTimEncoder,0);
vTaskDelay(100);
对于STM32F407HAL库编码器模式配置,你可以按照以下步骤进行设置: 步骤1:选择外设 使用STM32CubeMX软件打开你的工程,并选择你想要使用的定时器外设。编码器通常与定时器外设相关联,所以需要先选择相应的定时器。 步骤2:配置GPIO引脚 为了连接编码器,你需要配置两个GPIO引脚作为编码器的信号线。这些引脚应该被配置为输入模式,并启用内部上拉或下拉电阻。 步骤3:配置定时器定时器设置中,你需要选择编码器模式。这可以通过在STM32CubeMX软件中的定时器配置页面上进行选择,通常有以下几个选项: - 编码器模式1(Encoder Mode 1):使用TI1和TI2输入来计数。 - 编码器模式2(Encoder Mode 2):使用TI2和TI1输入来计数。 - 编码器模式3(Encoder Mode 3):使用TI1和TI2输入来计数,并且允许计数方向反转。 步骤4:生成代码 完成上述配置后,点击STM32CubeMX软件的“生成代码”按钮,它将为你生成HAL库的初始化代码。 步骤5:编写应用程序 在生成的代码中,你可以找到关于编码器的初始化和使用的示例代码。根据你的需求,你可以使用这些示例代码或者修改它们来适应你的应用程序。 以上是配置STM32F407HAL库编码器模式的基本步骤。请注意,具体的配置细节可能因你的应用和硬件环境而有所不同,所以请根据你的具体需求进行适当的调整。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值