找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
MakerMare-创客海社区 门户 查看主题

STM32教程(五)HAL库之GPIO函数及实例详细介绍!

发布者: 凡哥 | 发布时间: 2019-3-10 08:52 PM| 查看数: 191| 评论数: 0|帖子模式

目前支持微信扫码直接登陆 或邮箱验证注册登陆,结交更多好友,享用更多功能,让你轻松玩转社区!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
今天介绍STM32 HAL库的GPIO函数库,首先打开stm32f4xx_hal_gpio.h文件,我们能看到一些结构体定义以及GPIO引脚的地址定义等等,

u=1260365131,2683402580&fm=173&app=25&f=JPEG.jpg
这些都很好理解,我们需要重点看HAL库中GPIO的函数库有哪些?以及这些函数库有什么作用以及怎么使用这些函数?我们找到有以下8个函数
u=1430980011,3567467901&fm=173&app=25&f=JPEG.jpg
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
下面我们逐一介绍这8个函数:
1、void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
u=3229343491,619988248&fm=173&app=25&f=JPEG.jpg

这个函数我们在stm32f4xx_hal_gpio.c文件中找到它的实体,可以很清楚的看到它的解释(不过是英文,需要点英文基础,不过有不认识的单词可以自己使用工具去翻译),这个函数主要用来初始化我们需要用到的引脚的工作模式,包括具体引脚的工作速度、是否复用模式、上下拉等等参数。
2、void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);
u=1244411283,3593149658&fm=173&app=25&f=JPEG.jpg

这个函数的主要功能是将我们在1函数初始化之后的引脚恢复成默认的状态,即各个寄存器复位时的值。这个函数比较容易理解。
3、GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
u=3835371475,2548496027&fm=173&app=25&f=JPEG.jpg

这个函数主要功能是读取我们想要知道的引脚的电平状态、函数返回值为0或1。
4、void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
u=3728261543,764673625&fm=173&app=25&f=JPEG.jpg

这个函数从字面意思来看就是给某个引脚写0或1,但是不要理解成,写1就是使能之类的意思,有些寄存器写1是擦除的意思,这一点要谨记。
5、void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
u=1783009812,1936178820&fm=173&app=25&f=JPEG.jpg

这个函数用来翻转某个引脚的电平状态,我用的最多的场合是LED灯的翻转,也就是LED闪烁,哈哈。
6、HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
u=4287291295,1432052446&fm=173&app=25&f=JPEG.jpg

这个函数看函数名称就是锁住的意思,比如说一个管脚的当前状态是1,读管脚值使用锁定,当这个管脚电平变化时保持锁定时的值。
7、void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
u=728630294,2178538296&fm=173&app=25&f=JPEG.jpg

这个函数是外部中断服务函数,用来响应外部中断的触发,函数实体里面有两个功能,1是清除中断标记位,2是调用下面8要介绍的回调函数。很好理解,我们学习51单片机的时候肯定用过中断服务函数。
8、void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
u=2096245687,3986267288&fm=173&app=25&f=JPEG.jpg

这个函数是中断回调函数,可以理解为中断函数具体要响应的动作。
以上就是关于STM32 HAL库GPIO的函数的介绍。
基于之前的教程的模板,我只要在while(1)里面添加一句代码就可以实现点亮LED了。
我只需要调用HAL_GPIO_WritePin()函数,填好参数就可以了。
u=1028549493,174242739&fm=173&app=25&f=JPEG.jpg

HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);
至此,关于STM32 HAL库GPIO的介绍就先告一段落了,下期讲STM32的启动过程,即STM32是怎么从上电一直运行到main()函数里的。

最新评论