找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3426|回复: 4
打印 上一主题 下一主题
收起左侧

stm32f103单片机串口连续发送多字节程序求分析问题

[复制链接]
跳转到指定楼层
楼主
stm32f103单片机做通信控制,发送的数据总是不对。抄了网上各种发送程序,禁止编译器优化等都试遍了。实在不知道错在哪里,请网友帮忙指教。比如说我要发送的数据:0x5a  0xa5  0x03  0x10  0x20  0x30  ;
上面0x5a  0xa5是帧头,0x03是后面要发送的数据量(这里是3个), 0x10  0x20  0x30  就是要发送的数据了。
下面的图片是我试着从发送一个字节到发送7个字节时收到了数据截图,好给大伙分析;
最先发送一个字节,是外围接了一个按钮,按一次发送一次。


发送一个字节后串口助手接收到正确的数据


从一次发送两个字节开始接收就不对了


第一次按按钮,接收到的是0x5a。没错,第一次只能收到一个字节,按道理应该接收到0x5a  0xa5。从第二次开始接收到的数据时0xa5  0x5a,这是一次收到了两个字节但反了顺序。不知道程序错在哪里,求指点!


后面是发送3个字节


没让我失望,接收的还是2个字节。但从这里开始,接收到的都已经不是原来发送了的数据了。发送的0x5a  0xa5  0x03已经变成了0x5a  0x3f两个字节了。


后面的我也懒得打字了,都是少了一个字节。0xa5  0x03 都变成了 0x3f。
















请大神们帮我分析一下问题出在哪里了?

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:91471 发表于 2021-5-6 15:59 | 只看该作者
求一份可以一次正确发送多字节的程序范例,稍微改一下还能发送MODBUS协议的多字节程序。
回复

使用道具 举报

板凳
ID:538157 发表于 2021-5-6 19:29 | 只看该作者
恕我太菜看不出什么问题来,但是从你程序的大括号上看,我发现你的程序一直在初始化硬件,然后再发送,我建议你把硬件的初始化配置只执行一次,发送部分放在一个while(1)循环里,最好加一个按键条件判断发送,方便调试。最后,我把一个确定没有问题的函数给你,你应该也是标准库写的,你看看试一试。
/*****************  发送一个字节 **********************/
void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch)//选择哪一个串口,选择发送哪一个数据
{
        /* 发送一个字节数据到USART */
        USART_SendData(pUSARTx,ch);
               
        /* 等待发送数据寄存器为空 */
        while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);       
}

/****************** 发送指定长度的数组 ************************/
void Usart_SendArray( USART_TypeDef * pUSARTx, uint8_t *array, uint16_t num)//选择哪一个串口,数组名或者指针,数据长度即有几个发送的数据
{
  uint8_t i;
       
        for(i=0; i<num; i++)
  {
            /* 发送一个字节数据到USART */
            Usart_SendByte(pUSARTx,array[i]);       

  }
        /* 等待发送完成 */
        while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);

}
modbus通信的部分,
回复

使用道具 举报

地板
ID:889094 发表于 2021-5-6 20:21 | 只看该作者
51的过来学习一下,确定两边的波特率是一样的?
回复

使用道具 举报

5#
ID:91471 发表于 2021-5-9 10:35 | 只看该作者
xu2509674896 发表于 2021-5-6 19:29
恕我太菜看不出什么问题来,但是从你程序的大括号上看,我发现你的程序一直在初始化硬件,然后再发送,我建 ...

谢谢!我现在只是想把功能实现,上面是在开关步进电机。现在外地出差还没试你说可以正常用的程序,我看了一下大概率是不正常的,因为那段程序我已经试过了。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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