NUCLEO-F412ZG没有连接外部晶振,所以程序选用单片机内部自带16MHz振荡器,设置PLL的频率为96MHz,供系统时钟使用。
PLL输出频率 = 16MHz/PLLM*PLLN/PLLP。PLLM=16,PLLN=192,PLLP=2,得到的时钟频率为96MHz。
同时PLLQ = 2,PLLR=2,设置为48MHz供USB等外设使用。
进入main函数以后,还会调用SystemClock_Config()函数,设置AHB APB1 APB2等时钟频率。
STM32F4CUBE的时钟设置符合我的需求,可以直接拿来用。
2、创建工程模版。
MDK创建工程的基本方法这里不在赘述。
创建五个文件夹,USER,HARDWARE,STM32F4_Hal_Driver,CMSIS,STARTUP
USER文件夹中主要包括main.c和stm32f4xx_it.c以及相关的头文件
HARDWARE文件夹包含外设的驱动程序
STM32F4_Hal_Driver文件夹包含官方外设库文件
CMSIS文件夹包含system_stm32f4xx.c及相关头文件
STARTUP文件夹包含startup_stm32f412zx.s
添加宏定义,包含头文件路径,设置ST-LINK等。
STM32F412Zx,USE_HAL_DRIVER,USE_STM32F4XX_NUCLEO_144
此时编译,下载到开发板,能够成功,但是还不知道开发板有没有正确运行。
在HARDWARE中创建LED.c初始化GPIO等,在main中初始化并且点亮LD1 LD2 LD3。
编译并下载到开发板,三个LED灯都亮起来: