学习一款单片机步骤:
硬件资源可以让我们知道, 这个芯片都有哪些功能, 内存映射让我们知道, 我们的代码存到了哪里, 运行内存在哪里, 外设寄存器在哪里. 了解时钟体系, 是必要的, 时钟是通信的核心, 是单片机运行的心脏, 如果不了解时钟体系, 通信必然会出现不可预估的问题.
FLASH: 代码编译之后烧录存放的位置, const修饰的全局变量的位置.
RAM: 就是运行内存, 将代码需要的临时变量存储到RAM中.
有4种时钟, 外部高速晶振HSE, 外部低速晶振LSE, 内部高速RC振荡器HSI, 内部低速LSI. 除此之外还有可以外部提供特定时钟信号, 这里不说.
三个AHB总线时钟都是168MHz, APB1低速总线:42MHz,四分频, APB2高速总线:84MHz,二分频, 挂载的TIM都会2倍频.
f4系列的f1系列的不同, F1系列的基本上配置都是正确的, 外接8M晶振就是正确的, F4系列不同, 需要自己配置PLL的倍频. 在system_stm32f4xx.c文件中修改.
#if defined(STM32F40_41xxx)
? uint32_t SystemCoreClock = 168000000;? ? ?//看是否为168000000
#endif /* STM32F40_41xxx */
配置PLL , PLL一旦配置后, 程序运行不可以更改.
根据图示, 可以看出来输入8M, 首先经过M分频, 然后经过N倍频, 再经过P分频.
这里配置PLL_M = 8, PLL_N = 336, PLL_P = 2. 就是8M / 8 *336 / 2 = 168MHz
下面这个PLL_Q说是外设时钟输出48MHz, 不知道干什么的, 不过配置为PLL_Q = 7就是48MHz.
注意: PLL分频不能随便给数, 要参考RCC_PLLCFGR, PLL配置寄存器参考手册来进行配置.
?