stm32的中断号根据不同内核和型号,ST公司给的官方库中对相应的中断号进行了设置,我们用到哪一个外设的且要用到相应的中断功能时,在stm32fxxx.h中定义对应的型号的中断号。若要调用相关的中断功能,在NVIC中配置相关的中断优先级和中断号。STM32会内部会根据配置的中断号在启动文件中寻找相应的中断函数的相应的入口函数例如在配置串口的中断接收打赢函数时,在NVIC的配置中配置串口1的中断函数中设置的中断号为如下:
USART1_IRQn = 27, /*USART1 Interrupt*/
#define DEBUG_USART_IRQ USART1_IRQn
/* 配置中断源 */
NVIC_InitStructure.NVIC_IRQChannel = DEBUG_USART_IRQ;
以上是配置的串口1对应的中断号,那么他对应的中断处理函数是怎样的,是否可以随便的写?答案是不可以随便的写。ST 公司在提供的启动文件startup_stm32fXXX.s中都对相应的中断号对应的中断处理函数的入口都已经规定好了,即必须按照他提供的启动文件的名字来在相关文件(可以不是stm32fxxx_it.c中写驱动)写中断函数,但可以通过宏定义的方式来实现按照自己定义的方式来写中断函数。如下是中断函数标识:
在startup_stm32fXXX.s中,中断函数名在中断向量表中定义:
DCD SPI1_IRQHandler ; SPI1
DCD SPI2_IRQHandler ; SPI2
DCD USART1_IRQHandler ; USART1
DCD USART2_IRQHandler ; USART2
注释:DCD 是个伪代码,USART1_IRQHandler这个是对应上边28号中断的串口USART1中断函数。
在代码中我们通过宏定义来给这个中断处理函数起个别名来操作。
define DEBUG_USART_IRQHandler USART1_IRQHandler //起的别名
void DEBUG_USART_IRQHandler(void)
{
//中断函数具体处理
}
关键字:stm32 中断号和 中断处理函数 建立关系
引用地址:
stm32 中断号和中断处理函数建立关系
推荐阅读最新更新时间:2024-03-16 16:18
STM32单片机串口功能实现
STM32学习笔记心得四: =============串口通信================ 1.通信方式 处理器和外围设备进行通信的方式:并行通信和串行通信 并行通信: 传输原理:数据的每一个位都在同时传输 优点: 速度快 缺点: 占用很多引脚资源 串行通信: 传输原理:数据按位的顺序传输 优点: 占用引脚少 缺点: 传输速度慢 -------------------------------------------------- 对于大部分的设备来讲,引脚资源是有限的,所以在通信方面要节约IO口 串口作为MCU的重要外接设备,同时也作为软件调试手段 串行通信按照传送的方向
[单片机]
图解Stm32使用jlink下载程序时jtag接口(SW和JTAG模式)的简化方法
用过stm32的人都知道stm32有两种常用下载程序的方法,用串口和jlink。串口下载方法和51差不多不多说,用jlink下载时接口引脚太多导致接口很大,很占pcb的面积,在此我就针对这个问题清晰的讲述下jlink下载程序时jtag接口的简化方法!希望对大家有用。! 我实验的是jlink v8和stm32f103rbt6! 如果用jtag模式下载的话,需要接:jlink的第1脚(VDD)、第3脚(TRST对应stm32的PB4)、第5脚(TDI对应stm32的PA15)、第7脚(TMS/SWDIO对应stm32的PA13)、第9脚(TCK/SWCLK对应stm32的PA14)、第13脚(TDO\SWO对应s
[单片机]
stm32官方SD卡驱动的使用注意事项
使用stm32 CUBE 库所提供的SD卡驱动的朋友们请注意: 1、适用于MMC卡,本人没测试过,mmc卡现在已经是收藏品了,谁还会用呢,so,st的团队求求你们严谨的好不好。 2、SD卡初始化过不去,因为丫在发送CMD0后,接着发送了CMD1(CMD1是mmc卡的独有指令,SD卡是不需要发CMD1的),读写驱动函数也有问题(不分情况的修改了sd卡的块大小,统统设置成了512字节),就因为这个害的本人浪费了3 天的时间,无奈只好自己重写了一遍驱动。so,如果要在项目中使用SD卡,须修改驱动程序。 3、其实好多官方例程都有bug,不要太迷信官方的东西。 总之,官方也有坑,使用须谨慎!
[单片机]
在STM32平台上实现基于汽车音频总线的解决方案
A2B或“汽车音频总线”是一项主要为信息娱乐系统开发的新技术,旨在减轻音频线束的重量和成本。A2B 总线是单主多从系统,其中主控制器上的 A2B 收发芯片为主。A2B 收发器芯片通过单根非屏蔽双绞线支持多通道数字音频。此外,A2B 总线将直流电源传输到远程总线供电节点。A2B 收发器连接多个 IC 间声音 (I2S) 同步、脉冲编码调制 (PCM) 数据,节点之间最长可达 15 米,所有节点的总长度最长可达 40 米。 A2B 主节点生成时钟、同步和成帧信号以及从节点的直流电源。A2B 芯片可通过 I2C 进行编程,用于配置和从从设备读取数据。它提供对从收发器的寄存器和状态信息以及 I2C 到 I2C 通信的直接访问。 A
[单片机]
基于stm32的蓝牙串口收发系统
本实验利用信驰达的蓝牙模块进行串口的收发任务,stm32f103用的是串口1,手机APP用的是LighntBlue,蓝牙名字为Vence,stm32开发板为中国移动的OneNet开发板 ①连线 蓝牙模块 stm32f103 VCC VCC GND GND EN PC10 RX TX1 TX RX1 BRTS GND P04 PC7 P05 PC8 ②蓝牙模块的工作模式 启动蓝牙模块需要将EN置0,BRTS置0,接上电源,就开始广播模式 当连接成功时,
[单片机]
STM32开发板入门教程 - 内部温度传感器
废话少说 先看看他的参数 1. STM32内部温度传感器与ADC的通道16相连,与ADC配合使用实现温度测量; 2. 测量范围 40~125℃,精度 1.5℃。 3. 温度传感器产生一个随温度线性变化的电压,转换范围在2V VDDA 3.6V之间。 转换公式如下图所示: 呵呵 其实 写代码的时候 公式直接简化就得啦 如果测量要求不怎么高的话 呵呵(其实高也高不了 呵呵) 我们都喜欢简单 简单明了 嘿嘿 简化的公式: vu16 Temperature= (1.42 - ADC_Value*3.3/4096)*1000/4.35 + 25; 呵呵 重
[单片机]
使用变参函数实现STM32串口的简易printf功能
第一,去掉了原来使用的goto语句,因为C语言中除了错误处理之外,不建议使用goto语句; 第二,fmt和pnt的含义更加明确,它们始终指向下一个需要处理的字符和变参; 第三,整理了程序结构,使它更加清晰。 void uart_printf(USART_TypeDef *USARTx, char *fmt, ...) { char *pnt = (char *)&fmt + sizeof(fmt); int len; while (*fmt != '') { if (*fmt == '%') { if (*(fmt + 1) == 'c') { uart_send_byte(
[单片机]
基于STM32单片机的电子称设计
摘要 电子秤是将检测与转换技术、计算机技术、信息处理、数字技术等技术综合一体的现代新型称重仪器。它与我们日常生活紧密结合息息相关。 电子称主要以单片机作为中心控制单元,通过称重传感器进行模数转换单元,在配以键盘、显示电路及强大软件来组成。电子称不但计量准确、快速方便,更重要的自动称重、数字显示,对人们生活的影响越来越大,广受欢迎。 本系统的设计主要从硬件电路设计,软件编程调试,实物焊接调试三部分进行详细阐述。硬件电路主要是基于单片机为核心的控制单元实现数据的处理,采用压力传感器对数据进行采集,电子秤专用24位AD转换芯片HX711对传感器采集到的模拟量进行AD转换,转换后的数据送到单片机进行处理显示,数据显示由LCD160
[单片机]