stm32f107

STM32F107的串口IAP跳转功能实现过程笔记

给你一囗甜甜゛ 提交于 2019-11-28 22:43:58
工程从CAN接口方式转换为USART接口,IO口,时钟,中断,数据缓存等都做好了,但是USART接受数据老是不对,检查了波特率等设置,都没问题。 启动定时器测试,发现原因是芯片工作时钟频率不对。主频率根本就不是72M.而是比72M慢好几倍。 USART3_Configuration()应该不会出现问题,估计是时钟出现了问题,可是RCC_Configuration()我都是按照固件库函数来的怎么会出错呢?我从stm32f10x_rcc.h源头开始找起,发现默认初始化时钟函数SystemInit()里面有有问题,分频设置当然不会出现问题,问题出在时钟选择上,105/107属于互联网产品,Preprocessor Symbols用的是STM32F10X_CL,固件很多地方会针对这个STM32F10X_CL做出条件编译,其中SystemInit()默认选择外部时钟HSE,HSE的设置值HSE_VALUE在stm32f10x.h中宏定义默认是25MHz,我的板子用的是8MHz晶振,当然那里要改,所以我注释了原来,把8MHz加上。 #if !defined HSE_VALUE #ifdef STM32F10X_CL // #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */