STM32之中断函数介绍篇

发布者:蓝天飞行最新更新时间:2017-09-23 来源: eechina关键字:stm32  中断函数 手机看文章 扫描二维码
随时随地手机看文章

NVIC驱动有很多的用途,如使能或者失能IRQ(中断请求),或者是使能或失能单独的IRQ通道,或者是改变其优先级。以下介绍相关函数的功能和基本用法。

1.NVIC_DeInit函数的功能是将外设NVIC寄存器重设为默认值。

2.NVIC)PriorityGroupConfig函数的功能是设置优先级分组:先占优先级和从优先级,且有一个输入参数是优先级分组的长度

例:定义先占优先级1,从优先级3.

NVIC_PriorityGroupConfig(NVICPriorityGroup_1);

3.NVIC_Init函数的功能是根据NVIC_InitStruct里面指定的参数初始化外设NVIC寄存器,其中NVIC_InitTypeDef structure定义结构体的代码如下:

typedef struct

{

u8 NVIC_IRQChannel;

u8 NVIC_IRQChannelPreemptionPriority;

u8 NVIC_IRQChannelSubPriority;

FunctionalState NVIC_IRQChannelCmd;

}NVIC_InitTypeDef;

NVIC_IRQChannel参数是用于使能或者失能指定的IRQ通道,其中IRQ通道有很多,可以自己查询相关的手册。

NVIC_IRQChannelPreemptionPriority参数设置了成员NVIC_IRQChannel中的先占优先级。

IRQChannelSubPriority参数设置了成员NVIC_IRQChannel中的从优先级。

当选定NVIC_PriorityGroup_0,参数NVIC_IRQChannelPreemptionPriority对中断通道的设置不产生影响;

当选定NVIC_PriorityGroup_4,参数IRQChannelSubPriority对中断通道的设置不产生影响。

NVIC_IRQChannelCmd参数指定了在成员NVIC_IRQChannel中定义的IRQ通道被使能或者失能,参数可取ENABLE 和 DISABLE。

例:定义优先级

NVIC_InittypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVICPriorityGroup_1);//先占优先级用1 ,从优先级用3

//定义TIM3中断的优先级,先占优先级为0,从优先级为2

NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQSubPriority = 2;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_InitStructure(&NVIC_InitStructure);

//定义USART1串口中断的优先级,先占优先级1,从优先级5.

NVIC_InitStructure.NVIC_IRQChannel = SUART1_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStructure.NVIC_IRQSubPriority = 5;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_InitStructure(&NVIC_InitStructure);

//定义RTC中断优先级为1,从优先级为7;


NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStructure.NVIC_IRQSubPriority = 7;

// NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_InitStructure(&NVIC_InitStructure); 

4.NVIC_SetVectorTable函数的功能是设置向量表的位置和偏移。其中输入参数中,对于32位的OFFSET向量表基地址的偏移量对于FLASH,参数值必须高于0x08000100,对于RAM必须高于0X100.

例:对FLASH指定向量表基地址偏移量。

NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x00);


关键字:stm32  中断函数 引用地址:STM32之中断函数介绍篇

上一篇:STM32之复位和系统时钟
下一篇:STM32之外部中断和中断控制器

推荐阅读最新更新时间:2024-03-16 15:38

