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-17 15:42

如何使用STM32单片机实现DMA的同时发送和接收
在SPI通信中,可以同时开启发送和接收DMA请求,自动数据的发送和接收,完成数据的交换 基本步骤是: 1. 配置好SPI相应引脚功能 2. 配置和初始化SPI 3. 初始化DMA 4. 片选信号选择要通信的设备 5. 打开DMA 对应DMA通道:SPI1_RX---DMA1_Channel2;SPI1_TX---DMA1_Channel3 代码: #define L3GD20_SPI_TDR (u32)(SPI1_BASE+0x0C) #define L3GD20_SPI_RDR (u32)(SPI1_BASE+0x0C) u8 SPI_TXBUFFER[7]={0xE8,0x00,0x00,0x00,0x00,0x00,
[单片机]
STM32中关于串口通信的printf()函数重定向问题
在STM32串口通信程序中使用printf()函数发送数据非常方便,但是需要先进行简单的配置,下面介绍两种配置方法。 方法一、对工程属性进行配置 第1步:在main.c中包含 stdio.h” (标准输入输出头文件); 第2步:在main.c文件中重定义fput()这个C标准库函数(因为printf()在C标准库函数中实质上是一个宏,要调用到fputc()这个函数); 第3步:在工程属性的 Target - Code Generation 选项中勾选 Use MicroLIB ; 方法二:在工程中添加“regtarge.c”文件 第1步:在main.c文件中包含 stdio.h”文件; 第2步:在工程中创建一个文件保存为
[单片机]
STM32中C语言的基础知识
C语言是单片机开发中的必备基础知识,本文列举了部分STM32学习中比较常见的一些C语言基础知识,希望能对大家有所帮助。 01位操作 下面我们先讲解几种位操作符,然后讲解位操作使用技巧。C语言支持以下六种位操作: (六种位操作) 下面,重点讲解一下位操作在单片机开发中的一些实用技巧。 1.1 在不改变其他位的值的状况下,对某几个位进行设值。 这个场景在单片机开发中经常使用,方法就是我们先对需要设置的位用&操作符进行清零操作,然后用 | 操作符设值。 比如,我要改变GPIOA的状态,可以先对寄存器的值进行&清零操作: 然后再与需要设置的值进行|或运算: 1.2 移位操作提高代码的可读性。 移位操
[单片机]
<font color='red'>STM32</font>中C语言的基础知识
STM32单片机对CAN过滤器的设置方法
在使用STM32的CAN控制器进行数据收发,当用到位屏蔽模式的时候,就要设置过滤器了,这个关系到是否能够接收到想要的数据。下面针对几种不同情况对CAN过滤器(Filter)进行设置。 CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;//标示符屏蔽模式 CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; 1、对扩展数据帧进行过滤:(只接收扩展数据帧) CAN_FilterInitStructure.CAN_FilterIdHigh=(EXT_ID》》13)&0xFFFF; CAN_F
[单片机]
<font color='red'>STM32</font>单片机对CAN过滤器的设置方法
stm32专题二十一:LCD控制原理
使用的液晶屏内部包含有一个液晶控制芯片 ILI9341,它的内部结构非常复杂,如图所示。该芯片最主核心部分是位于中间的 GRAM(Graphics RAM),它就是显存。GRAM 中每个存储单元都对应着液晶面板的一个像素点。它右侧的各种模块共同作用把 GRAM 存储单元的数据转化成液晶面板的控制信号,使像素点呈现特定的颜色,而像素点组合起来则成为一幅完整的图像。 框图的左上角为 ILI9341 的主要控制信号线和配置引脚,根据其不同状态设置可以使芯片工作在不同的模式,如每个像素点的位数是 6、16 还是 18 位;可配置使用 SPI 接口、8080 接口还是 RGB 接口与 MCU 进行通讯。MCU 通过 SPI、8080 接
[单片机]
<font color='red'>stm32</font>专题二十一:LCD控制原理
意法半导体(ST)推出新款STM32 Nucleo开发板
2016年2月22日,意法半导体(STMicroelectronics,简称ST)推出价格实惠且尺寸紧凑的STM32 Nucleo-144系列开发板,加强其对市场领先的STM32系列32位闪存微控制器的支持。新款的144引脚开发板进一步扩大现有STM32开发生态系统的范围,通过提升板上连接通信功能,让客户能够使用从能效最高的到性能最高的任何一款STM32微控制器快速开发应用。 新款开发板完全兼容现有STM32开发生态系统,包括专用的应用扩展插接板,让开发人员能够在最终应用中轻松集成从电机驱动器到环境传感器的专用功能。此外,新开发板还通过三种连接端口提供无限的应用扩展功能,除现有的Nucleo-64板上的Arduino Uno和
[嵌入式]
意法半导体(ST)推出新款<font color='red'>STM32</font> Nucleo开发板
STM32的串口应用总结
首先总结一下串口232,422,485 串口232:可双向传输,全双工,最大速率20Kbps,负逻辑电平,-15V~-3V逻辑“1”,+3V~+15V逻辑“0”。 串口422:可双向传输,4线全双工,2线单工。 串口485:可双向传输,4线全双工,2线单工,最大速率10Mb/s,差分信号,发送端:+2V~+6V逻辑“1”,-2V~-6V逻辑“0”,接收端:+200mV逻辑“1”,-200mV逻辑“0”。 对于串口的实现有以两个方案: 方案一,和原子的《例说STM32》一样,首先接收,然后处理,没有消息验证处理,这样就会出现消息覆盖,消息出错后死机,无法明确区分命令,无法及时应答握手信号。方案二,借鉴uC/OSII的消息队列,进入中
[单片机]
STM32中ucos的编写程序
* Includes ------------------------------------------------------------------*/ #include config.h /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ //定义 堆栈大小 //#define TASK_STK_SIZE 128 #define TASK_STK_SIZ
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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