Stm32外部中断以及NVIC笔记

发布者:火箭飞人最新更新时间:2019-04-23 来源: eefocus关键字:Stm32  外部中断  NVIC 手机看文章 扫描二维码
随时随地手机看文章

1.外部中断

1.概念:

<1>:当某种事件发生时,CPU自动停止所干的事 从而去临时处理突发事件


<2>:对于Stm32F103rc而言,一共有60个可屏蔽中断(外部中断),16个内核中断


2.设置方法:


<1>:初始化相关的IO口


<2>:开启复用时钟,设置IO口和中断线的映射关系


RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//外部中断,需要使能AFIO时钟

<3>开启与该IO口想对的线上中断和设置触发条件


库函数:


GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);

 

  EXTI_InitStructure.EXTI_Line=EXTI_Line5;

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿触发

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;

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

寄存器:


EX_NVIC_Config(GPIO_C,5,FTIR);

<4>:配置NVIC,使能中断


库函数:


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

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

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

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

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

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置分组情况 一般放在主函数里

寄存器:

 


MY_NVIC_Init(2,2,EXTI0_IRQn,2)

<5>:设置中断服务函数(库函数寄存器一致)


oid EXTI0_IRQHandler(void)

{

  delay_ms(10);    //消抖

if(WK_UP==1)

{   

LED0=!LED0;

LED1=!LED1;

}

EXTI_ClearITPendingBit(EXTI_Line0);  //清除EXTI0线路挂起位 

    //EXTI->PR=1<<5;

}

注:

NVIC中包括配置抢占优先级和响应优先级,一般而言,高抢占打断低抢占,高响应不能打断低响应,响应越高先执行(Stm32F1系列 一共可以设置0-4级响应 0为最高,4最低)


关键字:Stm32  外部中断  NVIC 引用地址:Stm32外部中断以及NVIC笔记

上一篇:STM32 SPI笔记(基于寄存器)
下一篇:STM32学习笔记-SPI通讯

推荐阅读最新更新时间:2024-11-11 18:17

