历史上的今天
返回首页

历史上的今天

今天是:2024年11月10日(星期日)

正在发生

2021年11月10日 | stm32中断配置(NVIC)

2021-11-10 来源:eefocus

内嵌向量中断控制器:Nested Vectored Interrupt Controller (NVIC)


NVIC优先级结构体定义:

typedef struct

{

  uint8_t NVIC_IRQChannel;                    /*!< Specifies the IRQ channel to be enabled or disabled */


  uint8_t NVIC_IRQChannelPreemptionPriority;         /*!< 主中断优先级范围:0-16 */


  uint8_t NVIC_IRQChannelSubPriority;                     /*!<从优先级 范围:0-16 */


  FunctionalState NVIC_IRQChannelCmd;              /*     IRQ通道使能   */   

} NVIC_InitTypeDef;


中断原理:

线 0~15:对应外部 IO 口的输入中断。

线 16:连接到 PVD 输出。

线 17:连接到 RTC 闹钟事件。

线 18:连接到 USB 唤醒事件。


STM32 供 IO 口使用的中断线只有 16 个,但是 STM32 的 IO 口却远远不止 16 个,那么 STM32 是怎么把 16 个中断线和 IO 口一一对应起来的呢?于是 STM32 就这样设计,GPIO 的管教 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线 0~15。这样每个中断线对应了最多 7 个 IO 口,以线 0 为例:它对应了 GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0、GPIOG.0。而中断线每次只能连接到 1 个 IO 口上,这样就需要通过配置来决定对应的中断线配置到哪个 GPIO 上了


中断线

typedef struct

{

  uint32_t EXTI_Line;               /*!<      */

   

  EXTIMode_TypeDef EXTI_Mode;       /*!< 模式*/


  EXTITrigger_TypeDef EXTI_Trigger; /*!< 触发方式 */


  FunctionalState EXTI_LineCmd;     /*!<  使能或禁止 */

}EXTI_InitTypeDef;


外部中断de应用:

void init_interrupt(){

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);    //使能复用功能时钟       EXTI_InitTypeDef EXTI_InitStructure;

       NVIC_InitTypeDef NVIC_InitStructure;


//中断线及触发方式配置


   //GPIOE.3      中断线以及中断初始化配置 下降沿触发 //按键

      GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);

      EXTI_InitStructure.EXTI_Line=EXTI_Line3;

      EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;    

      EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

      EXTI_Init(&EXTI_InitStructure);          //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器


//中断通道及优先级配置!!


      NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;            //使能按键KEY1所在的外部中断通道

      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;   //抢占优先级2

      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;          //子优先级1

      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //使能外部中断通道

      NVIC_Init(&NVIC_InitStructure);        //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器


}


void EXTI3_IRQHandler(void)   //中断处理

{

    delay_ms(10);

    if(KEY==0)     //按键 按下

    {                

       beep_on;//蜂鸣器响

    }        

    EXTI_ClearITPendingBit(EXTI_Line3);  //清除LINE3上的中断标志位(必须清掉) 

}

推荐阅读

史海拾趣

飞虹(FeiHong)公司的发展小趣事

在稳步发展的同时,苏州锋驰也积极拓展对外合作与投资。公司共对外投资了3家企业,并通过这些投资进一步拓宽了业务范围和市场渠道。这些合作不仅为苏州锋驰带来了更多的技术资源和市场机会,也增强了公司的综合竞争力。同时,公司还积极与上下游企业建立紧密的合作关系,形成了良好的产业生态。

Bomar公司的发展小趣事

Bomar公司成立于1963年,最初是一家专注于石英晶体制造的公司。在当时的电子行业,石英晶体作为频率控制元件,对于无线通信和电子设备的稳定运行至关重要。Bomar公司通过不断的研发和技术创新,成功突破了石英晶振在宽频率范围内的高稳定性问题,满足了严格的FCC规范。这一技术突破使得Bomar公司的石英晶振在市场上获得了广泛的认可,并为公司的发展奠定了坚实的基础。

Acopian Power Supplies公司的发展小趣事

近年来,随着物联网和人工智能技术的快速发展,智能化物流成为了电子行业的新趋势。Bomar公司敏锐地捕捉到了这一市场机遇,开始将业务范围拓展至智能化物流领域。通过与深兰科技等公司的合作,Bomar公司成功推出了智能化物流、仓储装备以及清洁机器人等产品,并成功销往欧洲市场。这些产品的推出不仅提升了Bomar公司的市场竞争力,也为公司的未来发展开辟了新的增长点。

ANADIGICS公司的发展小趣事

90年代初,电子行业的竞争日益激烈,Bomar公司为了保持市场领先地位,开始寻求与全球优秀制造商的合作。在这一背景下,公司与一些精选的亚洲工厂建立了密切的合作关系。这些工厂按照Bomar公司的规格和标准进行生产,确保了产品质量的稳定性和一致性。通过与亚洲工厂的合作,Bomar公司成功降低了生产成本,提高了生产效率,进一步巩固了其在全球市场的地位。

Anaren Ceramics公司的发展小趣事

Anaren Ceramics公司在电子行业中崭露头角,首先得益于其在陶瓷材料技术方面的重大突破。公司研发了一种新型的陶瓷材料,具有优异的绝缘性能和高温稳定性,这为当时的电子行业提供了前所未有的解决方案。随着这种新型陶瓷材料在市场上的广泛应用,Anaren Ceramics公司的知名度逐渐提升,逐渐成为了行业内的佼佼者。

Galaxy Semi-Conductor Co Ltd公司的发展小趣事

飞虹半导体自2002年建厂之初,便意识到大功率半导体产品市场几乎被国外进口产品垄断。为了改变国内电子厂家在价格与交货期上的被动局面,飞虹半导体毅然踏上了大功率半导体国产化生产研发的道路。尽管面临重重困难,但飞虹半导体坚持不懈,逐步在LED驱动、工业开关电源、新能源电动车等多个领域取得突破。其功率器件产品因性能优越,逐渐获得市场认可,为国产半导体替代进口产品贡献了重要力量。

问答坊 | AI 解惑

想了解海尔单片机的请进

海尔单片机海尔单片机在华南区代理商,专门为客户开发设计各种单片机应用程序和电路板,目前拥有多种家电、工控、仪表成熟方案,欢迎广大用户合作。    开发过的大小家电类产品:电热水器、蒸汽清洁机、空调机控制板、洗衣机控制板、汽车 ...…

查看全部问答>

怎样写testbench(xilinx的)文章共享

怎样写testbench的资料贡献给大家!…

查看全部问答>

剖析切換式電源供應器的原理及常用元件規格

由於大部分電子器材(如電視機、音響、電腦…等)其內部元件所使用的電源均為直流電,故必須有電源供應器(或整流器)來把交流市電轉換成各種不同的直流電壓以使電器發揮功能。依其電路結構的不同,電源供應器可分為線性式和切換式電源供應器兩種, ...…

查看全部问答>

求助:一道Intel笔试题

题目:给出至少两种方法实现存储器管理,比如虚存。 题目中提到了虚存,那么答案应该不能再列举它。…

查看全部问答>

MSP430 的IO端口详细介绍。新手学习贴

       MSP430的端口有P1、P2、P3、P4、P5、P6、S和COM(型号不同,包含的端口也不仅相同,如MSP430X11X系列只有P1,P2端口,而MSP430X4XX系列则包含全部上述端口),它们都可以直接用于输入/输出。MSP430系统中没 ...…

查看全部问答>

有谁用过r8c/38a? (瑞萨单片机)

有谁用过r8c/38a?(瑞萨单片机)…

查看全部问答>