今天(2014.4.21)把stm32f107的程序下载到stm32f103的板子上,发现串口收不到数据,突然想起晶振频率没有修改,#define HSE_VALUE ((uint32_t)13560000) /*!< Value of the External oscillator in Hz */ 这个要改回去,因为外接晶振是8M 之后试验,发现有数据,但是乱码.百思不得其解,无意中发现,PC的波特率设置为9600,板子的波特率设置为19200就不会乱码.刚好是2倍的关系.顺藤摸瓜问度
一般来说,stm32f107都是用标配的晶振,比如8MHz. 但是,如果用别的晶振,比如13.56M的晶振,那串口接收还正常吗? 根据试验结果,很可能会飞码.比如说用串口助手发送的是0x35,但是在串口接收中断里面就会得到别的值,即上位机发送的数据和板子接收的数据不一致. 通过查资料,解决办法如下: 修改文件stm32f10x.h, 把 #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator i
STM32F407的库文件中默认晶振值为25MHz,若外接晶振8MHz,则需修改以下几个地方: 1)修改HSE_VALUE的值 将#define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */ 修改为 #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ 2)修改PLL_M