STM32网络通信之DM9000A电路设计
1 总体描述: DM9000A的PHY 能够以10BASE-T 的标准在UTP3\4\5或者以100BASE-T的标准在UTP5上接口通信。它的自动协商功能是够自动配置DM9000A最大地发挥出自身性能。它同时支持IEEE 802.3X全双工数据流通信。 2、结构图: 3、硬件电路的设计 (1)电源连接: 引脚号 电气连接 说明 2、9 模拟2.5V 为RX和TX供电,必须为2.5V 23、30、42 数字3.3V1 数字电源3.3V为芯片供电 15、33、45 数字地 数字地 5、6、47、48 模拟地 5、47、6分别为RX和TX的GND,48是通带宽带的GND 41
[单片机]
STM32 KEIL软件设置程序烧写起始地址选择
STM32系列的mcu,这儿以cortex-M4为例,我们在线调试时,一般会设置程序烧写起始地址和大小。这个大小一般是0x08000000,也就是内部flash的映射地址。不过有些产品是从0x08020000开始的,这是为什么呢?是因为在0x08000000-0x08020000这段空间放的是引导程序,也就是引导程序是从0x08000000开始存放,一般而言,引导程序最终也是要跳转到主app执行的,对于我们这儿而言,就是引导程序会跳转到0x08020000继续执行,而主工程代码是从0x08020000开始存放的,所以就这样串联起来了。 这儿可以看到我们设置的程序烧写的地址和大小,这个的设置是要和use memory layou
[单片机]
<font color='red'>STM32</font> KEIL软件设置程序烧写起始地址选择
stm32成长记之LED呼吸灯
拍的GIF太朦胧了,就不备份了。。。 呼吸灯的实现实则是通过PWM控制的LED的亮灭时间间隔,由于人眼视觉的暂缓效应,达到预期的效果。 那么呼吸灯的设计思路是怎么的呢? ①需要点灯--LED的配置和实现(GPIO_InitTypeDef结构体) ②时间的调用--定时器的配置(TIM_TimeBaseInitTypeDef结构体) ③时间间隔的控制--PWM的配置和实现(TIM_OCInitTypeDef结构体) 通俗的讲,就是理论上想让LED达到图a的亮灭的效果(LED灯由亮逐渐熄灭后在逐渐点亮),然而在MCU的识别到的高电平为2.2~2.9V以上,也就是说MCU电平变化只有两种情况,高电平(或1)低电平(
[单片机]
<font color='red'>stm32</font>成长记之LED呼吸灯
总结大佬经验,如何学习STM32?(入门、进阶)
一、想快速入门进阶,面向工作时 先把工作中需要的东西学会,一项一项的来,比如先把GPIO弄清楚,怎么初始化,怎么输入输出,然后定时器、串口、ADC、DAC、DMA、SPI等等先把用得着的一个一个地做, 都弄明白了再往一块整合,从简单到复杂,硬件操控起来了也就算对这种单片机入门了吧,软件方面,不管用什么单片机,用什么编译器,区别不大初学的最好还是买个开发板,不需要多高级的,有几个常用功能做出来,其它就容易了。--------hdxet 关于初学者是否需要弄清底层函数问题: 先玩起来再说底层函数,一般就用现成的库,绝大多数应用都没问题的,至于库里面是什么,先不管它,到了高级阶段再去看--------hdxet 二、进阶步骤 会点灯
[单片机]
玩转STM32(5)找到启动文件
前学习了目录分类的重要性,可以看到分为三个目录,那么你选择哪一个目录点击进入去呢?因为我们要打开项目工程,那么就需要找到开发工具的工程文件,因此就需要打开工程的目录Project,就是这个目录命名的原因。在这个目录下面放置所有与目录相关的文件,当你打开这个目录时,就可以看到目录大体如下: 在这里一眼看到最醒目的图标那个就是启动工程文件,只要双击这个文件就可以打开工程了。你也许想问其它文件是做什么作用呢,为什么需要这么多文件呢?现在我们就来详细地看一下工程目录每个文件和目录的大体作用。 到这里已经把Project下的文件和目录搞清楚,因此当你打开工程时,记得找到像project.uvprojx文件结尾的文件,就是工程文件,才
[单片机]
玩转<font color='red'>STM32</font>(5)找到启动文件
基于STM32+Jlink的边界扫描实际应用演示
试想这样一个场景,我们新设计了一款集成了很多芯片的板卡,包括BGA封装的微控制器,如FPGA/MCU,还有LED、按键、串口、传感器、ADC等基本外设。 我们需要测试一下硬件电路工作是否正常、焊接是否良好,通常我们会写个测试代码,比如控制LED闪烁,读取按键的输入,串口收发一些数据,然后把程序烧录进去,看看现象是否和我们设计的一致。 当现象和设计不一致时,是代码设计的问题、还是硬件原理的问题、又或者是焊接的问题呢?应该如何一一排除呢? 这里就可以使用JTAG边界扫描的测试方法,来验证到底是哪里出的问题,因为JTAG边界扫描不需要写任何代码,只需要一个BSDL文件,就可以控制和读取芯片的任意管脚。 下面我们以意法半导体 MC
[单片机]
基于STM32+Jlink的边界扫描实际应用演示
关于STM32的CAN的过滤器
STM32普通型芯片的CAN有14组过滤器组,互联型有28组过滤器组. 一般我们用的都是普通型的,所以在本文中可以说STM32有14组过滤器组. 根据配置,每1组过滤器组可以有1个,2个或4个过滤器. 这些过滤器相当于关卡,每当收到一条报文时,CAN要先将收到的报文 从这些过滤器上 过 一下,能通过的报文是有效报文,收进FIFO中, 不能通过的是无效报文(不是发给 我 的报文),直接丢弃. 所有的过滤器是并联的,即,一个报文只要通过了一个过滤器,就是算是有效的. 每组过滤器组有两种工作模式: 标识符列表模式,标识符屏蔽位模式. 在标识符列表模式下,收到报文的标识符必须与过滤器的值完全相等,才能通过. 在标识符屏蔽位模式下,可以指
[单片机]
STM32之六独立看门狗
单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生,在一定的时间内(通过计数器)没有喂狗信号输入给看门狗则表示MCU出现问题,自动会给处理器发送复位信号,是MCU重新启动,是系统正常运转。 STM32的独立看门狗有内部的专门40KHz低速时钟驱动,即使主时钟发生故障,它仍然有效。看门狗时钟十一个内部RC时钟,并不是准确的40KHz,而是在30~60KHz之间的变化时钟,估算时间的时候以40KHz来计算。 第一步,首先取消寄存器写保护,我们利用库函数的IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);来实现,
[单片机]
<font color='red'>STM32</font>之六独立看门狗
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved