本帖最后由 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正常接收
还有我的工程是用原子教程中的工程源码修改的 ,但并没有修改任何与时钟有关的地方.
这个没解决脑子里总是惦记着不踏实呀
还麻烦帮忙分析一下,不胜感谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
核对了一遍几个关键地方没有发现问题。 包括使用其他人没问题的模板 不修改任何东西,下载验证,还是一半
修改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修改后不影响波特率
一周热门 更多>