在STM32单片机的编程当中,中断函数的名称都是xxx_IRQHandler格式的。那当编译程序的时候是怎么知道这是一个中断函数的呢?
每个中断都是有入口地址的。程序在执行过程中遇到中断的时候,会先判断这个中断的类型,根据类型再到中断向量表中查找,找到之后,根据表中指明的地址,程序就跳到该地址开始执行代码。
ST提供的固件库当中,有提供一个stm32f10x_it.c文件,打开之后会发现里面放的都是些空函数,但是名字都是“xxx_Handler()”格式,需要使用某个中断的时候,在代码中使能该中断,并到这个文件中将中断服务函数添加上,就可以了。
而这些名字就是一个个的中断函数入口地址。在启动代码中便有这些定义。如下图所示:
可以看到,里面定义了一个个名称,这些名称就是中断函数入口的地址,用这些名称来代替了具体的地址值。
其中DCD是一条数据定义伪指令,用于分配一片连续的字存储单元并用指定的数据初始化。当配置好相应外设的控制寄存器中断使能时,当发生中断(异常)时,该异常被Cortex-M3内核接受,对应的异常Handler就会执行。而这个响应过程都是硬件来完成的,当然为了决定Handler的入口地址,Cortex-M3使用了“向量表查表机制”。startup_stm32f10x_hd.s启动文件已经为相应外设的中断服务函数赋予了相应的地址。所以在异常发生后,CPU进入异常模式,同时程序计数器PC自动指向异常入口地址,进而执行中断服务函数中的应用。
关键字:STM32 单片机 中断函数
引用地址:
STM32单片机是怎样执行中断函数中的应用的
推荐阅读最新更新时间:2024-11-17 00:25
e络盟推出面向Kinetis KW2x MCU的新型恩智浦Freedom开发平台
该平台可为智慧能源、医疗保健、商业、工业及住宅应用的设计开发新增Zigbee或802.15.4连接功能 e络盟日前宣布推出面向Kinetis KW2x MCU的新型恩智浦开发平台。它包含两个电路板,可以即插即用的方式轻松实现点对点连接,从而方便设计师为其电子产品设计配置Zigbee或802.15.4连接功能。该新型套件还提供大量参考设计,另外还配备了作为独立板运行或连接外部应用时所有必要的I/O接口。 FRDM-KW24D512开发平台基于MKW24D512 Kinetis W系列微控制器,通过软件可支持Thread、ZigBee Pro、802.15.4 MAC、SMAC及Kinetis软件开发套件(SDK)。
[嵌入式]
单片机处理触摸按键例程
//文件touchbutton.h #ifndef _TOUCHBUTTON_H_ #define _TOUCHBUTTON_H_ //=========宏定义=========================================== #define DEF_WATCH_TKREFER //查看参考 -用于测试 //=========================================================== #define V_REFER 1 //AD值超过此值 更新参考值 #define V_PRESS 7 //AD值-参考 大于此
[单片机]
24C02在PIC单片机系统中的应用
MICROCHIP公司的PIC16系列单片机以其精简的指令和较强的端口驱动能力在各个领域得到广泛的应用。在需要储存较大数量数据的控制领域,24C02可以解决PIC16C8×系列单片机片内EEPROM不足的问题,用以保存诸如用户设置参数、采集到的数据等。 由于部分PIC单片机不具备I2C总线接口,在应用时必须用软件法加以解决。 在软件编制时应当严格遵循I2C总线规则,并注意24C02的片内读写周期时间,调整好程序流程,以避免写不进、读不出的问题。 下面将笔者在实际工作中遇到的问题和解决的方法进行简单的介绍,希望可以给同行一些帮助。 首先约定,数据由微处理器发送到24C02称“写”、“发”,反之称“读”、“
[单片机]
单片机是什么?什么是单片机?
单片微型计算机简称单片机(MCU),是典型的嵌入式微控制器,单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。 它最早是被用在工业控制领域,由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。 现代人类生活中所用的几乎每件电子和机
[单片机]
单片机系统中八段LED数码管显示器设计基础
在单片机系统中,常常用LED数码数码管显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。 引言:还记得我们小时候玩的“火柴棒游戏”吗,几根火柴棒组合起来,能拼成各种各样的图形,LED数码管显示器实际上也是这么一个东西。 八段LED数码管显示器 单片机静态显示接口 八段LED数码管显示器由8个发光二极管组成。基中7个长条形的发光管排列成“日”字形,另一个贺点形的发光管在数码管显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。LED数码管显示器有两种不一样的形式:一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管显示器;另一种是8个发光二极管的阴极
[单片机]
高性能车规MCU解读:何为“车规芯片”
近年来,车辆智能化,网联化和电动化得到了飞速发展,车辆对芯片的要求不论是从数量还是从性能方面来说都增长很快。时下,装载良好的芯片才能使汽车更具竞争力,整车厂对于汽车芯片更是给予前所未有的重视。 “车规时代”到来 “缺芯潮”中,MCU控制芯片是对车厂挑战最大的产品,尤其高性能、高可靠、高安全的车规控制芯片,而这块市场此前一直是国际大厂的天下,国内创新企业尚是空白。 不过车规半导体某企业近期透露了令人振奋的消息:即将发布一款高可靠、高安全、高性能、广覆盖的车控MCU E3、其功能安全等级达到了ISO 26262 ASIL D级;这款控制芯片据称可覆盖汽车车身、底盘、动力、BMS、网关、T-Box等各项应用,目前已有近20家
[嵌入式]
STM32HAL库中断模式串口收发
一.简单了解 串口模式实现有三种 1.普通模式:在主函数中接收函数 2.中断模式:产生的不影响主程序运行 3. DMA模式:与主函数互不影响,独立运行 本文记录第二种普通模式。 学习目标是:实现中断串口的数据收发,发送数据时LED灯电平翻转。 二.步骤 在上一篇文章基础上,传送门:STM32HAL库普通模式串口收发 需在STM32CUBEMX软件中USART1的NVIC SETTING中使能中断,然后再次生成代码。 【小tips:如果在用户区域块编写代码的话不会被覆盖】 1-宏定义串口中断 #define UART1_IRQ uint8_t TdataIRQ ={ welcome to uart irq!rn };//测试
[单片机]
【GD32 MCU 移植教程】8、从 STM32F4xx 系列移植到 GD32F4xx 系列
1.本文简介 GD32F4xx 系列 MCU 是基于 Arm® Cortex®-M4 处理器的 32 位通用微控制器,与 STM32F4xx系列 MCU 保持高度兼容。本文主要从以下三个方面进行介绍:硬件资源对比、外设及性能对比以及从 STM32F4xx 移植到 GD32F4xx 的移植步骤,旨在让开发者能够快速从 STM32F4xx移植到 GD32F4xx,缩短研发周期,加快产品开发进度。 2.GD32F4xx vs STM32F4xx 硬件资源对比 GD32F4xx 和 STM32F4xx 硬件引脚对比如表 2-1. GD32F4xx 和 STM32F4xx pin 对比所示,由该表可知,GD32F4xx 与 STM32F
[单片机]