ARM架构与编程——异常与中断实战:GPIO中断编程

该文详细介绍了如何在STM32微控制器上实现GPIO中断编程,特别是针对EXTI0引脚的按键中断。通过设置GPIO端口为输入模式,配置EXTI为双边沿触发,启用NVIC中断,以及编写中断服务函数EXTI0_IRQHandler,实现了按键按下和松开时的串口输出。同时,文中还强调了清除中断的重要性,包括EXTI和NVIC的中断清除步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GPIO中断编程

目的:实现KEY1中断,按下、松开按键,串口输出相应信息。
实现流程:
在这里插入图片描述

1.1 设置PA0为外部中断输入引脚

//key.c
#include "exti.h"
#include "nvic.h"
#include "string.h"

typedef struct
{
   
  volatile unsigned int EVCR;
  volatile unsigned int MAPR;
  volatile unsigned int EXTICR[4];
  volatile unsigned int RESERVED0;
  volatile unsigned int MAPR2;  
} AFIO_TypeDef;

void key_Init(void)
{
   
    AFIO_TypeDef *afio = (AFIO_TypeDef *)0x40010000;
    
    unsigned int *pReg;
    unsigned int *pRegA;
    
    /* 1.初始化GPIO引脚PA0,设置为输入引脚 */
    /* enable GPIOA*/
    pReg = (unsigned int *)(0x40021000 + 0x18);
    *pReg |= (1 << 3) | (1 << 2);
    
    
    /* 设置GPIOA0为输入 */
    pRegA = (unsigned int *)(0x40010800 + 0x00);
    *pRegA &= ~(3);     /* mode0 = 0b00 */
    *pRegA &= ~(3 << 2);    /* cnf0 = 0b00 */ 
    *pRegA |= (1<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值