OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4766|回复: 2

串口发送两次数据,才接收一次

[复制链接]

0

主题

1

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2022-8-5
在线时间
2 小时
发表于 2022-8-26 22:53:33 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 2310111932 于 2022-8-26 22:55 编辑

按两次发送键才接收到一次,这啥问题?
接收中断代码(HAL库):
void HAL_UART_RxCpltCallback(UART_HandleTypeDef*huart)
{
        static uint16_t State=0;
        static uint8_t P=0;
        if(huart->Instance==USART1)
        {
                if(State==0 && RXData=='B')
                {
                        State=1;
                        P=0;
                }
                else if(State==1)
                {
                        if(RXData=='U')
                                State=2;
                }
                else if(State==2)
                {
                        if(RXData=='L')
                                State=3;
                }
                else if(State==3)
                {
                        if(RXData=='L')
                                State=4;
                }
                else if(State==4)
                {
                        if(RXData=='E')
                                State=5;
                }
                else if(State==5)
                {
                        if(RXData=='T')
                                State=6;
                }
                else if(State==6)
                {
                        if(RXData==':')
                                State=7;
                }
                else if(State==7)
                {
                        if(RXData=='\n')
                        {
                                State=8;
                        }
                        else
                        {
                                RXNum[P]=RXData;
                                P++;
                        }
                }        
                else if(State==8)
                {
                        LED0_OFF;
                        State=0;
                        HAL_UART_Transmit(&huart1,RXNum,sizeof(RXNum),100);
                }
                HAL_UART_Receive_IT(&huart1,&RXData,1);               
        }
}


屏幕截图 2022-08-26 225446.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2022-8-5
在线时间
2 小时
 楼主| 发表于 2022-8-27 11:38:04 | 显示全部楼层
接收到‘\n’后又开启了一次中断
把else if(State==8)中else去掉就好了
回复

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2021-12-12
在线时间
10 小时
发表于 2022-8-31 18:51:44 | 显示全部楼层
您可以移植开发板的串口例程到自己的工程上 看看实验效果是否符合预期
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 04:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表