本帖最后由 rong1990 于 2017-12-11 19:36 编辑
大家好,从开试接触stm32到现在一个月左右,这个串口波特率问题一直没有解决,实在想不通哪里出现问题
我的串口波特率初始化112500,串口助手乱码。然后串口助手上一个一个波特率试,发现选取57600时正常
我查过,以下两种情况都没问题呀(或者有我没发现?)
1. #define HSE_VALUE ((uint32_t)8000000) 这里没问题呀 我是8MHz的晶振
2. PLL_M=8 PLL_N=336 PLL_P=2 这里也没问题
我试着修改PLL_M,PLL_N的值,波特率没有变化,还是初始化115200时,助手设定57600正常接收
当我修改HSE_VALUE=4000000 时 初始化115200时,助手设定115200正常接收
还有我的工程是用原子教程中的工程源码修改的 ,但并没有修改任何与时钟有关的地方.
这个没解决脑子里总是惦记着不踏实呀
还麻烦帮忙分析一下,不胜感谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
/* PCLK2 = HCLK / 2*/
RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
/* PCLK1 = HCLK / 4*/
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;
#endif /* STM32F40_41xxx || STM32F427_437x || STM32F429_439xx */
是不是这里少了东西呀?
今天试了USART3 还是一样的情况 uart_init(115200) 但是串口助手调到57600才正常。 有没有可能是硬件的问题呢? 因为 我把原子哥的教程 《实验4 串口实验》 作为模板 不修改任何东西 波特率也是一半呀?
核对了一遍几个关键地方没有发现问题。 包括使用其他人没问题的模板 不修改任何东西,下载验证,还是一半
修改PLL_M与PLL_N值不影响波特率 修改HSE_VALUE 会影响。 怀疑系统是直接使用的 HSE 而非 PLL。
但是修改以下代码也没有改变波特率。
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx)
/* PCLK2 = HCLK / 2*/
RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; → //将RCC_CFGR_PPRE2_DIV2修改后不影响波特率
/* PCLK1 = HCLK / 4*/
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; → //将RCC_CFGR_PPRE1_DIV4修改后不影响波特率
一周热门 更多>