robomaster电控究极学习教程(以哨兵为例)------一、串口dma和遥控器
文章目录
- robomaster电控究极学习教程(以哨兵为例)------一、串口dma和遥控器
- 一、串口DMA的作用
- 二、步骤
-
- 2.添加代码
-
一、串口DMA的作用
DMA可以直接存储器访问,就是方便!!
二、步骤
1.cubemx配置
以uart3为例
2.添加代码
mian.c
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.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);
}
while (1)
{
if(RC_Ctl.rc.s2 == 1)
{
}
RC_Ctl_t RC_Ctl;
uint8_t sbus_rx_buffer[18];
int TongDao0=0;
main.h
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;
3.调试
点击watch1 输入变量 就是那个结构体
run 开关拨动 数值会随之变化
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)