RT-thread Studio配置使用Pulse Encoder

发布于 2021-03-11 11:14:40

请教一下如何在RT-thread Studio中配置使用Pulse Encoder

官网文档只有应用层的使用示例。能找到的配置示例均是ENV工具配置的示例,没有找到Studio配置相关文档

依照《RT-Thread Studio 结合 STM32CubeMx 开发其他驱动文档》文档,将CubeMx生成的HAL_TIM_Encoder_MspInit()函数复制到board.c中,并在board.h中添加#define BSP_USING_PULSE_ENCODER#define BSP_USING_PULSE_ENCODER4,开启stm32xxxx_hal_config.h中的#define HAL_TIM_MODULE_ENABLED

编译下载运行之后,程序报查找不到脉冲编码器设备错误,使用list_device命令也没打应出相关的设备。

查看更多

关注者
0
被浏览
179
3 个回答
Thread_Liu
Thread_Liu 2021-03-11

单步调试一下,底层有没有初始化成功。

yangjie
yangjie 2021-03-11

list_device命令也没打应出相关的设备,可能是设备没有注册,是不是少添加了驱动文件

aranzeb
aranzeb 2021-03-11

问题已经解决了。根本原因是Studio生成的项目里面没有drv_pulse_encoder.c文件。无论是Studio里v4.0.2还是latest版本均没有该文件。

解决步骤:

  1. 按照《RT-Thread Studio 结合 STM32CubeMx 开发其他驱动文档》,将CubeMx生成的HAL_TIM_Encoder_MspInit()函数复制到board.c中,并在board.h中添加#define BSP_USING_PULSE_ENCODER#define BSP_USING_PULSE_ENCODER4(依照需求指定),开启stm32xxxx_hal_config.h中的#define HAL_TIM_MODULE_ENABLED。——让人疑惑的是一般的设备驱动,在board.h中会给出操作步骤,如SPIADC之类的,但Pulse Encoder却没有。
  2. 下载rt-thread源代码(我下载的是master版),在bsp\stm32\libraries\HAL_Drivers路径下把drv_pulse_encoder.c复制到Studio生成项目的drivers目录下。
  3. **修改编译错误,在drv_pulse_encoder.c文件中添加pulse_encoder.h的绝对路径#include "rt-thread/components/drivers/include/drivers/pulse_encoder.h"。不太清楚是啥具体原因,必须要添加绝对路径,不然就会编译报错。
  4. 编译下载,程序能找到编码器设备,转动编码器,能正确的输出编码器码值。

PS: 我的板子的片子是STM32F429VG,Pulse Encoder使用的是TIM4的Encoder Mode,目前我的解决办法如上所示,可能会存在一些差异,需自行修改。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览