STM32_按键

该文使用函数指针来实现按键的扫描,以确保代码具有更好的移植性

函数指针

1、直接定义

例如我们按键扫描时会调用HAL_GPIO_ReadPin()函数,具体的函数声明如下:

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

那么定义该函数的函数指针,只需将函数名换成(*p)即可,具体定义如下:

GPIO_PinState (*p)(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin) = HAL_GPIO_ReadPin;

这样我们就定义好了一个函数指针,这个指针p指向函数HAL_GPIO_ReadPin()

2、别名定义

上述定义的函数指针太长,可以使用typedef来进行别名,具体别名如下:

typedef GPIO_PinState (*KEY_Type)(GPIO_TypeDef*,uint16_t);

这样别名之后,KEY_Type就替代了typedef GPIO_PinState (*)(GPIO_TypeDef*,uint16_t)这一部分。之后定义指针类型只需使用KEY_Type即可,具体定义如下:

KEY_Type KEY_Fun = HAL_GPIO_ReadPin;

这样我们就定义好了一个函数指针,这个指针KEY_Fun指向函数HAL_GPIO_ReadPin()

3、调用

使用函数指针,并不需要像其他指针一样用*去取值。只需直接使用指针即可。比如要实现HAL_GPIO_ReadPin的功能,具体使用方法如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值