完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1.软件及工程环境搭建
/******************************************************* *函数名:Exit_Init *功 能:中断初始化 *参 数:无 *返 回:无 *备 注:注意开启PA0,PD2的PC12的映射SYSCFG时钟 ,使能外部中断 ********************************************************/ void Exit_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);//开启SYSCFG时钟,简称重映射 EXTI_InitTypeDef Exit_Key1,Exit_Key2,Exit_Key3;//定义外部中断结构体变量 // //key1 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0); //映射到PA0引脚到EXTI Exit_Key1.EXTI_Line = EXTI_Line0; //选择EXTI0 Exit_Key1.EXTI_Mode = EXTI_Mode_Interrupt; // 选择模式(中断) Exit_Key1.EXTI_Trigger = EXTI_Trigger_Rising;//选择上升沿触 Exit_Key1.EXTI_LineCmd = ENABLE;//启用EXTI0 EXTI_Init(&Exit_Key1);//写入EXTI初始化 NVIC_EnableIRQ(EXTI0_IRQn);//使能外部中断0线进行工作 //key2 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD,EXTI_PinSource2); //映射到PD2引脚到EXTI2 Exit_Key2.EXTI_Line = EXTI_Line2; //选择EXTI2 Exit_Key1.EXTI_Mode = EXTI_Mode_Interrupt; // 选择模式(中断) Exit_Key2.EXTI_Trigger = EXTI_Trigger_Falling;//选择下升沿触 Exit_Key2.EXTI_LineCmd = ENABLE;启用EXTI2 EXTI_Init(&Exit_Key2);//写入EXTI初始化 NVIC_EnableIRQ(EXTI2_IRQn);//使能外部中断2线进行工作 //key3 SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC,EXTI_PinSource12); //映射到PC12引脚到EXTI3 Exit_Key3.EXTI_Line = EXTI_Line12; //选择EXTI12 Exit_Key3.EXTI_Mode = EXTI_Mode_Interrupt; // 选择模式(中断) Exit_Key3.EXTI_Trigger = EXTI_Trigger_Falling;//选择下升沿触 Exit_Key3.EXTI_LineCmd = ENABLE;//启用EXTI3 EXTI_Init(&Exit_Key3);//写入EXTI初始化 NVIC_EnableIRQ(EXTI15_10_IRQn);//由于没有EXTI12,所以使能外部中断15_10线进行工作 } (主要的来了来了,他来了)按键key中断点击控制led灯开和关 /******************************************************* *函数名:EXTI0_IRQHandler *功 能:按键一中断 *参 数:无 *返 回:无 *备 注:注意挂起寄存器(清0) ********************************************************/ int EXTI1_flag; void EXTI0_IRQHandler(void)//由中断自动触发 { EXTI_ClearFlag(EXTI_Line0); //挂起寄存器PA0 EXTI1_flag++; if(EXTI1_flag%2) GPIO_ResetBits(GPIOC,GPIO_Pin_13); else GPIO_SetBits(GPIOC,GPIO_Pin_13); } /******************************************************* *函数名:EXTI0_IRQHandler *功 能:按键二中断 *参 数:无 *返 回:无 *备 注:注意挂起寄存器(清0) ********************************************************/ int EXTI2_flag; void EXTI2_IRQHandler(void)//由中断自动触发 { EXTI_ClearFlag(EXTI_Line2); //挂起寄存器PD2 EXTI2_flag++; if(EXTI2_flag%2) GPIO_ResetBits(GPIOC,GPIO_Pin_10); else GPIO_SetBits(GPIOC,GPIO_Pin_10); } /******************************************************* *函数名:EXTI0_IRQHandler *功 能:按键三中断 *参 数:无 *返 回:无 *备 注:注意挂起寄存器(清0) ********************************************************/ int EXTI3_flag; void EXTI15_10_IRQHandler(void) { EXTI3_flag++; if(EXTI3_flag%2) GPIO_ResetBits(GPIOC,GPIO_Pin_11); else GPIO_SetBits(GPIOC,GPIO_Pin_11); EXTI_ClearFlag(EXTI_Line12); //挂起寄存器PC2 } 主函数调用相关的函数 LEDInit();//LED初始化 Exit_Init();//中断初始化 while(1) { //是不是很激动,这里什么都不用写,哈哈 }
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1115 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1140 浏览 1 评论
572 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
428 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1026 浏览 2 评论
1612浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
280浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
290浏览 3评论
274浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
250浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-20 10:31 , Processed in 0.896155 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号