stm32---编码器接口(实现测量方向和速度的功能)

图文概述

编码器接口的配置

1. 开启TIM时钟和GPIO配置以及时基单元的配置

宏定义参数

/*选择需要哪个定时器配置*/
#define Timer TIM3

/*选择需要哪个引脚*/
#define Pin1 GPIO_Pin_6
#define Pin2 GPIO_Pin_7

/*选择需要哪个GPIO端口--- GPIOA 或 GPIOB */
#define GPIO GPIOA
	//1.开启APB1外设中的TIM时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
	
	//2.GPIO配置 
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
		
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;  //上拉输入模式
	GPIO_InitStructure.GPIO_Pin = Pin1 | Pin2;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIO, &GPIO_InitStructure);
	

	
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;  //时钟分频选择1分频
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //选择向上计数
	/*
		时基单元里每个关键寄存器的参数(以下3个参数)
		计数器溢出频率 --- CK_CNT_OV = CK_PSC / (PSC + 1) / (ARR + 1)
		!!!!!! 预分频器和计数器都有1个数的偏差,所以这里要再减个1 !!!!!!
		!!!!!! 且PSC和ARR的取值范围在0~65535之间 !!!!!!
	*/
	TIM_TimeBaseInitStructure.TIM_Period = 65536 - 1; //ARR自动重装器的值
	TIM_TimeBaseInitStructure.TIM_Prescaler = 1 - 1; //PSC预分频
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; //重复计数器的值(高级定时器才需要)
	TIM_TimeBaseInit(Timer, &TIM_TimeBaseInitStructure);

对GPIO配置时需要确定对应的TIM定时器以及通道1和通道2的引脚号

上面代码对应以下功能的配置

2. 对编码器接口进行配置

/*
	对编码器接口进行配置
		1. Timer --- 选择对应的TIM定时器
		2. TIM_EncoderMode_TI12 --- 选择TI1和TI2都计数
		3. TIM_ICPolarity_Rising --- 通道1选择上升沿即不反相(下降沿即反相--相当于加个非门)
		3. TIM_ICPolarity_Rising --- 通道2选择上升沿即不反相(下降沿即反相--相当于加个非门)
	*/
	TIM_EncoderInterfaceConfig(Timer, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);

上面代码对应图中的功能进行配置

3. 开启定时器

	/*启动定时器*/
	TIM_Cmd(Timer, ENABLE);

相关推荐

  1. STM32学习实践笔记(2): STM32学习方法

    2023-12-19 00:24:01       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-19 00:24:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-19 00:24:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-19 00:24:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-19 00:24:01       20 阅读

热门阅读

  1. Windows Hypervisor Platform魔改版Unicorn Engine

    2023-12-19 00:24:01       38 阅读
  2. 深度学习epoch、psnr、epoch、step解释

    2023-12-19 00:24:01       35 阅读
  3. Linux命令行基础知识

    2023-12-19 00:24:01       44 阅读