蓝桥杯嵌入式cubeMX自动生成的gpio.c文件解析
创始人
2024-03-03 08:45:52
0

文章目录

  • 前言
  • 一、如何生成gpio.c文件
  • 二、gpio.c内部实现
  • 总结


前言

这篇文章将带大家了解一下cubeMX自动生成的gpio.c文件。

一、如何生成gpio.c文件

在LED这篇文章中我们配置了控制LED的GPIO引脚,选择了PD2和PC8 PC9这三个引脚,并且将他们都设置为了输出引脚。
我们就只在cubeMX里面勾选了这些引脚并进行了设置,大家都知道自己去写GPIO引脚的初始化是有点复杂的,那么在cubeMX里面配置后就不需要写GPIO引脚的初始化代码了吗?其实使用cubeMX这个软件勾选这些引脚后,生成的工程里面已经帮我们完成了GPIO的配置。

在这里插入图片描述
勾选这个选项为每个模块生成独立的.c和.h文件,我们配置了GPIO相关的信息那么cubeMX就会为我们自动生成gpio.c和gpio.h这两个文件了。

二、gpio.c内部实现

在keil5左边可以看到生成的gpio.c文件。
在这里插入图片描述
进入void MX_GPIO_Init(void)这个函数查看GPIO引脚的初始化

GPIO初始化结构体
这个结构体里面包含了GPIO的各种参数设置,GPIO的引脚、GPIO的模式、速度等…

GPIO_InitTypeDef GPIO_InitStruct = {0};typedef struct
{uint32_t Pin;        /*!< Specifies the GPIO pins to be configured.This parameter can be any value of @ref GPIO_pins */uint32_t Mode;       /*!< Specifies the operating mode for the selected pins.This parameter can be a value of @ref GPIO_mode */uint32_t Pull;       /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.This parameter can be a value of @ref GPIO_pull */uint32_t Speed;      /*!< Specifies the speed for the selected pins.This parameter can be a value of @ref GPIO_speed */uint32_t Alternate;  /*!< Peripheral to be connected to the selected pinsThis parameter can be a value of @ref GPIOEx_Alternate_function_selection */
} GPIO_InitTypeDef;

使能GPIO引脚的时钟

/* GPIO Ports Clock Enable */__HAL_RCC_GPIOF_CLK_ENABLE();__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();

设置GPIO引脚的电平状态,这里为什么是RESET呢而不是SET,因为我们在cubeMX里面只设置了这些引脚作为输出引脚,其他的并没有设置,所以这些引脚默认会输出低电平。

  /*Configure GPIO pin Output Level */HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8|GPIO_PIN_9, GPIO_PIN_RESET);

cubeMX引脚默认设置:
通过GPIO Output Level这个选项可以知道这个引脚默认就被设置为低电平了。
在这里插入图片描述
引脚的一些配置
HAL_GPIO_Init这个函数就是将下列这些设置好的参数都设置进GPIO。

  /*Configure GPIO pins : PC8 PC9 */GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;//配置为推挽输出模式GPIO_InitStruct.Pull = GPIO_NOPULL;//无上拉电阻GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;//低速模式HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);//将这些设置好的参数设置进GPIO

总结

大家掌握了这个gpio.c文件后就可以不用去cubeMX里面修改这些引脚的输出电平等信息了。
初学者对于这些函数也不是很熟悉,告诉大家一个技巧可以直接在gpio.c里面复制参考自动生成的代码来写。

相关内容

热门资讯

美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...