41
463
1389
助理工程师
使用特权
#include "exti.h" #include "led.h" #include "key.h" #include "delay.h" #include "usart.h" //Mini STM32开发板 //外部中断 驱动代码 //正点原子@ALIENTEK //2010/5/30 //外部中断0服务程序 void EXTI0_IRQHandler(void) { delay_ms(10);//消抖 if(KEY2==1) //按键2 { LED0=!LED0; LED1=!LED1; } EXTI->PR=1<<0; //清除LINE0上的中断标志位 } //外部中断15~10服务程序 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上的中断标志位 EXTI->PR=1<<15; //清除LINE15上的中断标志位 } //外部中断初始化程序 //初始化PA0,PA13,PA15为中断输入. void EXTIX_Init(void) { RCC->APB2ENR|=1<<2; //使能PORTA时钟 RCC->APB2ENR|=1<<0; //开启辅助时钟 AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24] AFIO->MAPR|=0X04000000; //关闭JTAG GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入 GPIOA->CRL|=0X00000008; GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入 GPIOA->CRH|=0X80800000; GPIOA->ODR|=1<<13; //PA13上拉,PA0默认下拉 GPIOA->ODR|=1<<15; //PA15上拉 Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发 Ex_NVIC_Config(GPIO_A,13,FTIR);//下降沿触发 Ex_NVIC_Config(GPIO_A,15,FTIR);//下降沿触发 MY_NVIC_Init(2,2,EXTI0_IRQChannel,2); //抢占2,子优先级2,组2 MY_NVIC_Init(2,2,EXTI15_10_IRQChannel,2);//抢占2,子优先级1,组2 }
#ifndef __EXTI_H #define __EXIT_H void EXTIX_Init(void);//IO初始化 #endif 这部分代码就很简单了,我们这里不多废话,保存就可以了。接着我们在test.c里面写入如下内容: #include <stm32f10x_lib.h> #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "key.h" #include "exti.h" //Mini STM32开发板范例代码4 //外部中断实验 //正点原子@ALIENTEK //2010.5.27 int main(void) { Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化 LED_Init(); //初始化与LED连接的硬件接口 EXTIX_Init(); //外部中断初始化 while(1) { printf("OK\n"); delay_ms(1000); } }
发表回复 本版积分规则 回帖后跳转到最后一页
1
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号