当然如果你把原来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通信波特率是可调的,即是可变的,这要求编程时是这样编的。
其次,还要支持利用串口接收特定的命令字来改变波特率,根据通信协议规定的命令来修改波特率。
否则,缺少一个条件就不行,串口调试工具也没有用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)