打印
[技术讨论]

USART发送数据需要延时200us

[复制链接]
5290|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
cainiao518| | 2023-4-7 15:02 | 只看该作者
波特率多少?

使用特权

评论回复
板凳
准备植发程序猿|  楼主 | 2023-4-7 15:17 | 只看该作者
本帖最后由 准备植发程序猿 于 2023-4-7 15:19 编辑

波特率57600

使用特权

评论回复
地板
LcwSwust| | 2023-4-7 15:28 | 只看该作者
从硬件上讲,57600波特率发送一字节确实需要大约200us的时间,发完一字节才能发下一字节,一般可以根据状态位来判断是否发送完成.

使用特权

评论回复
5
hjl2832| | 2023-4-7 17:16 | 只看该作者
像STM32 ,要判断发送是否完成,正确的做法是判断发送完成标志位,而不是发送寄存器空标志位。这2个标志位是有区别的。

使用特权

评论回复
评论
forgot 2023-4-7 17:38 回复TA
你说的是TC标志位吧 
6
timerc| | 2023-4-7 17:26 | 只看该作者
是不是没等发送完成就开始写DR,

使用特权

评论回复
7
准备植发程序猿|  楼主 | 2023-4-7 19:40 | 只看该作者
感谢大家,问题已解决。把
if(usart_flag_get(USART1,USART_TDBE_FLAG )!=RESET)
{
        usart_data_transmit(USART1,  *Buffer);
}
改成
usart_data_transmit(USART2,  *Buffer);
while(usart_flag_get(USART2,USART_TDBE_FLAG)==RESET);
就可以了

使用特权

评论回复
8
LorenandGabriel| | 2023-4-8 11:18 | 只看该作者
学到了呀,串口居然还有延时这种要求

使用特权

评论回复
9
icecut| | 2023-4-9 10:06 | 只看该作者
LorenandGabriel 发表于 2023-4-8 11:18
学到了呀,串口居然还有延时这种要求

最初 串口 带fifo. 一般不会超. 后面都降低成本要求用dma了.

使用特权

评论回复
10
天意无罪| | 2023-4-9 11:51 | 只看该作者
串口发送数据肯定不能简单粗暴只管写,还要判断上次数据是否发送完成才能发送下一个字节,用查询法或者中断法,或者用DMA方式。

使用特权

评论回复
11
1pwdzsj1| | 2023-4-10 15:03 | 只看该作者

USART发送数据需要延时200us

理论串口发送数据是不需要延时的,串口传输数据每个字节都是有停止位的,会根据停止位来判断是否一个字节数据。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

32

帖子

0

粉丝