robomaster电控究极学习教程(以哨兵为例)------一、串口dma和遥控器

robomaster电控究极学习教程(以哨兵为例)------一、串口dma和遥控器

一、串口DMA的作用

DMA可以直接存储器访问,就是方便!!

二、步骤

1.cubemx配置

以uart3为例在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.添加代码

mian.c

/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
	RC_Ctl.rc.ch0 = (sbus_rx_buffer[0] | (sbus_rx_buffer[1] << 8))& 0x07ff;  //确保11位
	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.mouse.x = sbus_rx_buffer[6] | (sbus_rx_buffer[7] << 8);
	RC_Ctl.mouse.y = sbus_rx_buffer[8] | (sbus_rx_buffer[9] << 8);
	RC_Ctl.mouse.z = sbus_rx_buffer[10] | (sbus_rx_buffer[11] << 8);
	RC_Ctl.mouse.press_l = sbus_rx_buffer[12];
	RC_Ctl.mouse.press_r = sbus_rx_buffer[13];
	RC_Ctl.key.v = sbus_rx_buffer[14] | (sbus_rx_buffer[15] << 8);
	
}
/* USER CODE END 4 */
 /* USER CODE BEGIN WHILE */
  while (1)
  {
	if(RC_Ctl.rc.s2 == 1)  // 开关向上
	{
			//自己想干嘛
	}

    /* USER CODE END WHILE */
/* USER CODE BEGIN PV */
RC_Ctl_t RC_Ctl;
uint8_t sbus_rx_buffer[18];

int TongDao0=0;
/* USER CODE END PV */

main.h

/* USER CODE BEGIN ET */
typedef struct
{
	struct
	{
		unsigned short ch0;
		unsigned short ch1;
		unsigned short ch2;
		unsigned short ch3;
		unsigned char s1; 
		unsigned char s2;
	}rc;
	
	struct
	{
		unsigned short x;
		unsigned short y;
		unsigned short z;
		unsigned char press_l; 
		unsigned char press_r;
	}mouse;
	
	struct
	{
		unsigned short v;
	}key;
}RC_Ctl_t;
/* USER CODE END ET */

3.调试

在这里插入图片描述
在这里插入图片描述
点击watch1 输入变量 就是那个结构体

在这里插入图片描述
run 开关拨动 数值会随之变化

  • 10
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值