你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求助!串口接收到的sbus数据不对!

[复制链接]
a842389740 提问时间:2019-6-13 23:07 /
硬件已经取反了,代码如下,串口接到的数据就是不对,快崩溃了,每次都是第二个字节是0F,而且拨遥控器数据也不变。遥控器是用的microzone和配套的接收机。
void SBUS_Configuration(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef  NVIC_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
       

        //  ???100000 8???? ???? 2????
        USART_InitStructure.USART_BaudRate = 100000;
        USART_InitStructure.USART_WordLength = USART_WordLength_9b;
        USART_InitStructure.USART_StopBits = USART_StopBits_2;
        USART_InitStructure.USART_Parity = USART_Parity_Even;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

        USART_Init(USART3, &USART_InitStructure);

        NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);

        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
        USART_ITConfig(USART3, USART_IT_IDLE, ENABLE);

        USART_Cmd(USART3, ENABLE);
}




/**
  */
void USART3_IRQHandler(void)
{
        uint8_t res;
        uint8_t clear = 0;
        static uint8_t Rx_Sta = 1;
       
        if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
        {
                res =USART3->DR;
                USART3_RX_BUF[Rx_Sta++] = res;
        }
        else if(USART_GetITStatus(USART3, USART_IT_IDLE) != RESET)
        {
                clear = USART3->SR;
                clear = USART3->DR;
                USART3_RX_BUF[0] = Rx_Sta - 1;
                Rx_Sta = 1;
        }
}

int main(void)
{
        SBUS_Configuration();

//        extern uint16_t CH[18];
//         u8 USART3_RX_BUF[26];//
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
while(1){
        while(USART_GetITStatus(USART3, USART_IT_IDLE) != RESET)
        {
                USART_SendData(USART3,USART3_RX_BUF[i++]);



求大佬相助!!
<
收藏 评论14 发布时间:2019-6-13 23:07

举报

14个回答
a842389740 回答时间:2019-6-13 23:09:11
刚开始自己做飞控 不懂的太多了 实在不知道问题出在哪
sylar.z 回答时间:2019-6-13 23:36:17
USART_InitStructure.USART_BaudRate = 100000;
你设置的比特率是100000,不是常规值(比如115200)。你确认一下波特率是否匹配。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

a842389740 回答时间:2019-6-13 23:40:12
sylar.z 发表于 2019-6-13 23:36
USART_InitStructure.USART_BaudRate = 100000;
你设置的比特率是100000,不是常规值(比如115200)。你确 ...

是正确的..我一直怀疑我程序写的有问题
a842389740 回答时间:2019-6-13 23:40:28
19 0F EC E3 5E 3E C8 97 F0 84 27 3C 19 8A FA D4 A7 3E F5 A9 4F 7D EA 53 00 00 00 00 00 00 00 00 00 00  这是接到的数据
sylar.z 回答时间:2019-6-13 23:47:11
对程序而言,串口能收发,程序应该是正常的。数据不对,很大可能是两端的配置参数不匹配。也有可能是线接触不好。
sylar.z 回答时间:2019-6-13 23:52:27
a842389740 发表于 2019-6-13 23:40
19 0F EC E3 5E 3E C8 97 F0 84 27 3C 19 8A FA D4 A7 3E F5 A9 4F 7D EA 53 00 00 00 00 00 00 00 00 00 0 ...

正常应该是什么数据?
a842389740 回答时间:2019-6-14 00:00:32
sylar.z 发表于 2019-6-13 23:52
正常应该是什么数据?

正常应该是起始位是0F 结束位是00 一共25个值
sylar.z 回答时间:2019-6-14 00:06:41
a842389740 发表于 2019-6-14 00:00
正常应该是起始位是0F 结束位是00 一共25个值

图1.jpg
你接收的数据就是从第二个字节开始放的(红色),第一个字节放的是数据长度(蓝色)
a842389740 回答时间:2019-6-14 00:12:27
sylar.z 发表于 2019-6-14 00:06
你接收的数据就是从第二个字节开始放的(红色),第一个字节放的是数据长度(蓝色)
...

是的 但是我主函数里写的也是从第二个数据接收的 老哥。
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版