Cortex-A7中断详解(四)

按键中断驱动文件编写

以中断的方式编写KEY按键驱动,当按下KEY以后触发GPIO中断,然后在中断服务函数里控制蜂鸣器的开关。

接下来就是要编写按键KEY对应的UART1_CTS这个IO的中断驱动

#ifndef _BSP_EXTI_H
#define _BSP_EXTI_H
#include "imx6ul.h"

/*函数声明*/
void exit_init(void);
void gpio1_io18_irqhandler(void);

#endif
#include "bsp_exti.h"
#include "bsp_gpio.h"
#include "bsp_int.h"
#include "bsp_delay.h"
#include "bsp_beep.h"

void exit_init(void)
{
	gpio_pin_config_t key_config;

	/*设置IO复用*/
	IOMUXC_SetPinMux(IOMUXC_UART1_CTS_B_GPIO1_IO18, 0);
	IOMUXC_SetPinConfig(IOMUXC_UART1_CTS_B_GPIO1_IO18,0xF080);

	/*初始化GPIO为中断模式*/
	key_config.direction = kGPIO_DigitalInput;
	key_config.interruptMode = kGPIO_IntFallingEdge;
	key_config.outputLogic = 1;
	gpio_init(GPIO1, 18, &key_config);
	/*使能GIC中断、注册中断服务函数、使能GPIO中断*/
	GIC_EnableIRQ(GPIO1_Combined_16_31_IRQn);
				system_register_irqhandler(GPIO1_Combined_16_31_IRQn,system_register_irqhandler(GPIO1_Combined_16_31_IRQn, (system_irq_handler_t)gpio1_io18_irqhandler, NULL);
	gpio_enableint(GPIO1, 18);	
}

void gpio1_io18_irqhandler(void)
{
	static unsigned char state = 0;

	delay(10);
	if(gpio_pinread(GPIO1, 18) == 0)
	{
		state = !state;
		beep_switch(state);
	}
	gpio_clearintflags(GPIO1, 18)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饼干饼干圆又圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值