STM32串口发送数据的标准函数
例子:1 void UART_Send_Message(u8 *Data,u8 lenth) { while(lenth--) { USART_SendData(USART2, *Data); while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); Data++; } } void main() { u8 Sendbuf ; Sendbuf =0xA0; Sendbuf =0xA0; Sendbuf =0xA0; UART_Send_Message(Sendbuf,3); } 例子2:
[单片机]
STM32】HAL库-电源控制(低功耗模式)
电源框图 ADC单独供电 为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰。 ADC的电源引脚为VDDA 独立的电源地VSSA 电池备份区域 当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。 VBAT为RTC、LSE(低速外部时钟)振荡器、备份寄存器和PC13至PC15供电。 当备份区域由VDD(内部模拟开关连到VDD)供电时,下述功能可用: PC14和PC15可以用于GPIO或LSE引脚 PC13可以作为通用I/O口、TAMPER引脚、RTC校准时钟、RTC闹钟或秒输出 当后备区域由VBAT供电时(VDD消失后模拟开关连到VBAT),可以使用下述功能:
[单片机]
【<font color='red'>STM32</font>】HAL库-电源控制(低功耗模式)
STM32开发笔记25:STM32L0低功耗设计-使用Keil和ST-Link下载程序
单片机型号:STM32L053R8T6 继续项目的开发工作,突然发现,程序不能够正常下载到单片机中了,提示如下图所示的错误,我使用的是keil和ST-Link。 这个问题在我第1次调试的时候发生过1次,我认为是我误操作将芯片烧坏了,因为当时又反复的焊接了一下芯片,也没有修好,就把这件事情放下了。 今天再次出现,自己感觉可能和低功耗有关,仔细查看刚刚下载的程序,里面上来程序就进入低功耗,没有任何退出语句,所以应该是CPU不响应下载命令了。 按照这种思路,先将单片机的复位引脚接地,然后点击下载按钮的同时,放开复位引脚,居然成功了。 再仔细想不应该呀,ST-Link控制着复位引脚了,应该在下
[单片机]
<font color='red'>STM32</font>开发笔记25:STM32L0低功耗设计-使用Keil和ST-Link下载程序
初学者如何处理STM32创建工程时stm32_eval.h的问题
环境:win10-MDK:5.15-固件库:3.5.0 1.先说对初学者来讲的解决办法 删除main.c中的所有定义和函数。只写上main(){},其他的什么都不用加。并在最后另起一行。(不另起一行会提示“without a newline”的警告。)不知道和Linux里用GCC编译程序的no newline是不是一个原因。因为文件最后表示连接下一行,而如果文件最后一行行尾有,被包含的下一个源文件会被连接。但要是最后一行用的是空行,就可以避免这种情况了。 C99原文: Each instance of a backslash character ()immediately followed by a new-line
[单片机]
初学者如何处理<font color='red'>STM32</font>创建工程时stm32_eval.h的问题
stm32,ov7670识别二值化并识别黑色物体,串口返回坐标值
自己网上找的代码,根据要求修改可二值化,识别黑色物体,用红色框框框起来,串口返回坐标值 单片机源程序如下: #include led.h #include delay.h #include key.h #include sys.h #include lcd.h #include usart.h #include string.h #include ov7670.h #include tpad.h #include timer.h #include exti.h #include usmart.h #include EasyTracered.h const u8*LMODE_TBL ={
[单片机]
STM32基础9--串口通信(UART)
UART传输方式 UART(Universal Asynchronous Receiver Transmitter),异步串口没有时钟信号,也没有硬件控制流信号。只有Tx(串行输出信号)与Rx(串行输入信号)。 在STM32F407中,串口数据传输有两种方式:阻塞与非阻塞。 1)阻塞:轮询的方式,就是发送缓冲器的数据,直到数据传输完成或者超时后,函数才返回; 2)非阻塞:启动发送缓冲区数据后,立即返回,传输完成后可以触发中断。 注:在51单片机中的UART通方式类似,也是通常使用阻塞发送数据, 而非阻塞通常用来接收数据。 PC端与STM32进行串口通讯 在当前的PC(个人电脑),基本上已将不支持串口了。因此需
[单片机]
<font color='red'>STM32</font>基础9--串口通信(UART)
STM32】串口相关配置寄存器、库函数(UART一般步骤)
STM32F1xx官方资料: 《STM32中文参考手册V10》-第25章通用同步异步收发器(USART) 串口相关配置寄存器 状态寄存器(USART_SR) 状态寄存器适用于检测串口此时所处的状态。它能够检测到的状态有:发送寄存器空位、发送完成位、读数据寄存器非空位、检测到主线空闲位、过载错误为等等。 这边主要关注两个位:RXNE和TC(第5、6两位)。 RXNE(读数据寄存器非空):当该位被置1的时候,就是提示已经有数据被接收到了,并且可以读出来了(即RDR移位寄存器中的数据被转移到USART_DR寄存器中)。这时候要做的就是尽快读取USART_DR,从而将该位清零,也可以向该位写0,直接清除。
[单片机]
【<font color='red'>STM32</font>】串口相关配置寄存器、库<font color='red'>函数</font>(UART一般步骤)
基于STM32物联网开发板(4)--LCD屏
1.概述 屏幕尺寸为1.3寸,分辨率240*240,颜色格式RGB565,驱动IC:ST7789VW; 超大可视角度:大于160°(显示屏中可视角度最大的一种屏幕); 宽电压供电(3V~5V),兼容3.3V和5V电平逻辑,无需电平转换芯片; 采用7线制SPI接口; 工作温度范围为工业级(-20℃~60℃); 军工级工艺标准,长期稳定工作; 硬件接口: 引脚 说明 LEDK PB0背光 CS PA4片选 SCL PA5时钟 SDA PA7主机输出 RES PB1复位脚(电平复位) D/C PC4数据命令选择脚 2.通讯协议 ST7789VW是一款用于262K彩色图形型TFT-LCD的单片
[单片机]
基于<font color='red'>STM32</font>物联网开发板(4)--LCD屏
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved