STM32串口波特率怎么设置?使用库直接设置吗?像51那样寄存器的设置?

STM32串口波特率怎么设置?使用库直接设置吗?像51那样寄存器的设置?,第1张

如果你仔细研究USART_Init()函数,你会发现,这程序在配置波特率时会读取RCC有关的寄存器来计算当前CPU实际的工作频率是多少,然后计算参数来实现你需要的波特率——就是说不管你把单片机设置为什么样的工作频率,这函数都能让串口以你要求的波特率工作。
当然如果你把原来8M的晶振换掉了,那你就需要修改系统中的一个定义:在文件stm32f10xh中的定义HSE_Value,这参数定义了单片机使用外部晶振或时钟源的频率,一般就是8000000,即使用的8MHz晶振。如果你的STM32用了什么73728、110592或者25MHz晶振时,你就要修改HSE_Value定义的值,这样保证串口通信波特率正确。

用命令minicom -s 可以进到串口的设置界面 一般串口的Serial Device 值是填/dev/ttyS0 然后设置一下Bps/Par/Bits 保存,根据提示登陆串口即可

先关闭串口,修改好后开启;正在通信时不可以修改。用个函数,使用固件库
void USART_Config(uint32_t baud)
{
USART_InitTypeDef USART_InitStructure;
USART_Cmd(USART1, DISABLE);
USART_InitStructureUSART_BaudRate =baud
USART_InitStructureUSART_WordLength = USART_WordLength_8b;
USART_InitStructureUSART_StopBits = USART_StopBits_1;
USART_InitStructureUSART_Parity = USART_Parity_No;
USART_InitStructureUSART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructureUSART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
uint32_t baud_table[]={2400,4800,9600,115200,~~~~~~~};
定义个波特率表,根据外部触发或外中断 更改索引 用新的波特率值传给baud参数,调用这个函数

这首要条件是485通信波特率是可调的,即是可变的,这要求编程时是这样编的。
其次,还要支持利用串口接收特定的命令字来改变波特率,根据通信协议规定的命令来修改波特率。
否则,缺少一个条件就不行,串口调试工具也没有用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10545461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存