蓝桥杯嵌入式cubeMX自动生成的gpio.c文件解析
创始人
2024-03-03 03:51:50
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里面复制参考自动生成的代码来写。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...