微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM学习笔记--STM32F10X中断

STM学习笔记--STM32F10X中断

时间:09-16 来源:互联网 点击:

EXTICR只用到了低16位,高16位保留。

typedef struct

{

vu32 EVCR;

vu32 MAPR;

vu32 EXTICR[4];

} AFIO_TypeDef

EXTICR[0] 对应于EXTI0[3:0],EXTI1[3:0],EXTI2[3:0],EXTI3[3:0]

EXTI0[3:0] 外部中断线0

0000àPA[0] 0001àPB[0] 0010àPC[0] 0011àPD[0] 0100àPE[0] 0101àPF[0] 0110àPG[0]

EXTI1[3:0] 外部中断线1

0000àPA[1] 0001àPB[1] 0010àPC[1] 0011àPD[1] 0100àPE[1] 0101àPF[1] 0110àPG[1]

EXTI2[3:0] 外部中断线2

0000àPA[2] 0001àPB[2] 0010àPC[2] 0011àPD[2] 0100àPE[2] 0101àPF[2] 0110àPG[2]

EXTI3[3:0] 外部中断线3

0000àPA[3] 0001àPB[3] 0010àPC[3] 0011àPD[3] 0100àPE[3] 0101àPF[3] 0110àPG[3]

EXTICR[1] 对应于EXTI4[3:0],EXTI5[3:0],EXTI6[3:0],EXTI7[3:0] 外部中断线4~7

EXTICR[2] 对应于EXTI8[3:0],EXTI9[3:0],EXTI10[3:0],EXTI11[3:0] 外部中断线8~11

EXTICR[3] 对应于EXTI12[3:0],EXTI13[3:0],EXTI14[3:0],EXTI15[3:0] 外部中断线12~15

/////////////////////////////////////////////////////////////////

//Ex_NVIC_Config专用定义

#define GPIO_A 0

#define GPIO_B 1

#define GPIO_C 2

#define GPIO_D 3

#define GPIO_E 4

#define GPIO_F 5

#define GPIO_G 6

#define FTIR 1 //下降沿触发

#define RTIR 2 //上升沿触发

BITx 范围为0~15,对应于IO口的位,对于外部中断线。

//外部中断配置函数

//只针对GPIOA~G;不包括PVD,RTC和USB唤醒这三个

//参数:GPIOx:0~6,代表GPIOA~G;BITx:需要使能的位;TRIM:触发模式,1,下升沿;2,上降沿;3,任意电平触发

//该函数一次只能配置1个IO口,多个IO口,需多次调用

//该函数会自动开启对应中断,以及屏蔽线

void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)

{

u8 EXTADDR;

u8 EXTOFFSET;

EXTADDR=BITx/4;//得到中断寄存器组的编号 2/4=0

EXTOFFSET=(BITx%4)*4; (2%4)*4 = 8

RCC->APB2ENR|=0x01;//使能io复用时钟

AFIO->EXTICR[EXTADDR]&=~(0x000F<

AFIO->EXTICR[EXTADDR]|=GPIOx<

//自动设置

EXTI->IMR|=1<

if(TRIM&0x01)

{

EXTI->FTSR|=1<

}

if(TRIM&0x02)

{

EXTI->RTSR|=1<

}

}

EXTADDR=BITx/4;得到中断寄存器的编号0~4 BITx

EXTOFFSET=(BITx%4)/4;得到中断寄存器的偏移量 0,4,8,12

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top