本节使用定时器实现按键的消抖,之前一直使用的是空指令实现定时函数。空指令非常浪费CPU的性能,远不如使用定时器。最终实现的效果还是按下key就打开蜂鸣器,再按一下就关闭蜂鸣器。
可以看作是前面几节内容的一个合并。
定时器实现消抖
#include "bsp_key_filter.h"
/*初始化外部中断,也就是GPIO1_IO18*/
void key_filter_init(){
/*gpio初始化*/
_gpio_pin_config_t key_config;
IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18 ,0); //设置复用功能
IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18,0xf080); //设置电器属性
key_config.direction = kGPIO_INPUT; //设置输入输出
key_config.output_value = 1; //输出值
key_config.interrupt_mode = kGPIO_IntFallingEdge; //设置中断方式
gpio_init(GPIO1,18,&(key_config)); //配置GPIO