对于STM32的中断首先需要用到的文件是startup_stm32f10x_hd.s和stm32f10x_it.c这两个文件,其中startup_stm32f10x_hd.s是启动文件,stm32f10x_it.c是中断响应函数。对于外部中断,它的过程是外部的IO口监测到电平的变化,触发外部中断,所以它又涉及到3个库文件,stm32f10x_gpio.c、stm32f10x_exti.c和misc.c,misc.c包含中断库,stm32f10x_exti.c是外部的IO口中断,stm32f10x_gpio.c是IO口的配置。还有一个我们上一篇中说的所有的外设都要用到的库文件时钟stm32f10x_rcc.c。
一、启动文件
说外部中断之前,先了解下启动文件,也就是startup_stm32f10x_hd.s,它是用汇编语言写的,主要的作用是在上电启动的时候,建立C语言的运行环境。它主要的功能如下:
初始化堆栈指针SP
初始化程序计数器指针PC
设置堆、栈的大小
设置中断向量的入口地址
配置外部SRAM作为数据存储器
调用SystemInit()函数配置STM32的系统时钟
设置C库的分支入口”_main”(最终用来调用main函数)
这些就是我们要的中断函数的入口地址,当发生中断时,是哪种中断就进入相应地址。
二、中断
中断是指当出现需要时,CPU暂时停止当前程序的执行而执行处理新情况,大体的框图如下:
在STM32中还有一个中断优先级的问题,当出现多个中断时,他们执行的顺序是什么,如下图所示:3的优先级高于2的优先级高于1的优先级。
三、外部中断的程序流程
四、具体的做法
STM32口的外部中断映射如下,首先看那个叫要设置为外部中断,则看是EXTI几。
第一步:当然是设置系统时钟,调用的函数之前说过了,不说了。
第二步:设置一个口PA0为外部中端口,首先就是设置PA0为普通的输入口,在GPIO库文件中找,这里也不说了。
其次是设置IO口为外部中断。
接下来是设置外部中断,在.exti文件中进行设置。
根据这些函数配置外部中断
这个时候外部中断已经配置好了,但是还得配置中断和设置中断优先级,在misc.c文件中
根据库函数表就可以对应的找到设置。
这样中断就设置完成了。
接下来写中断服务函数。
但是还是不够,这时还需要把中断服务函数和我们启动文件中的中断响应函数连接起来,最后当发生中断时直接进入中断服务函数,这时再在启动文件中找到这个中断发生的函数入口
在stm32f10x_it.h中添加
在stm32f10x_it.c的文件中添加如下:
这样对于外部中断的驱动就完成了。
关键字:STM32F103 单片机 外部中断
引用地址:
STM32F103单片机学习笔记(2):外部中断
推荐阅读最新更新时间:2024-11-17 18:14
恩智浦推出安全互联MCU,实现更快捷、更安全的NFC认证
恩智浦推出安全互联MCU,实现更快捷、更安全的NFC认证 单芯片安全互联MCU解决方案集成了全功能NFC读卡器、可定制Arm® Cortex®-M33 MCU和完整的安全工具箱,可提供更快捷、更安全的NFC认证 中国上海——2023年3月15日—— 恩智浦半导体(NXP Semiconductors N.V.,)宣布推出单芯片解决方案PN7642,方案集成了一个可定制MCU、一个NFC读卡器,符合SESIP 2级安全评估标准,将有助于为物理访问解决方案、耗材验证、安全身份验证等NFC用例打造更便捷安全的NFC交易体验。 产品重要性 NFC技术已成为实现安全验证的基础,其应用场景丰富多样,如验证门口的人是否获得屋主
[物联网]
揭秘单片机解密技术
导语: 目前,芯片解密主要应用在PCB抄板方面,PCB抄板除了对电路板复制的简单概念,还包括了板上一些加密芯片的解密。随着专利概念和知识保护的加强,芯片解密会慢慢向为程序研究服务方向发展,而不是现在的产品复制方向。 芯片解密又叫单片机解密,单片机破解,芯片破解,IC解密,我们把CPLD解密,DSP解密都习惯称为芯片解密。单片机攻击者借助专用或自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段提取关键信息,获得单片机内的程序即为芯片解密技术。 芯片解密属于法律边缘的行业,但仁者见仁智者见智。某负责人表示,芯片解密只是一把刀,本身并没有对错,不过是握在谁的手里,拿刀去做什么,才最终决定了其性质的好坏。
[模拟电子]
MSP430G2553(一)IO外部中断说明
这一篇文章将说明MSP430G2553的IO中断配置,整个P1的IO都可以配置IO中断,但中断处理函数只有一个,MSP430和大多数MCU一样提供上升沿、下降沿选择。 在Launchpad上有按键S2,接在P1.3口,当按下后P1.3将接入高电平,从而触发中断。 所有寄存器的具体名称和地址,可以查看M430G2553 datasheet 第 21页中对于P1的寄存器定义 在实例代码中,配置了P1.3和P1.6的LED灯,当按下P1.3的按键产生中断,LED灯将切换点亮 1.按键的中断配置 要配置按键中断,需要先设置P1.3口为输入,并且设置上拉电阻以保障稳定性, P1DIR &= ~BIT3;//设置P1.
[单片机]
单片机系统中的软件抗干扰技术
近年来单片机系统在工业测控领域的应用越来越广泛,而对于环境恶劣的工业现场,这种新型的微控制器的可靠性、安全性就成为了一个大问题。在实验室运行正常的程序到了工业现场却不能运行,或者出现运行不稳定经常死机等。在这里主要讨论一下如何通过软件技术来增强系统的稳定运行。 当系统的 CPU 部位受到干扰信号的作用时,将使系统失控。最典型的故障是破坏程序计数器 PC 的状态值。导致程序在地址空间内 " 乱飞 " ,或者陷入死循环。对这种情况的处理主要有这么几种方法: 1 、指令冗余技术; 2 、软件陷阱技术; 3 、看门狗技术。 下面 以 MCS-51 单片机来做说明。 指令冗余技术 指令由操作码和操作数组成,操
[单片机]
基于51单片机的简易摇号抽奖机器
硬件设计 仿真图: 基于C51处理器,显示器基于LCD12864,通过一个按键开始抽奖,随机抽奖有谢谢参与 三等奖 二等奖 一等奖 特等奖 代码设计 /*******************************************************************/ /* LCD型号:TS12864A-3(带汉字库)或兼容型号 控制器ST7920 */ /* MCU:STC89S52 ,晶体频率:11.0592MHz */ /*******************************************************************/ #in
[单片机]
如何使用8051单片机在7段显示器上显示数字?
在使用 单片机开发 项目的时候,经常会使用到7段显示器。7段显示器可以显示字母和数字,它内部是其实是发光 LED 灯,通过控制不同的 接口 点亮内部LED灯,从而显示出数字。目前,它在许多 电子产品 中用于显示 信息 ,比如:充电宝、直发器等。 7段显示器由8个LED构成,这些LED以顺序方式连接,以方便在打开某些LED组合时显示0到9的数字。点亮时,它一次只显示一位数字。 使用80 51单片机 在7段显示器上显示数字的原理图: 在7段显示器上显示从“0到F”的数字的程序是: #include reg51.h sbit a= P3^0; sbit x= P3^1; sbit y= P3^2; sbit z= P3
[单片机]
模拟串口的实现单片机IO口
用EBOX向我们的电力线调试模块发数据,但是要有一个控制接口,但是EBOX没有提供,所有只好用MCU来做伺服器。 一般的单片机都只有一个串口,所以必须模拟一个出来。 /* sbit TXD1 = P1^4; //define p14 as the analog transmit port sbit RXD1 = P1^2; //define p12 as the analog recieve port */ #include REG52.H #define uint unsigned int #define uchar unsigned char #include intrin
[单片机]
基于单片机的光伏发电系统太阳自动跟踪器
摘要:由于太阳位置随时间而变化,使光伏发电系统的太阳能电池阵列受光照强度不稳定,从而降低了光伏电池的效率,因此,设计太阳自动跟踪器是提高光伏发电系统工作效率的有效措施。本文采用单片机EM78247为控制核心,设计了一个双轴太阳自动跟踪器,配合两台交流伺服电机实现光伏电池阵列与阳光照射之间的同步跟踪。该控制器在硬件和软件各方面采取了多项抗干扰措施,使其具有较好的跟踪效果和较强的抗干扰能力,且运行可靠稳定,具有较高的实际应用价值。 关键词:光伏发电系统;EM78247;太阳自动跟踪器 当今社会人们的环保意识越来越强,光伏发电系统的应用普遍受到各国政府重视。因为它不仅能为我们提供用之不竭的可持续再生电能,并更好地保护人类
[单片机]