历史上的今天
返回首页

历史上的今天

今天是:2025年08月15日(星期五)

正在发生

2018年08月15日 | stm32 中断一般配置

2018-08-15 来源:eefocus

配置是stm32外部中断步骤:
 1.使能IO时钟和AFIO时钟
  2.配置EXIT中断线
 3.配置中断控制器NVIC  (EXTI15_10_IRQn,EXTI4_IRQn)
 4.写中断服务子程序     (EXTI15_10_IRQHandler)
首先要明白中断IO对应的中断线EXTIx
其中
PA0-PE0     对应的是EXTI0
.......      . . ........
PA4-PE4     对应的是EXTI4
共用中断线
PA5-PE5   
......      对应的是EXTI9_5
......        
PA9-PE9
共用中短线    
PA10-PE10
.........   对应的是EXTI15_10 
.........
PA15-PE15

例子:

GPIO_InitTypeDef GPIO_InitStructur;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO,ENABLE);   //使能中断所需AFIO时钟
 GPIO_InitStructur.GPIO_Pin=GPIO_Pin_11;   
 GPIO_InitStructur.GPIO_Mode=GPIO_Mode_Out_PP;
 GPIO_InitStructur.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_Init(GPIOD,&GPIO_InitStructur);
 GPIO_SetBits(GPIOD,GPIO_Pin_11);
 
 GPIO_InitStructur.GPIO_Pin=GPIO_Pin_10;    //中断引脚
 GPIO_InitStructur.GPIO_Mode=GPIO_Mode_IPD;
 GPIO_InitStructur.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_Init(GPIOD,&GPIO_InitStructur);
 
 
 EXTI_InitTypeDef EXTI_InitStructure;   
 EXTI_ClearITPendingBit(EXTI_Line10);   //清除对应的外部中断线对应标志位
 GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource10);//中断io配置
 EXTI_InitStructure.EXTI_Line= EXTI_Line10;  //根据引脚设定外部中断线
 EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt; //中断模式
 EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿
 EXTI_InitStructure.EXTI_LineCmd=ENABLE;  //中断线使能
 EXTI_Init(&EXTI_InitStructure);
 
NVIC_InitTypeDef NVIC_InitStructure;   
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);  //中断优先级组
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; //中断io对应的通道
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //响应优先级
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //中断通道使能
NVIC_Init(&NVIC_InitStructure);
}
void EXTI15_10_IRQHandler()                      //中断服务程序
{
 
 
 if (EXTI_GetITStatus(EXTI_Line11) != RESET)
         EXTI_ClearITPendingBit(EXTI_Line10);  //清除中断标志位
}
 

注意在usos中不需要配置NVIC

一般只需要用ucos中的两个函数代替

 BSP_IntVectSet(BSP_INT_ID_EXTI15_10(中断IO对应通道),中断处理函数); 
 BSP_IntEn(BSP_INT_ID_EXTI15_10); //使能对应的中断通道


推荐阅读

史海拾趣

HN Electronic Components GmbH & Co Kg公司的发展小趣事

背景:进入21世纪后,随着全球化和互联网的发展,HN Electronics开始寻求更广阔的市场空间。

发展:公司决定拓展国际市场,首先在亚洲市场设立分支机构,随后进军欧洲和北美。为了加速国际化进程,HN Electronics与多家国际知名电子企业建立了战略合作关系,共同开发新产品。

关键事件:2005年,HN Electronics与韩国某知名电子企业签署合作协议,共同研发新一代显示驱动芯片,这一合作极大地提升了公司在显示技术领域的竞争力。

Corsair Memory Inc公司的发展小趣事

Corsair Memory Inc公司,由Don Lieberman、John Beekley与Andy Paul于1994年在美国加州佛利蒙创立。起初,公司专注于为英特尔系统生产Cache-On-A-Stick (COAST)模组。然而,随着英特尔将快取内存由主板移至处理器晶体中,Corsair迅速调整战略,将注意力转向电脑内存市场。这一转变不仅使Corsair避开了潜在的市场风险,更为其后续的内存业务奠定了坚实的基础。

EMBEST公司的发展小趣事

