OpenEdv-开源电子网

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

STM32F407串口发送异常问题

[复制链接]

7

主题

82

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1259
金钱
1259
注册时间
2018-6-13
在线时间
141 小时
发表于 2021-9-7 09:47:46 | 显示全部楼层 |阅读模式
5金钱
发送多个字节驱动如下:

void UART4_Send_Array(u8 send_array[],uint32_t num)
{
        uint32_t i=0;  

        for(i=0;i<num;i++){
                 UART4->SR&=~(1<<7);
                 USART_SendData(UART4,send_array[i]);        
                 while( USART_GetFlagStatus(UART4,USART_FLAG_TC)!= SET);  
         }
       
}


发送3个字节数据 0x01 0x02 0x03
接收到的数据缺少0x03 ,接收到的数据长度为2,再次发送这三个字节的数据收到的是3个字节分别是0x03 0x01 0x02

搞不懂请教大家是不是驱动有什么问题


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

592

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1458
金钱
1458
注册时间
2019-7-28
在线时间
137 小时
发表于 2021-9-7 09:52:36 | 显示全部楼层
这个操作SR是在干嘛,发数据干嘛要操作SR寄存器?等待SR的发送空闲直接发就行了啊
回复

使用道具 举报

7

主题

82

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1259
金钱
1259
注册时间
2018-6-13
在线时间
141 小时
 楼主| 发表于 2021-9-7 10:05:09 | 显示全部楼层
lpwithv 发表于 2021-9-7 09:52
这个操作SR是在干嘛,发数据干嘛要操作SR寄存器?等待SR的发送空闲直接发就行了啊

不加SR操作会直接缺少前面两个字节的数据
回复

使用道具 举报

4

主题

896

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4309
金钱
4309
注册时间
2019-9-4
在线时间
896 小时
发表于 2021-9-7 11:55:36 | 显示全部楼层
like1242109 发表于 2021-9-7 10:05
不加SR操作会直接缺少前面两个字节的数据

那你想过你为什么要操作SR寄存器了吗,这句代码的作用清楚吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 02:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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