VSCode+CubeMX开发STM32笔记-定时器编码器接口使用
使用VSCode+CubeMx开发STM32,这里介绍使用定时器的编码器接口来使用增量型编码器EC11;
1.建立工程
1.1 创建项目文件
从已有的仓库中创建一个工程:
1 | git clone https://github.com/makerinchina-iot/vscode_stm32cubemx_hello.git encoder |
使用VSCode打开工程后,需要更改如下名字:
- 文件夹根目录下CMakeLists.txt 文件中修改工程名字为encoder:
1 | set(CMAKE_PROJECT_NAME encoder) |
- stm32cubemx配置文件更改为 encoder.ioc ,并更改以下文件名:
1 | ... |
1.2 引脚配置
使用STM32CubeMx打开ioc配置文件,然后配置对应的编码器引脚:

- 定时器配置:设置为Encoder Mode,引脚配置为上拉模式;
- 外部中断引脚用于编码器的按键检测,也设置为上拉模式;
2. 编写代码
2.1 定时器编码器使用
先启动编码器,然后使用接口获取检测结果即可:
1 | HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL); |
- __HAL_TIM_IS_TIM_COUNTING_DOWN 可以用于检测旋转方向;
- __HAL_TIM_GET_COUNTER 用于获取编码器数值,因为编码器模式设置为 TI1, 因此计数值为编码器信号的2倍频,即旋转一个小格计数值+2;

3.编译并烧录代码
3.1 编译和烧录
3.1 编译和烧录
点击生成按键即可编译工程;
在VSCode中执行task:openocd-flash烧录;
3.2 硬件连接与结果
- 按照如下方式连接硬件:

STM32 | EC11编码器 |
---|---|
PA7 | A |
PA6 | B |
GND | C |
PB0 | D |
GND | E |
- 结果如下:

著作权归本网站(https://makerinchina.cn)所有,转载请注明来自 MakerInChina.