• 大小: 12KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: 其他
  • 标签: STM32  

资源简介

SBUS串口中断接收与转换的代码,SBUS数据帧转成数值的规律。数值转实际脉宽的拟合。

资源截图

代码片段和文件信息

#include 
#include  
#include 

#define SBUS_INPUT_CHANNELS 16 //通道数
#define RC_Lose 0 //遥控信号丢失
uint8_t Sbus_Buff[25]; //串口接收缓存
uint16_t Sbus_PWM [16];


struct sbus_bit_pick {  
uint8_t byte; //字节
uint8_t rshift; //右移
uint8_t mask; //掩码
uint8_t lshift; //左移
};

static const struct sbus_bit_pick sbus_decoder[SBUS_INPUT_CHANNELS][3] = {
//
/*  0 */ { { 0 0 0xff 0} { 1 0 0x07 8} { 0 0 0x00  0} }
/*  1 */ { { 1 3 0x1f 0} { 2 0 0x3f 5} { 0 0 0x00  0} }
/*  2 */ { { 2 6 0x03 0} { 3 0 0xff 2} { 4 0 0x01 10} }
/*  3 */ { { 4 1 0x7f 0} { 5 0 0x0f 7} { 0 0 0x00  0} }
/*  4 */ { { 5 4 0x0f 0} { 6 0 0x7f 4} { 0 0 0x00  0} }
/*  5 */ { { 6 7 0x01 0} { 7 0 0xff 1} { 8 0 0x03  9} }
/*  6 */ { { 8 2 0x3f 0} { 9 0 0x1f 6} { 0 0 0x00  0} }
/*  7 */ { { 9 5 0x07 0} {10 0 0xff 3} { 0 0 0x00  0} }
/*  8 */ { {11 0 0xff 0} {12 0 0x07 8} { 0 0 0x00  0} }
/*  9 */ { {12 3 0x1f 0} {13 0 0x3f 5} { 0 0 0x00  0} }
/* 10 */ { {13 6 0x03 0} {14 0 0xff 2} {15 0 0x01 10} }
/* 11 */ { {15 1 0x7f 0} {16 0 0x0f 7} { 0 0 0x00  0} }
/* 12 */ { {16 4 0x0f 0} {17 0 0x7f 4} { 0 0 0x00  0} }
/* 13 */ { {17 7 0x01 0} {18 0 0xff 1} {19 0 0x03  9} }
/* 14 */ { {19 2 0x3f 0} {20 0 0x1f 6} { 0 0 0x00  0} }
/* 15 */ { {20 5 0x07 0} {21 0 0xff 3} { 0 0 0x00  0} }
};




/**
  * @brief  USART2 GPIO 配置工作模式配置。100000 8-N-1  SBUS
  * @param  无
  * @retval 无
  */
void USART2_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOAENABLE);
//USART2 RX
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_3;
GPIO_Init(GPIOA&GPIO_InitStructure);


//配置串口工作模式
USART_InitStructure.USART_BaudRate = 100000;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
USART_InitStructure.USART_Parity   = USART_Parity_Even;
USART_InitStructure.USART_StopBits = USART_StopBits_2;
USART_Init(USART2 &USART_InitStructure); 
USART_ITConfig(USART2 USART_IT_RXNE ENABLE);
USART_ITConfig(USART2 USART_IT_IDLE ENABLE);
USART_Cmd(USART2 ENABLE);
}

/********************************S.BUS数值转换***************************************************/
//转换的到的数值是PWM脉宽*2000
uint8_t Conversion_PWM()
{
 unsigned char channelpick;
for (channel = 0; channel < SBUS_INPUT_CHANNELS; channel++)   //循环次

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        4576  2018-10-23 18:44  Sbus.c
     文件         160  2018-10-23 18:44  Sbus.h
     文件       13792  2018-10-23 11:22  SBUS数值拟合.xls

评论

共有 条评论

相关资源