完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
/*实现功能:按键之前D2常亮;
按下INT2键(C13端口,对应EXti13外部中断线),进入中断程序D2常灭,恢复后D2常亮*/ #include "STM32f10x.h" /*****************************/ void LED_GPIO_Config() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE); //开启GPIO_G外设时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; //板上LED编号 D2 PG14 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置引脚速率 GPIO_Init(GPIOG, &GPIO_InitStructure); //调用库函数,初始化GPIO_G GPIO_SetBits(GPIOG,GPIO_Pin_14); //点亮D2 } void NVIC_Config(void) //NVIC中断控制器初始化配置 { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //设置中断优先级分组1 NVIC_InitStructure.NVIC_IRQChannel =EXTI15_10_IRQn; //设定中断源为EXTI13 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //中断占优先级为0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //副优先级为0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能中断 NVIC_Init(&NVIC_InitStructure); } void EXTI_Config(void) //外部中断配置 PC13 { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE); NVIC_Config(); /*EXTI LINE GPIO CONFIG */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //C13 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //上拉输入 GPIO_Init(GPIOC, &GPIO_InitStructure); /*EXTI LINE MODE CONFIG*/ GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13); EXTI_InitStructure.EXTI_Line = EXTI_Line13; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中断模式为中断模式 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿出发 EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能中断线 EXTI_Init(&EXTI_InitStructure); //根据参数初始化中断寄存器 } EXTI15_10_IRQHandler() //外部中断13中断服务函数 { if(EXTI_GetITStatus(EXTI_Line13)!=RESET) //进入中断后,调用EXTI_GetITStatus()函数再次检查是否产生了EXTI_Line中断 { EXTI_ClearFlag(EXTI_Line13); GPIO_ResetBits(GPIOG,GPIO_Pin_14); //灭D2 EXTI_ClearITPendingBit(EXTI_Line13); //清除中断标志位再退出中断服务程序 } } int main() { LED_GPIO_Config(); EXTI_Config(); while(1); } |
|
相关推荐
3个回答
|
|
NVIC程序没调用,你做一下仿真看看,程序应该进不了中端
|
|
|
|
NVIC没初始化,你进个毛的中断
|
|
|
|
建议楼主还好好读读对应手册的中断使用篇,研究下怎么使用中断为好!!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1063 浏览 0 评论
693 浏览 0 评论
嵌入式学习-搭建自己的ubuntu系统之ubuntu网络设置
828 浏览 0 评论
龙芯中科胡伟武:3B6600 八核桌面 CPU 性能将达到英特尔中高端酷睿 12~13 代水平
892 浏览 0 评论
树莓派Pico 2发布,搭载RP2350双核RISC-V和Arm Cortex-M33微控制器!
843 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10784 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-20 10:25 , Processed in 0.462947 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号