你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32f103单片机(二)——外部中断总结

[复制链接]
STMCU小助手 发布时间:2021-1-7 17:02
STM32f103单片机(二)——外部中断总结



对于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函数)
4.1.png

这些就是我们要的中断函数的入口地址,当发生中断时,是哪种中断就进入相应地址。


二、中断
中断是指当出现需要时,CPU暂时停止当前程序的执行而执行处理新情况,大体的框图如下:
4.2.png
在STM32中还有一个中断优先级的问题,当出现多个中断时,他们执行的顺序是什么,如下图所示:3的优先级高于2的优先级高于1的优先级。

4.3.png

三、外部中断的程序流程

4.4.png

四、具体的做法
STM32口的外部中断映射如下,首先看那个叫要设置为外部中断,则看是EXTI几。
4.5.png

第一步:当然是设置系统时钟,调用的函数之前说过了,不说了。
4.6.png
第二步:设置一个口PA0为外部中端口,首先就是设置PA0为普通的输入口,在GPIO库文件中找,这里也不说了。
4.7.png
其次是设置IO口为外部中断。
4.8.png
接下来是设置外部中断,在.exti文件中进行设置。
4.9.png
根据这些函数配置外部中断
4.10.png
这个时候外部中断已经配置好了,但是还得配置中断和设置中断优先级,在misc.c文件中
4.11.png
根据库函数表就可以对应的找到设置。
4.12.png
这样中断就设置完成了。

接下来写中断服务函数。
4.13.png
但是还是不够,这时还需要把中断服务函数和我们启动文件中的中断响应函数连接起来,最后当发生中断时直接进入中断服务函数,这时再在启动文件中找到这个中断发生的函数入口
4.14.png
在stm32f10x_it.h中添加
4.15.png
在stm32f10x_it.c的文件中添加如下:
4.16.png
这样对于外部中断的驱动就完成了。

今天结束了我博士生涯的第一堂课,学术道德与学术修养,明天周末了,自从知道测绘的意义之后,就觉得自己做的都超级有意义,明天听完滴滴自动驾驶的讲座之后就回家,美好的周末就要开始了。


文章出处: 菜鸟硬件工程师小廖的成长日记
收藏 评论0 发布时间:2021-1-7 17:02

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版