学习单片机的人,一般都是先点亮一个LED,获取成就感,然后就是打印一个Hello Word!向世界问好。今天的目标就是点灯和打印。
硬件:野火STM32F429挑战者开发板;软件:STM32Cube MX和Keil 5。
打开STM32Cube MX,按照顺序,配置调试口、时钟。开发板使用的外部高速时钟频率为25MHz;
配置一个LED的引脚,查看开发板的电路图,知道PH10,PH11,PH12为LED的引脚;配置一个PH10作为演示;直接在Pinout&Configuration下,右边的PH10上单击,可以看到PH10引脚所有的功能,点击需要的功能即可。以PH10为例,可以作为复位状态位的输出、DCMI_D1脚、FMC_D18、LTDC_R4、定时器5的1通道、GPIO的输入、GPIO的输出、GPIO的模拟输入、事件输出、外部中断引脚。同一个引脚只能作为一个功能,不可以同时作为多个功能。
本次是要点亮LED灯,所以选择GPIO输出。
然后配置串口。开发板使用的串口转USB使用的是PA9和PA10
知道是串口1,在左侧使能串口1
这样LED和USART1已经配置完成了。然后配置文件名称以及路径使用的编译器(见《STM32Cube学习笔记-软件下载安装及基本配置》)。然后配置Code Generator(这么配置的原因见《STM32Cube学习笔记-软件下载安装及基本配置》).
然后生成代码,打开代码直接进行编译,是可以编译通过的,然后进行分析。
main.c开始的代码,包括的头文件。
我们看到在文件中有很多的USER CODE BEGIN 和USER CODE END。此次提示,自己编写的代码一定要写到USER CODE BEGIN 和USER CODE END之间。因为有可能你在配置的时候配置错误了,如果不把自己编写的逻辑代码写在USER CODE BEGIN 和USER CODE END之间,当你通过STM32Cube修改了配置重新生成代码的时候,自己编写的代码将会消失。
void SystemClock_Config(void);这个是系统时钟配置,不用管;
进入到main函数。 HAL_Init();是HAL初始化函数,不用管;
GPIO引脚的初始化和串口的初始化。找到MX_GPIO_Init(void):
首先是对A组、B组、H组的引脚时钟进行了使能,然后对PH10进行了配置,并写PH10设置为RESET.可以看出来,最重要的函数就是HAL_GPIO_WritePin( ...)最重要.那么我们就想,如何让引脚置高?如何让引脚置低?如何让引脚翻转?去找库函数。
打开stm32f4xx_hal_gpio.h
我们找到了一堆的库函数,包括读取引脚状态,写引脚,跳变引脚,外部中断等等。
那么我们在main函数中的while中写入
HAL_GPIO_TogglePin(GPIOH,GPIO_PIN_10);
HAL_Delay(500);
意思是每隔500msPH10跳变一次。
方法类似,对于串口,找到库文件中的函数;
生成的函数更多一点。
如果要打印,则需要依赖stdio.h
因此在usart.h中加入
编写futc函数。
huart1是句柄,ch是发送的东西,1是发送数据的长度。然后在main函数的while中写入printf("Hello Word!\r\n");
编译下载试一下。
测试成功。
本文主要介绍了使用SMT32Cube配置基本的GPIO引脚和使用串口打印的功能。希望大家指正。