?? exti.c
字號:
#include "exti.h"
#include "led.h"
#include "key.h"
#include "delay.h"
#include "usart.h"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途
//Mini STM32開發(fā)板
//外部中斷 驅(qū)動代碼
//正點原子@ALIENTEK
//技術(shù)論壇:www.openedv.com
//修改日期:2010/12/01
//版本:V1.0
//版權(quán)所有,盜版必究。
//Copyright(C) 正點原子 2009-2019
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
//外部中斷0服務(wù)程序
void EXTI0_IRQHandler(void)
{
delay_ms(10);//消抖
if(KEY2==1) //按鍵2
{
LED0=!LED0;
LED1=!LED1;
}
EXTI->PR=1<<0; //清除LINE0上的中斷標(biāo)志位
}
//外部中斷15~10服務(wù)程序
void EXTI15_10_IRQHandler(void)
{
delay_ms(10); //消抖
if(KEY0==0) //按鍵0
{
LED0=!LED0;
}else if(KEY1==0)//按鍵1
{
LED1=!LED1;
}
EXTI->PR=1<<13; //清除LINE13上的中斷標(biāo)志位
EXTI->PR=1<<15; //清除LINE15上的中斷標(biāo)志位
}
//外部中斷初始化程序
//初始化PA0,PA13,PA15為中斷輸入.
void EXTIX_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA時鐘
JTAG_Set(JTAG_SWD_DISABLE);//關(guān)閉JTAG和SWD
GPIOA->CRL&=0XFFFFFFF0;//PA0設(shè)置成輸入
GPIOA->CRL|=0X00000008;
GPIOA->CRH&=0X0F0FFFFF;//PA13,15設(shè)置成輸入
GPIOA->CRH|=0X80800000;
GPIOA->ODR|=1<<13; //PA13上拉,PA0默認(rèn)下拉
GPIOA->ODR|=1<<15; //PA15上拉
Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿觸發(fā)
Ex_NVIC_Config(GPIO_A,13,FTIR);//下降沿觸發(fā)
Ex_NVIC_Config(GPIO_A,15,FTIR);//下降沿觸發(fā)
MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); //搶占2,子優(yōu)先級2,組2
MY_NVIC_Init(2,1,EXTI15_10_IRQChannel,2);//搶占2,子優(yōu)先級1,組2
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -