-------------------------------------------------------------------------------------------------------------------------------------------------
**********************技术疑问5:串口数据乱码和滴答延时减小一半*************************
原来在调试遥控的时候,一直用5110来测试调试的过程结果。
在调试飞控的时候,发现按原来方法设置的串口,出来的数据是乱码的。在程序中设置的波特率是9600,但是用串口调试助手观察的时候要设置波特率位19200。。
最后发现飞控板上用的晶振是16M的,经过我对度娘的无情压榨,发现将STM32F10X.H里面的HSE_VALUE ((uint32_t) 8000000)改成HSE_VALUE ((uint32_t)16000000)。这样修改的话串口就不会出现这样的问题了哈。
但是下一个问题有出现了,就是你用滴答定时器的时候,你的延时比你用8M晶振的时候,减小了一半,所以你还要在RCC_Configuration()中将
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);改成
RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_9);经过这样的修改,这两个问题就解决了。
***********************************************************************************到此,这两个问题都解决了,但是我还存在疑问,在没有对PLL的时候分频的时候,串口也是对的,那STM32的系统时钟是多少呢?如果是不是72M的话,为什么串口的时钟好像就是72M,还有STM32技术手册中规定的芯片最大的时钟是72M。如果是72M的话,为什么滴答定时器的时钟会比原来的事8M的时候多一倍呢?滴答定时器的时钟提供者是HCLK,所以HCLK的时钟不是72M吗?我就想不通了,为什么滴答定时器的时钟会不对。
希望大牛给我解释一下哈。
**********************************************************************************
------------------------------------------------------------------------------------------------------------------------------------------------