一、中断内核: 


STM32的中断很强大,每个外设都可以产生中断,F103在内核水平上搭载了异常响应系统,系统异常有8个(算上RESET和HardFault也就10个),外部中断有60个,但是根据NVIC(嵌套向量中断控制器,控制整个芯片中断相关的功能),IP(中断优先级寄存器)数组中预留了240个位置(NVIC结构如上图),可见眼光之远,用于扩展,这是STM32F103用不到这么多。


如果以后要找跟内核相关的函数,都存在core_cm3.c和misc.c中,包括NVIC的函数的声明,但是其具体的库函数内容并不是和固件库头文件core_cm3.h一致(不在core_cm3.c),而是放在库函数的misc.c中,这点需要注意。


二、中断优先级的定义和分组:

 

 三、中断编程的顺序:


1、使能中断请求


如何使能,需要配置哪个寄存器?


注意:这里与NVIC中的中断使能寄存器不是等同概念,中断使能可以理解成有2个大门,外设使能(小门,比如串口有发送完成中断,接收完成中断,这两个中断由串口控制寄存器的相关中断使能位来控制)和NVIC(大门,接受请求)。


2、配置中断优先级分组


如何配置,需要配置哪个寄存器?


通过NVIC_PriorityGroup函数。


3、配置NVIC寄存器,初始化NVIC_InitTypeDef;(定义在misc.h中,成员如下)


1-NVIC_IRQChannel:指定中断源(中断类型列表参考STM32F10X.H中已列举给出)             


2-NVIC_IRQChannelPreemptionPriority:抢占优先级(根据分组表和选择来给) 


3-NVIC_IRQChannelSubPriority:子优先级(根据分组表和选择来给)


4-NVIC_IRQChannelCmd:使能或者失能(内核使能,相当于上面说的大门,enable或disable)


4、编写中断服务函数


1-中断服务函数名要怎么写?写错了怎么办?


在启动文件的中断向量表中,将中断函数名称都已经初始化好了,由C语言特点可知,函数的名称对应于函数的地址,但是这些函数的内容都是空的,都是B. (启动文件是汇编程序)表示无限循环,如果自己写了函数,但是写错了,系统就在中断向量表中找不到中断服务函数的入口地址,但是电脑不是人,不会对你写错的函数报错,因为程序有无意义电脑不能识别,它只会自动去系统里执行这个循环空函数,所以自己函数的名称一定与启动文件中的名称相对应。


2-中断服务函数要写在什么地方?


为了编程方便管理,我们可以把程序直接可以写在中,内核的函数已经给了,如果外设中断函数可以自己继续补充。


四、中断小结


STM32F10X中断的方法还是比较清晰的,和单片机类似,多了一个优先级嵌套和分组的功能,另外要注意一些使用库函数编程的细节即可,后续再通过实验例子来测试各类中断的具体使用方法。

关键字:STM32F103  中断  中断内核 引用地址:【STM32F103】中断综述

上一篇:关于由CubeMx生成stm32f4+freertos,不正常分析之堆栈大小设置
下一篇:【STM32F103】RCC-使用HSE/HSI配置时钟

推荐阅读

随着时代的进步,科技的发展,现在的充气娃娃也是越来越先进了... 下面这哥们叫Matt McMullen, 他是一个公司的老总,他们公司专门制作性爱娃娃... 他在这行已经20多年了... 各种与时俱进... 现在,他们公司的性爱娃娃已经非常逼真了, 顾客可以选择娃娃的身材,各个部位的大小,胸部的形状 发型,肤色,眼睛的颜色 有没有雀斑, 若影若...
所有超低功耗系统的设计师都非常关心电池的使用寿命。健身追踪器的电池需要多长时间充电一次? 而对于一次性电池系统而言,技术人员需要隔多久维护一次智能电表或更换电池? 显然,设计的目标是尽可能延长电池续航时间。对于健身追踪器来说,电池能够续航一周是比较理想的,而智能电表可以使用20年甚至更长的时间。为实现这一续航时间,在设计各个子系统...
8月21日消息 谷歌正在 Android 11中做出一项改变,将迫使想要拍摄照片或视频的应用使用手机内置的相机应用,即使用户已经将第三方相机应用设置为默认相机应用。“我们相信这是保护用户隐私和安全的正确权衡。”Android 工程团队在8月17日写道,并补充说,调用摄像头的应用程序需要明确说明他们想要支持的每一个第三方相机应用。现在,谷歌给出最新的理...
一份来自韩国的新报告表明,Galaxy S22系列将以骁龙898版本为主,而不是三星配备AMD显卡的下一代Exynos SoC。据报道,这家韩国科技巨头2022年的下一代旗舰产品将采用AMD驱动的Exynos 2200处理器。尽管如此,它只会在全球少数几个特定的地区推出。换句话说,骁龙的版本将更广泛地提供给客户。显然,这并不是因为最新的Exynos处理器的性能,而是因为新芯...

