K60几乎可以把任意一个GPIO用作外部中断
要用外部中断,就要配置好寄存器,写好中断函数
我这里用A口的19号引脚作为按键外部中断检测,A口的10号引脚做LED输出
void init_gpio()
{
gpio_init_struct.GPIO_PTx = PTA; //PORTA
gpio_init_struct.GPIO_Pins = GPIO_Pin19; //引脚6、7
gpio_init_struct.GPIO_Dir = DIR_INPUT; //输入
gpio_init_struct.GPIO_PinControl = INPUT_PULL_UP|IRQC_FA; //内部上拉|上升沿中断
gpio_init_struct.GPIO_Isr = porta_isr; //中断函数
LPLD_GPIO_Init(gpio_init_struct);
//使能中断
LPLD_GPIO_EnableIrq(gpio_init_struct);
gpio_init_struct.GPIO_PTx=PTA;
gpio_init_struct.GPIO_Pins = GPIO_Pin10;
gpio_init_struct.GPIO_Dir = DIR_OUTPUT;
gpio_init_struct.GPIO_Output = OUTPUT_H;
gpio_init_struct.GPIO_PinControl = IRQC_DIS;
LPLD_GPIO_Init(gpio_init_struct);
}
第五行的 gpio_init_struct.GPIO_Isr = porta_isr;是把中断函数的名字赋给GPIO_Isr,用来存中断函数的地址指针,然后使能中断
中断函数
void porta_isr()
{
if(LPLD_GPIO_IsPinxExt(PORTA, GPIO_Pin19))
{
//去抖
delay();
if(PTA19_I==0)
{
PTA10_O=0;
delay();delay();delay();
delay();delay();delay();
delay();delay();delay();
PTA10_O=1;
}
}
}
这个中断函数的名字就是给GPIO_Isr的值,GPIO的每一个PIN都有中断标志位,而LPLD_GPIO_IsPinxExt(PORTx, GPIO_Piny)就是PORTx的Piny端口的中断标志位。一旦产生中断,标志位为1,执行中断函数内容。
还有提示,这里的中断函数是要声明的,和51不一样,51的是可以不用声明的
关键字:K60 GPIO 外部中断
引用地址:
K60 GPIO外部中断
推荐阅读最新更新时间:2024-03-16 14:49
STM32F1的8种GPIO输入输出模式
输入模式 -输入浮空(GPIO_Mode_IN_FLOATING) -输入上拉(GPIO_Mode_IPU) -输入下拉(GPIO_Mode_IPD) -模拟输入(GPIO_Mode_AIN) 输出模式 -开漏输出(GPIO_Mode_Out_OD) -开漏复用功能(GPIO_Mode_AF_OD) -推挽式输出(GPIO_Mode_Out_PP) -推挽式复用功能(GPIO_Mode_AF_PP) 在STM32中选用IO模式 (1) 浮空输入_IN_FLOATING --浮空输入,可以做KEY识别,RX1 (2)带上拉输入_IPU--IO内部上拉电阻输入 (3)带下拉输入_IPD-- IO内部
[单片机]
STM32CubeMX系列教程3:基本定时器
这一章我们在前一章GPIO的工程修改。复制GPIO的工程,修改文件夹名。点击 打开STM32cubeMX的工程文件重新配置。开启定时器TIM3,选择内部时钟。 定时器就相当于单片机的闹钟,下面我们以基本定时器为例简单介绍一下定时器。 从上图我们可以看到,基本定时器主要由下面三个寄存器组成。 计数器寄存器 (TIMx_CNT) 预分频器寄存器 (TIMx_PSC) 自动重载寄存器 (TIMx_ARR) 计数器寄存器 (TIMx_CNT)存储的是当前的计数值。预分频器 (TIMx_PSC)为多少个SK_PSC脉冲计数一次,如图192 预分频器的值为1(预分频寄存器默认为0,为不分频),则为两个脉冲计数一次。即为
[单片机]
STM32F429之外部中断
7个中断通道在NVRC中使用 7个中断服务函数EXPORT EXTI9_5_IRQHandler 22个中断线 中断源为任意想要连接的GPIO,用那个连哪个SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0); 配置NVRC—配置GPIO(打开SYSCFG时钟)—连接中断源到GPIO—配置中断EXTI—编写中断服务函数 具体如下 STM32F4的每个IO都可以作为外部中断的中断输入口,这点也是STM32F4的强大之处。STM32F407的中断控制器支持22个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置
[单片机]
嵌入式-stm32学习:按键检测
bsp_key.h #ifndef __KEY_H #define __KEY_H #include stm32f4xx.h //引脚定义 /*******************************************************/ #define KEY1_PIN GPIO_Pin_0 //GPIO引脚号 #define KEY1_GPIO_PORT GPIOA //GPIO端口A #define KEY1_GPIO_CLK RCC_AHB1Periph_GPIOA //GPIO端口时钟 #define KEY2_
[单片机]
嵌入式学习笔记之GPIO详解
GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。在嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口都不合适。所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO。接口至少有两个寄存器,即“通用IO控制寄存器”与“通用IO数据寄存器”。数据寄存器的各位都直接引到芯片外部,而对这种寄存器中每一位的作用,即每一位的信号流通方向,则可以通过控制寄存器中对应位独
[网络通信]
stm32 GPIO配置以及什么时候用 GPIO_InitStructure
问题一:配置GPIO的步骤 现在做一个最简单的GPIO控制LED的 GPIO初始化 (1)初始化结构体 GPIO_InitTypeDef GPIO_InitStructure; (2)使能相应的时钟(程序最初应该有#define RCC_GPIO_LED GPIOB 或其他组端口) RCC_APB2PeriphClockCmd(RCC_GPIO_LED , ENABLE); (3)对GPIO结构体初始化。 GPIO结构体: typedef struct { uint16_t GPIO_Pin; //选择管脚,是你想用到的管脚 GPIOSpeed_TypeDe
[单片机]
为GPIO器件增加边缘敏感信号的瞬态检测功能
尽管有许多GPIO器件能够检测信号电平的上升沿和下降沿变化,但有些应用只需捕获信号的前沿,无需监测下降沿。对于这些GPIO器件,我们通过一个简单的电路就能提供边缘敏感信号的瞬态变化检测功能。
Maxim的几款GPIO器件能够检测信号电平的变化,并在信号恢复到初始状态后,仍然可以为这一变化提供标志记录。对于这些器件,无论是信号电平的上升沿,还是下降沿,都能够触发对事件的捕获。有些应用中,只把信号前沿作为监控事件;而下降沿通常标志着事件的结束,不需要对其进行监测。这些应用中,边缘敏感信号的瞬态检测十分必要。
如图1所示,利用几个RC元件和一个斯密特触发器,Maxim器件即可实现信号瞬变的检测,提供高度灵敏的边缘监测。RC电
[电源管理]
基于AT89C51的单线双机通信协议
一、绪言 因工作需要,设计一单线双向双机通讯协议。要求主机通过其所带的键盘能控制主机和从机的显示,从机也能通过所带的键盘控制主机和从机的显示,主机和从机键盘所起的控制作用完全一致,显示也完全一致。 另外,从机可以随时脱离主机。当从机从脱机状态连上主机时,要求从机能立即显示主机的键盘信息,即双机显示一致。 二、设计概况 1.整体时序: 2.主机接收数据从机发送数据的时序: 3.主机发送数据从机接收数据的时序: 4.符号说明: S :开始位 A :响应位 E :结束位 R :读端口 W :写端口 Dx:数据 5.主从机同步原理:
[安防电子]