STM32是如何进入中断函数的

发布者:Yudie最新更新时间:2018-12-27 来源: eefocus关键字:STM32  中断函数 手机看文章 扫描二维码
随时随地手机看文章

中断相信很多人都知道是什么意思,不同的任务有不同的优先级,高任务优先级会比低优先级先执行。在嵌入式系统中,


任务的调度和切换都是根据优先级来判断的。


中断可以分为软中断和硬中断。一开始接触到的一般都是软中断,软中断就是中断程序包含在主程序里面,当中断条件满足时,直接跳转到中断函数执行,然后再返回。就相当于判断语句。


刚开始接触STM32的小伙伴可能会发现main.c里面没有中断程序也没用跳转判断语句。例如:定时器中断


#include "system.h"

#include "SysTick.h"

#include "led.h"

#include "time.h"


int main()

{

 u8 i;

 SysTick_Init(72);

 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  

 TIM4_Init(1000,36000-1); 


大家会发现只有定时器初始化,没有跳转到中断函数啊。声明一下,中断函数在time.c里面声明了,是存在的。实时是这样就可以执行中断了。


原因在于这是一个硬件中断。当中断发生请求时 , 这里也就是定时器时间到,内核会读取这个中断来源,并且判断中断函数,而且中断函数在启动文件里面的名字已经配置好,不可以乱取,负责要改启动文件。在中断函数编写的时候启动文件为它分配了地址。这时处理器只要找到这个地址进入执行,执行完再返回。这样就完成了中断函数的跳转和执行。

关键字:STM32  中断函数 引用地址:STM32是如何进入中断函数的

上一篇:stm32F4电源管理PVD掉电数据存储
下一篇:STM32 关于外部中断线、中断源和中断服务函数的问题

推荐阅读最新更新时间:2024-03-16 16:21

STM32学习笔记----SysTick
SysTick时钟为HCKL的8分频,故如果HCLK时钟为72MHz,SysTick- LOAD的值为7200的话,则SysTick 1ms中断 一次。如果屏蔽全局中断的话,则STSTICK不能这用。 ---------------------------------------------------------------------------------------------------- 例: //SysTick 配置 if (SysTick_Config(SystemFrequency / 1000)) // (72MHz/1000)*SYSCL
[单片机]
在LINUX环境在编译STM32并烧写代码
因为最近在移植PixFlow的光流,需要在LINUX下编译32的代码并用JLINK烧写,当然光流代码部分现在还没研究懂。 首先我们需要下载好QT和JLINK工具,编译没什么好说的,就是在QT下代开工程构建即可。 JLINK烧写可以参考下面博客 http://www.cnblogs.com/zjutlitao/archive/2015/12/22/5065322.html 1,SEGGER官网下载最新jlink驱动,网址 https://www.segger.com/downloads/jlink ubuntu下当然选择DEB安装格式,我的机器是32位选择32位的开始下载(不知道系统是x86还是x64的可以在命令行里输入g
[单片机]
在LINUX环境在编译<font color='red'>STM32</font>并烧写代码
STM32之ADC学习
配置ADC 1、 系统时钟定义: RCC_Configuration(); 包涵: RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMAx, ENABLE); // Enable DMA clock RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADCx , ENABLE); // Enable ADC1 and GPIOC clock 2、 中断源配置: NVIC_Configuration(); 举例: { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_Pri
[单片机]
STM32蜂鸣器-库函数
需要注意的是,使用了库函数的模板就不能胡乱套用寄存器的操作,之前还想放个大招结果出丑了,这里的实验要求是绿灯亮,蜂鸣器响,红灯亮,蜂鸣器停止,蜂鸣器响起间隔半秒,led的文件我这里就不给出了,主要放出beep的文件吧,这里操作的是PF8口。 1.beep.h #ifndef __BEEP_H #define __BEEP_H #include sys.h #define BEEP PFout(8) void beep_init(void); #endif 2.beep.c #include beep.h void beep_init() { GPIO_InitTypeDef GPIO_InitS
[单片机]
基于VS1003B的语音通信方法研究
简介:在通指装备模拟训练器材研发中,经常会遇到需要模拟实现语音通话功能的情况。常规的解决方案是在计算机上通过高级语言编程实现对声音的采集和播放,并通过局域网进行传输。考虑到语音通信的模块化和可控性,文中以STM32F107VCT6作为核心处理器,采用VS1003B作为语音采集和播放器件,通过CAN总线实现语音和信令传输,设计实现了一种低成本、高质量的语音通信方法。 1 VS1003B解码芯片介绍 VS1003B是由芬兰VLSI公司出品的一款单芯片的MP3/WMA/MIDI音频解码和ADPCM编码芯片,其内部电路如图1所示。由图可见,VS1003B包含一个高性能、具有自主产权的低功耗DSP处理器内核VSDSP,工作数据存储器
[单片机]
基于VS1003B的语音通信方法研究
stm32_19264液晶LCD驱动程序
编译器为:MDK4.0 注意:若显示出现乱码的现象请适当修改延时函数 /****************************lcd.h********************************************/ #ifndef __LCD_H #define __LCD_H #include sys.h #define LCD_RS PFout(0)// PF.0 #define LCD_E PFout(1)// PF.1 #define LCD_CS1 PFout(2)// PF.2 #define LCD_RST PFout(3)// PF.3 #define LCD_CS2 PFout(4)// PF.
[单片机]
STM32的ADC精度说明
以下所有的说明来源于《STM32F103xx数据手册》(2008年5月 第7版)。这里没有新的信息,只是把数据手册中的相应部分翻译了一下。 在阅读这个数据手册中各个参数时,首先必须搞清楚这些参数是如何得到的。根据手册中5.1.1节和5.1.2节的说明,有些参数是在一定条件下在生产线上测试得到,有些则是根据样本测试后推算得出。下面这段话是5.1.1节和5.1.2节的译文摘录: 5.1.1 最小和最大数值 除非特别说明,在生产线上通过对100%的产品在环境温度TA=25℃和TA=TAmax下执行的测试(TAmax与选定的温度范围匹配),所有最小和最大值将在最差的环境温度、供电电压和时钟频率条件下得到保证。 在每个表格下方的注解中
[单片机]
<font color='red'>STM32</font>的ADC精度说明
关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题。出现如下警告或错误提示: warning: #223-D: function assert_param declared implicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); 这时候我们需要在“Target Options” 中的“C/C++”选项卡中如图-2所示红框中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。这样才能使编顺利通过。 图-2 知其然了,我们还得知其所以然。下面就听Herison给大家一一道来。我们知道,程序的执行是
[单片机]
关于<font color='red'>STM32</font> MDK中USE_STDPERIPH_DRIVER问题的解释
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved