系统初始化与LED闪烁
一、实验目的
学习使用STM32CUBEMX新建工程的方式,同时学习GPIO输出的使用。
二、开发工具
STM32CUBEMX
KEIL V5
三、开发步骤
1. STM32F7的时钟初始化
STM32的时钟系统相对复杂,可以使用多种时钟源,同时可以选择锁相环、倍频分频系数等,同时不同的外设总线可以设置相应的时钟频率。
本次实验中,我们使用内部时钟作为时钟源。
首先,打开STM32CUBEMX(下文简称CUBE),选择新建工程。之后选择MCU的型号,DIS板子上的芯片型号是STM32F746NGH,点击OK。此时即可完成工程的基本创建。
之后选择clock configuration进行时钟配置。几个要点:使用HSIRC内部16M时钟作为时钟源;使用PLL,设置分频倍频系数,使得PLL输出为200M(事实上F7的最高时钟频率官方设置为216M);之后合理设置分频系数给HCLK和后续外设及总线使用。
至此,完成时钟初始化。
2. GPIO的初始化
查看F7板子的原理图,Arduino接口中对应LD1,本次实验将控制这颗LED的亮灭。由原理图可知对应MCU的PI1管脚。
因此,需要将PI1初始化为输出功能。
回到CUBE的pinout界面,找到PI1,点击选择GPIO_OUTPUT复用功能即可。
选择configuration界面,选择GPIO,可以添加LABEI为LD1。
至此,完成GPIO初始化。
3. 代码的自动生成
此时,可以进行代码的初始化。选择菜单栏project-generate code,进行代码生成界面。设置工程名字以及开发所用IDE即可。同时,可以在code generator界面中选择为每个外设单独生成c文件和h文件,这样结构清晰些。
选择ok,即可生成代码。之后可以直接打开工程。
4. Delay函数
初始化的工程中,hal文件中使用systick生成了分辨率为ms的delay函数。
5. LED闪烁实验
在while (1)循环中,添加GPIO电平翻转代码和delay函数,即可完成实验。
6. 运行程序
通过keil编译下载后,使用reset按键复位F7,即可观测到LD1闪烁。
刚刚入门,如有错误之处,望指出。