STM32的外部中断是以组为单位,例如PA0、PB0、PC0、PD0、PE0、PF0、PG0共用外部中断0,我们再使用时从中选择一个座位外部中断0即可,其他中断类推。
外部中断包括EXTI0、EXTI1、EXTI2、EXTI3、EXTI4、EXTI9_5、EXTI15_10,Pin0--Pin4有各自独立的中断,
Pin5--Pin9共用一个中断,Pin10--Pin15共用一个中断。
中断号 Pin脚 EXTI0 Pin0 EXTI1 Pin1 EXTI2 Pin2 EXTI3 Pin3 EXTI4 Pin4 EXTI9_5 Pin5--Pin9 EXTI15_10 Pin10--Pin15
外部中断设置流程:
1 设置IO口
将IO口设置为输入状态。
GPIO_InitTypeDef GPIO_KEY;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOE, ENABLE); //时钟使能
GPIO_KEY.GPIO_Pin = GPIO_Pin_9;
GPIO_KEY.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_KEY.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入
GPIO_Init(GPIOB, &GPIO_KEY);2 设置中断优先级
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //设置组优先级
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; //设置通道中断号
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //从优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //通道使能
NVIC_Init(&NVIC_InitStructure);3 设置中断源
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //外部中断必须开启AFIO时钟
EXTI_ClearITPendingBit(EXTI_Line9); //清除EXTI线路挂起位 PB9
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9); //选择PB9作为EXTI线路
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中断请求
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
EXTI_InitStructure.EXTI_Line = EXTI_Line9 ; //PB9为中断源
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能该中断源
EXTI_Init(&EXTI_InitStructure);注:设置外部中断源时必须是来了个AFIO功能,否则中断得不到响应。
4 中断响应函数
void IRQ_EXTI9(void)
{
Pow_State += 1;
if(Pow_State%2 == 0)
{
Pow_State = 0;
}
}5 中断函数
void EXTI9_5_IRQHandler(void)
{
delay_ms(10);
if ( EXTI_GetITStatus(EXTI_Line9) != RESET )
{
NVIC_SETPRIMASK(); //关闭总中断
EXTI_ClearITPendingBit(EXTI_Line9);
IRQ_EXTI9();
NVIC_RESETPRIMASK();//开放总中断
}
}6 主函数
void Process_Key(void)
{
switch(Pow_State)
{
case 0:
LED_PWR_Off();
break;
case 1:
LED_PWR_On();
break;
default:
break;
}}
上一篇:STM32的AFIO口简介
下一篇:STM32端口复用和重映射(AFIO辅助功能时钟)
推荐阅读
史海拾趣
随着市场需求的不断增长,ALD不断拓展其产品线。除了最初的CMOS线性集成电路外,公司还研发出了轨到轨运算放大器、双斜率A/D前端转换器、电压比较器等一系列产品。这些产品不仅满足了不同行业的需求,还进一步提升了ALD在电子行业的市场地位。同时,公司还针对特定应用,如医疗仪器和汽车领域,推出了定制化的解决方案,赢得了客户的广泛赞誉。
Future Designs, Inc.(FDI)成立于几十年前,最初由一群在电子设计领域拥有丰富经验的工程师创立。他们看到市场上对于高质量、快速响应的触摸屏LCD图形用户界面(GUI)解决方案的需求日益增长,于是决定成立一家公司,专注于提供此类产品和服务。初创时期,FDI面临诸多挑战,包括资金短缺、市场认可度低以及技术难关等。然而,凭借团队成员的坚持不懈和专业技术,他们逐步攻克难关,开发出了ELI™和罗德里格斯™GUI家族产品,为公司赢得了初步的市场地位。
多年来,GAIA盖亚电源凭借其卓越的产品性能和专业的技术支持,赢得了众多知名客户的信赖和合作。这些客户涵盖了航空航天、军事、交通运输、工业自动化等多个领域。在与客户的合作过程中,GAIA盖亚电源不仅提供了高质量的产品和服务,还与客户共同研发了多项创新解决方案,帮助客户解决了许多技术难题。这些成功案例不仅彰显了GAIA盖亚电源的技术实力和市场竞争力,也为其在电子行业的发展奠定了坚实的基础。
Comtech AHA Corp自创立之初,便以技术创新为核心竞争力。公司研发团队不断攻克技术难关,推出了一系列具有自主知识产权的高性能电子产品。其中,一款具有自主知识产权的通信芯片在市场上取得了巨大成功,为公司带来了可观的收益。随着技术的不断迭代升级,Comtech AHA Corp逐渐在电子行业中占据了一席之地。
在光通信技术领域,ETRI也取得了显著成果。他们与Eldis公司合作,成功将一种电吸收调制光源(EML)商业化。这种光源能够在30公里内每秒传输250亿比特,且在高温和室温下都能稳定工作。这一技术的成功商业化,对于提高数据传输速度和效率具有重要意义。
PC式硬盘录像机死机全接触 九、零部件选用不当造成死机 少数人在给顾客组装硬盘录像机时,使用质量低劣的主板、内存,有的甚至出售冒牌主板和旧的CPU、内存,这样就会使机器在运行时很不稳定,发生死机也就在所难免。内存容量越大越好,至少大于 ...… 查看全部问答∨ |
|
先给我的代码, CW DATA 0F9FCH ;写指令 CR DATA 0F9FEH ;读状态 DIW DATA 0F9FDH ;写数据 DIR DATA 0F9FFH &nb ...… 查看全部问答∨ |
请问哪位知道现在用的比较普遍的板载网口控制芯片型号?开发比较方便的? 想用在局部以太网数据传输的,利用以太网接口实现主机和系统之间的数据传输 [ 本帖最后由 open82977352 于 2011-3-7 11:42 编辑 ]… 查看全部问答∨ |
请教IAR下面调STM32,下面这个关于CSTACK的错误改如何解决?谢谢! Wed Sep 23 10:46:56 2009: The stack \'CSTACK\' is filled to 100% (2048 bytes used out of 2048). The warning threshold is set to 90.%. BOOT选的是00.网上找了很多资料,还是清楚如何解决.板子是自己做的.调试工具用的STLINK… 查看全部问答∨ |
|
请教:在掌握51的基础上,进一步提高是学习ARM呢还是DSP好点呢?学习他们有什么分别? 我想请教大家,现在我对51有一定掌握了,想进一步提高一下,DSP和ARM学习那个好点呢?他们的应用前景怎样?学习起来难易程度又如何?我本人偏向DSP,DSP算法是 精髓,有的研究。这只是我个人看法,不知具体他们的情况如何,还望大家不吝赐教。… 查看全部问答∨ |
新手求教。除了传统的PWM输入捕获方式测PWM周期和占空比,还有其他方法可以实现么? 例如,信号输入Pin口外部中断exit(双边沿),开定时器TIM3,不同边沿中断时,记下不同的TIM3->cnt的值。 不知道这样可以否? 因为遇到了非TIMx输入通道的信号测频率和占空比问题,所以想到了这个方法。 请教下各位大大! 还有其他更好的方法 ...… 查看全部问答∨ |