【精品博文】STM32F767 Nucleo-USART移花接木OK

赢一个双肩背包有多难?戳一下试试看!→_→长摁识别今天继续查找问题原因,使用十六进制查看串口收到的数据,根本不是ASCII码,根据之前的思路,开始查找时钟配置:首先发现一个以前没有注意的问题,Nucleo-144 的晶振X3没有焊接,使用的是ST-Link的MCO输出的时钟(8MHz),所以  HSE需要设置为BYPASS模式;  修改之后发现还是不对,然后进行单步调试系统时钟竟然是这样子的:

很明显不对!最大216MHz怎么就变这么大!!继续单步跟踪发现:

居然是这里出错了,这个pllvco是根据HSE_VALUE这个宏计算出来的:12345if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI){/* HSE used as PLL clock source */pllvco = ((HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >>         POSITION_VAL(RCC_PLLCFGR_PLLN)));}跟踪HSE_VALUE,找到罪魁祸首:123456789/* ########################## HSE/HSI Values adaptation ##################### *//*** @brief Adjust the value of External High Speed oscillator (HSE) used in your application.*        This value is used by the RCC HAL module to compute the system frequency*        (when HSE is used as system clock source, directly or through the PLL).*/#if !defined  (HSE_VALUE)#define HSE_VALUE    ((uint32_t)25000000U) /*!< Value of the External oscillator in Hz */#endif /* HSE_VALUE */于是乎,有点不解,在MDK中设置的晶振频率不起作用么?

一不做二不休,直接修改宏:123456789/* ########################## HSE/HSI Values adaptation ##################### *//*** @brief Adjust the value of External High Speed oscillator (HSE) used in your application.*        This value is used by the RCC HAL module to compute the system frequency*        (when HSE is used as system clock source, directly or through the PLL).*/#if !defined  (HSE_VALUE)#define HSE_VALUE    ((uint32_t)8000000U)#endif /* HSE_VALUE */编译、下载:

正确显示!好吧,今天先这样!感谢正点原子提供这么多资料供学习。关于晶振频率在MDK中的设置为什么没有起作用的问题希望有了解的网友指点一下!

(0)

相关推荐