大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试

资料官网:RoboMaster 机甲大师赛

1.查看开发板A型芯片资料

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第1张图片2.查看遥控器用户手册

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第2张图片

3.查看开发板A型DBUS接口说明

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第3张图片

4.查看DBUS参数(配置STM32CubeMX需要)

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第4张图片

 5.配置STM32CubeMX

1)新建new project,选择开发板A型芯片型号

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第5张图片

 2)打开外部高速时钟

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第6张图片

下面是我的时钟树配置 

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第7张图片

3) 配置USART1通信接口

 选择Asynchronous(异步通信)方式,并检查对应IO口是否与原理图对应

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第8张图片

根据DBUS参数,配置参数设置

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第9张图片

配置DMA (直接存储器访问)

优先级选最高,模式选择循环

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第10张图片

 4)常规配置及生成代码

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第11张图片

注意生成路径不要有中文 

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第12张图片

 6.参考遥控器用户手册例程配置工程文件(keil5MDK)

打开工程文件,先编译

声明数据结构体和缓存数组

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第13张图片

RC_Ctl_t RC_Ctl;//声明数据结构体
uint8_t sbus_rx_buffer[18];//声明缓存数组

初始化DMA和使能IDLE 中断

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第14张图片

HAL_UART_Receive_DMA(&huart1,sbus_rx_buffer,18);//初始化DMA
__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);//IDLE 中断使能

 定义中断回调函数

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第15张图片

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中添加串口数据的结构体

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第16张图片

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型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第17张图片

开发板A型SWD引脚说明

大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试_第18张图片

 确认无误后开启Debug 


如果对你有帮助,谢谢你的点赞支持!

你可能感兴趣的:(单片机,stm32,嵌入式硬件,c#,信号处理)