资料官网:RoboMaster 机甲大师赛
1.查看开发板A型芯片资料
2.查看遥控器用户手册
3.查看开发板A型DBUS接口说明
4.查看DBUS参数(配置STM32CubeMX需要)
5.配置STM32CubeMX
1)新建new project,选择开发板A型芯片型号
2)打开外部高速时钟
下面是我的时钟树配置
3) 配置USART1通信接口
选择Asynchronous(异步通信)方式,并检查对应IO口是否与原理图对应
根据DBUS参数,配置参数设置
配置DMA (直接存储器访问)
优先级选最高,模式选择循环
4)常规配置及生成代码
注意生成路径不要有中文
6.参考遥控器用户手册例程配置工程文件(keil5MDK)
打开工程文件,先编译
声明数据结构体和缓存数组
RC_Ctl_t RC_Ctl;//声明数据结构体
uint8_t sbus_rx_buffer[18];//声明缓存数组
初始化DMA和使能IDLE 中断
HAL_UART_Receive_DMA(&huart1,sbus_rx_buffer,18);//初始化DMA
__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);//IDLE 中断使能
定义中断回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
RC_Ctl.rc.ch0 = (sbus_rx_buffer[0]| (sbus_rx_buffer[1] << 8)) & 0x07ff;
RC_Ctl.rc.ch1 = ((sbus_rx_buffer[1] >> 3) | (sbus_rx_buffer[2] << 5)) & 0x07ff;
RC_Ctl.rc.ch2 = ((sbus_rx_buffer[2] >> 6) | (sbus_rx_buffer[3] << 2) | (sbus_rx_buffer[4] << 10)) & 0x07ff;
RC_Ctl.rc.ch3 = ((sbus_rx_buffer[4] >> 1) | (sbus_rx_buffer[5] << 7)) & 0x07ff;
RC_Ctl.rc.s1 = ((sbus_rx_buffer[5] >> 4)& 0x000C) >> 2;
RC_Ctl.rc.s2 = ((sbus_rx_buffer[5] >> 4)& 0x0003);
RC_Ctl.rc.sw = sbus_rx_buffer[16]|(sbus_rx_buffer[17]<<8);
}
在main.h中添加串口数据的结构体
typedef struct
{
struct
{
unsigned short ch0;
unsigned short ch1;
unsigned short ch2;
unsigned short ch3;
unsigned char s1;
unsigned char s2;
unsigned short sw;
}rc;
}RC_Ctl_t;
7.Debug在线调试(后续补充)
根据说明书要求把DR16接收器连接到开发板A型相对应接口,再连上ST-Link烧录器
下面是ST-Link引脚图
开发板A型SWD引脚说明
确认无误后开启Debug 文章来源:https://www.toymoban.com/news/detail-734159.html
如果对你有帮助,谢谢你的点赞支持!文章来源地址https://www.toymoban.com/news/detail-734159.html
到了这里,关于大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!