只使用单片机一个串口如何转换波特率?

2019-07-15 07:45发布

只运用单片机一个串口,下载程序的波特率是115200,但是程序需要的通信波特率是9600
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
juanll5
1楼-- · 2019-07-16 11:32
下载无需设置波特率
Winnie62
2楼-- · 2019-07-16 11:57
手上这款单片机ISP方式下载,flash烧程序。
我看网上有人说,stm32用这种方式(就是用串口)下载的时候,不需要设置波特率?那为什么不需要设置波特率?
我看了MAX232的电路图(用来搞ISP)的,不是需要MCU和PC的波特率一致才能通信吗?
网上还有人说,下载和应用的时候不一样,不用管波特率的设置?我还是不明白。为什么?
huangdajiang
3楼-- · 2019-07-16 12:54
stm32的内置 ISP 程序,开始时并不 enable 串口的,而是把串口的 RXD 当做普通 IO,设置为输入模式,当 PC 发出串口数据时,ISP 程序会测量串口数据的脉冲宽度,然后计算出适合的波特率,并使用这个波特率 enable 串口。这样就可以做到自动适配 PC 的波特率。
Winnie62
4楼-- · 2019-07-16 14:11
 精彩回答 2  元偷偷看……
huangdajiang
5楼-- · 2019-07-16 14:34
PC 先发出一个字节,0x00,uart 时序就是在起始位之后有一个下降沿(A),然后是8个bit的低电平,然后有一个上升沿(B),再跟着一个停止位。stm32的isp程序启动后设置RXD引脚为I/O输入模式并启用下降沿中断,当下降沿A来到时,中断服务程序启动一个定时器,并启用上升沿中断,当上升沿B来到时,读取定时器的计数值,这个计数值就是8个bit所需要的时间。
huangdajiang
6楼-- · 2019-07-16 16:01
以此计数值就可以计算出波特率。这个技术并不是stm32特有的,早在8051时代就已经比较普遍了。

一周热门 更多>