XXXX年,ARM公司投资了EMBEST,双方建立了紧密的战略合作关系。这一合作不仅为EMBEST带来了更多的技术支持和资源,也进一步巩固了其在ARM开发工具领域的领先地位。通过与ARM的紧密合作,EMBEST不断推出创新产品,满足市场的多样化需求。

FILTRONIC公司的发展小趣事

在快速发展的同时,FILTRONIC始终将品质管理和客户服务放在首位。公司建立了完善的质量管理体系和客户服务体系,从原材料采购、生产制造到产品检测、售后服务等各个环节都严格把关。同时,FILTRONIC还积极倾听客户需求,不断优化产品和服务,以满足客户不断变化的需求。这些努力使得FILTRONIC在客户中树立了良好的口碑和品牌形象。

Arduino公司的发展小趣事

随着Arduino电路板的成功推出,Arduino平台在2005年发布了第一款主板——Arduino NG。这款主板采用了Atmel公司的AVR单片机作为核心处理器,并结合了简单易用的开发环境。这一创新使得普通人也能够轻松地进行单片机编程和硬件开发,大大降低了电子制作的门槛。Arduino NG的发布标志着Arduino平台开始受到开发者和爱好者的广泛关注。

Applied Micro Circuits (MACOM)公司的发展小趣事

MACOM公司上市后,成功募得了充足的资金,使其财务能力得到了显著增强。这使得公司能够有更多的资源进行研发、生产和市场推广,进一步巩固其在电子行业的地位。同时,上市也为MACOM带来了更广泛的投资者关注和市场认可,为其未来的发展提供了有力支持。

问答坊 | AI 解惑

DSP培训讲义--TI CCS IDE集成开发环境

DSP 培 训 讲 义--TI CCS IDE集成开发环境…

查看全部问答>

我感觉做上位机,用DELPHI很好用啊

来自EEWORLD合作群:arm linux fpga 嵌入0(49900581)…

查看全部问答>

WINCE触摸屏抖动如何判断及解决

判断是否抖动方法:驱动直接打印信息,看看长按状态下坐标点漂移的是否厉害;或者按住拖动,产生虚线框,看看会不会跳动 请问各位大哥,此方法是否可行,应该如何解决抖动…

查看全部问答>

工控机或IBM服务器在server系统下备份的问题

工控机或IBM服务器在server系统下做备份,用一键GOHST软件无法备份,有没有其他方便又快捷的备份的工具或好的建议呢?请大家帮忙解决!!!…

查看全部问答>

关于do{}while()的一点疑问

在做stm32SPI 通信时 读取SST25VF016B 的状态寄存器 do { 读SST25VF016B状态寄存器 }while(state&0x01);    读SST25VF016B内擦除后的数据 与 do { 读SST25VF016B状态寄存器 }while(state==0x01); 读SST25VF016B内擦除后 ...…

查看全部问答>

重温纸质记忆,The Little Printer通过云端将社交网络内容打印成属于你的小报纸

在这个浮于云端、电子书和智能手机盛行的年代,始终有人保存着对纸制品的爱。这或许是因为纸的质感和物理存在感,也可能是因为数码给人带来的不安全感。我们不再写信,不那么需要已经存好了档的胶卷相片,不那么地需要一张CD。当Email,聊天记录, ...…

查看全部问答>

桥式整流电源与开关电源有什么区别

大家晚上好,有问题需要请教你们,桥式整流电源与开关电源有什么区别吗,需要详细说明,它们优缺点又是什么呢?…

查看全部问答>

程序本是想用于24c16,但是24c02OK,24c16就不行

main的程序:  串口打印输出的结果一直是0xff.  为什么呢? 谢谢! 用于24c02正常。   int main(void){         u8 i,datatemp[8];          union data //存 ...…

查看全部问答>

PIC单片机位操作

PIC单片机如何像51单片机那样可以位操作? void Lcd_Write_Com( int  DH)         //命令 {            LCD_RS=0; LCD_CS =0;          ...…

查看全部问答>

c语言中static用法总结1

本帖最后由 tiankai001 于 2014-10-17 15:15 编辑 一、c程序存储空间布局 C程序一直由下列部分组成:正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;初始化数据段(数据段)——在程序中所 ...…

查看全部问答>