史海拾趣

问答坊 | AI 解惑

如果动态安装驱动

如何动态加载一个驱动. 我的意思是. 在一个CE系统中. 这个CE内核文件nk.bin中没有包含那个流接口驱动程序usb.dll. 运行CE系统后. 将这个usb.dll copy到CE硬盘上. 用一个什么工具可以将usb.dll安装到内核中. 使之下次启动CE后. CE中的NK.BIN已经有 ...…

查看全部问答∨

evc是否需要面向对象?

我看了一些evc写的应用程序,好多都没有建类,直接加个头文件和cpp文件就开始写函数了, 我想问下,在evc中使用类考到板子运行后会影响速度吗?还是应该建类便于分层和程序的 可读性?求高手赐教~…

查看全部问答∨

那位大虾有驱动max7221显示芯片的串口程序阿?(普通i/o)

我用51单片机的p1.5~p1.7口驱动max7221芯片,编写的程序始终不起作用,不知那位大虾有这样的示例程序指点一下小弟…

查看全部问答∨

mcp2510问题

请问为什么我无法读取mcp2510芯片的数据????????     硬件连接很简单!用三星S3C44b0的io口模拟spi总线接口与mcp2510的SPI口对应相接! 型号mcp2510 I/P 。所接的电压是3.3v。 然后7,8脚接晶振。但是根据时许图编写出来的程序 ...…

查看全部问答∨

什么是RTC

RTC的英文全称是Real-Time Clock,翻译过来是实时时钟芯片.  RTC是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,RTC经过8254电路的频产生一个频率较低一点的OS(系统)时钟TSC,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过R ...…

查看全部问答∨

求教ADC0802时序图

学习ADC0802时序图,没有搞明白:时序图上画的都是等周期的,可是程序却是穿插了许多片选,读写指令,因此会想到这会不会引起时钟周期就不是相同的了?不知道理解的对不对?…

查看全部问答∨

TIM的PWM输出和GPIO_WriteBit不能同时实现吗

一开始用TIM3、4的PWM输出不同频率的脉冲,GPIO初始化输出模式定义为AF_OD。后来因为想控制脉冲个数,改成用GPIO_WriteBit加for循环来生成脉冲,发现GPIO初始化得改成Out_OD,但这样PWM输出又不行了。后来我想在初始化用AF_OD,需要GPIO_Writ ...…

查看全部问答∨

LOAD程序后不运行会是什么原因?

我的一个DSP功能板,之前用的好好的,刚连同产品进行过耐压测试,测试当天并没有发现问题,产品也正常工作。 放置几天后,今天突然开不了机了。拆开产品后,发现DSP模块没有运行,但是电源、晶振均正常。 然后我用打开CCS,将程序文件LOAD进去, ...…

查看全部问答∨

有偿寻求帮忙

我要做一个半控整流桥的控制电路的测试台要求:用数码管显示晶闸管的开放角度,并模拟一个0-100MA的反馈,要根据开放角度来控制反馈大小,到稳压状态后可以断开跟随并保持,且可以手动调整反馈大小(用来模拟交流侧电压波动和过压和过流保护)。一 ...…

查看全部问答∨
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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