pulse_encoder示例
源码路径:example\rt_device\pulse_encoder
支持的平台
例程可以运行在以下开发板.
sf32lb58-lcd_n16r64n4
概述
脉冲编码器能够精确地测量旋转轴的位置。每转动一定角度,编码器就会生成一个脉冲信号。通过计算这些脉冲的数量,可以确定旋转轴的当前位置。
GPtimerd的encoder模式让外部脉冲编码器控制定时器的CNT增减示例
例程的使用
硬件需求
运行该例程前,需要准备一块本例程支持的开发板
例程的使用
编译和烧录
切换到例程project目录,运行scons命令执行编译:
scons –board=sf32lb58-lcd_n16r64n4 -j8
切换到例程project/build_xx
目录,运行download.bat
build_sf32lb58-lcd_n16r64n4_hcpu\download.bat
关于编译、下载的详细步骤,请参考快速上手的相关介绍。
每秒读取GPtimer被外接设备控制cnt增减下的值
例程输出结果展示:
log输出:
encoder_example_init!
succeed encoder_example_init
Start Get_count!
encoder_count:0
encoder_count:2
encoder_count:5
encoder_count:-4
msh />
本例程使用轮询方式每秒读取cnt值
encoder的通道选择参数修改
版型名称 |
GPTIMx_CHx |
引脚(物理位置) |
---|---|---|
525 |
||
GPTIM1_CH1 |
PAD_PA24 (19) |
|
GPTIM1_CH2 |
PAD_PA25 (21) |
|
587: |
||
GPTIM1_CH1 |
PAD_PA82 (CONN2 22) |
|
GPTIM1_CH2 |
PAD_PA51 (CONN2 28) |
#ifdef SF32LB52X
HAL_PIN_Set(PAD_PA24, GPTIM1_CH1, PIN_PULLUP, 1);
HAL_PIN_Set(PAD_PA25, GPTIM1_CH2, PIN_PULLUP, 1);
#elif defined SF32LB58X
HAL_PIN_Set(PAD_PA82, GPTIM1_CH1, PIN_PULLUP, 1);
HAL_PIN_Set(PAD_PA51, GPTIM1_CH2, PIN_PULLUP, 1);
#endif
注意:
52x芯片,可以配置到任意带有PA_TIM功能的IO作为encoder通道使用
HAL_PIN_Set 最后一个参数为hcpu/lcpu选择, 1:选择hcpu,0:选择lcpu
异常诊断
如果未能出现预期的log和旋转无法增减cnt,可以从以下方面进行故障排除:
硬件连接是否正常
管脚配置是否正确
参考文档
对于rt_device的示例,rt-thread官网文档提供的较详细说明,可以在这里添加网页链接,例如,参考RT-Thread的RTC文档
更新记录
版本 |
日期 |
发布说明 |
---|---|---|
0.0.1 |
10/2024 |
初始版本 |
0.0.2 |
12/2024 |
2.0 |