【NUCLEO-L476RG开发】第一篇:GPIO简单操作—点亮LED
拿到476的板子也有一小会了,一直忙着没来得及研究,终于今天有空了,拿出来看看。
一个新的板子拿到手里都会先研究下GPIO,最常做的就是点亮一个LED,当然首次接触STM32F476,我也是先从GPIO做起。
一,准备工作
现在STM32出了越来越多的芯片,而且从去年开始推出了,底层代码神器,STM32CubeMx,当然对于大多数从寄存器做起的大神,可能这不算什么,可是对于很多初学者,或者很多新手,不用看底层寄存器确实还是有一些好处的,特别是L476常达1600多页的PDF,对于很多人来说就像噩梦一样!
准备工作主要有三个:
1、安装STM32cubemx及L4的库,这个方法教程太多了,百度各种都有
2、安装KEIL软件,这边我推荐用keil,原因很多啦,主要还是ARM支持KEIL,当然肯定是优势很多了。
3、当然是安装ST_LINK的驱动,NUCLEO是支持ST_LINK下载的,ST_LINK的驱动在论坛就有,大家直接下载集成驱动包会比较好一点,最好使用最新的,最新的好像是V3.6版本了。我记得文件名字是STSW-LINK004
闲话少说,前言少叙,这边我们就首先打开cubemx新建一个项目,这边我给大家提醒的是,我们选择NUCLEO L476RG后,出现的界面是官方默认的设置,我建议很多新手不要去改,因为这些GPIO设置是官方已经设定好了,当然如果你很懂那就无所谓了,如下图所示:
然后点击生成代码,当然这边会让你设定目录和项目名称,需要注意的是目录不要有中文噢,不然会很麻烦的
二、正式开始
用keil打开生成的代码。其实要修改的很简单,主要是因为cubemx已经给你做了很多工作了,所以你的工作很简单,如下在main.c中添加红色的部分,那么就可以操作L476上边的LED2了,可以看见这个灯每隔一秒亮一次灭一次。
int main(void)
{
/*USER CODE BEGIN 1 */
/*USER CODE END 1 */
/*MCU Configuration----------------------------------------------------------*/
/*Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/*Initialize all configured peripherals */
MX_GPIO_Init();
/*USER CODE BEGIN 2 */
/*USER CODE END 2 */
/*Infinite loop */
/*USER CODE BEGIN WHILE */
while (1)
{
/*USER CODE END WHILE */
/*USER CODE BEGIN 3 */
HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_SET);
HAL_Delay(1000);
HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_RESET);
HAL_Delay(1000);
}
/*USER CODE END 3 */
}
三、代码分析
这个代码其实很多部分我们都不需要干涉,因为底层已经帮我们设定好了,特别是如果你采用官方默认的cubemx的设定的话,在第一张图中就表示,那些IO是什么功能,需要什么模式,都已经设定好了,当然频率等等,我们都采用的默认配置,主要就是红色的部分使我们自己添加的,那么红色的部分是什么意思呢,实际上就是HAL库的两个函数:
1、 HAL_GPIO_WritePin,总共有三个参数:第一个是GPIOA,及你要设定的是GPIOA,第二个是LD2_Pin,实际是PIN5,那么前两个参数的意思就是,我们要设定GPIOA5的值,实际上第三个GPIO_PIN_SET和GPIO_PIN_RESET就是1或者0的意思。这边需要注意的是L476自带的是PA5高电平才能点亮灯,如图是原理图:
2、HAL_Delay,参数就一个,就是要延时的ms值。
四、总结
其实看到此处很多人可能会感觉,这些都是入门级别要知道的知识,其实也正是体现了cubemx的强大之处,只要一会会,一个新手就懂得操作GPIO了,实际上操作只能操作GPIO也可以做很多事情,再加上延时,甚至可以做一些简单的东西玩玩,比如操作继电器,做流水灯,花样灯等等。我的第一篇就用一个GPIO的操作开始,第二篇会带来一些有意思的东西。
注:附件里边是源代码,欢迎下载。
|