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<