STM32初识——中断初始化过程(by woody)

发布者:haoying最新更新时间:2018-12-01 来源: eefocus关键字:STM32  中断初始化 手机看文章 扫描二维码
随时随地手机看文章

在库函数中,配置 GPIO 与中断线的映射关系的函数 GPIO_EXTILineConfig()来实现的:void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)


该函数将 GPIO 端口与中断线映射起来,使用范例是:

GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);


中断线上中断的初始化是通过函数 EXTI_Init()实现的。EXTI_Init()函数的定义是:

void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);


下面我们用一个使用范例来说明这个函数的使用:

EXTI_InitTypeDef EXTI_InitStructure; 

EXTI_InitStructure.EXTI_Line=EXTI_Line4;//1   

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//2

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//3

EXTI_InitStructure.EXTI_LineCmd = ENABLE;//4

EXTI_Init(&EXTI_InitStructure); //根据 EXTI_InitStruct 中指定的参数初始化外设 EXTI 寄存器

//第一个是中断线的标号,取值范围为EXTI_Line0~EXTI_Line15

//第二个参数是中断模式,可选值为中断 EXTI_Mode_Interrupt 和事件 EXTI_Mode_Event

//第三个参数是触发方式,可以是下降沿触发 EXTI_Trigger_Falling,上升沿触发 EXTI_Trigger_Rising,或者任意电平(上升沿和下降沿)触发EXTI_Trigger_Rising_FallingEXTI_InitStructure.EXTI_LineCmd = ENABLE;

//最后一个参数就是使能中断线了


设置 NVIC 中断优先级

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能按键外部中断通道

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级 2,

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;  //子优先级 2

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道

NVIC_Init(&NVIC_InitStructure); //中断优先级分组初始化



判断某个中断线上的中断是否发生(标志位是否置位):

ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);


清除某个中断线上的中断标志位:

void EXTI_ClearITPendingBit(uint32_t EXTI_Line);


常用的中断服务函数格式为:

void EXTI2_IRQHandler(void)

{

if(EXTI_GetITStatus(EXTI_Line2)!=RESET)//判断某个线上的中断是否发生

{

中断逻辑…

EXTI_ClearITPendingBit(EXTI_Line2); //清除 LINE 上的中断标志位

}


关键字:STM32  中断初始化 引用地址:STM32初识——中断初始化过程(by woody)

上一篇:stm32在rt-thread上的SysTick(系统定时器)
下一篇:STM32系统定时器SysTick

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

STM32定时器的预装寄存器以及影子寄存器话题
经常有人问起预装寄存器和影子寄存器的话题,其实STM32相关系列的手册里有介绍,有文档做介绍,这里借花献佛地一起分享下。 在谈预装寄存器及影子寄存器的差别前,不妨先对STM32定时器的时基单元做个基本了解。STM32各系列的定时器结构和框架基本是一样的,时基单元也一样。 下面时基单元是以STM32F3系列为参考。 时基单元中的TIMx_PSC、 TIM_ARR两个寄存器加上捕捉比较模块中TIMX_CCR寄存器,它们都可以动态修改。不过他们的修改和生效可能不在同一个时刻,这里便引入了预装寄存器及影子寄存器的概念。要记住一点,真正在TIMER模块中起作用的是影子寄存器。 1、用户程序对TIMx_PSC寄存器值的修
[单片机]
<font color='red'>STM32</font>定时器的预装寄存器以及影子寄存器话题
基于STM32单片机的简易电子琴设计(1)
1.1 系统功能 按照设计要求,本系统具有以下功能: 共有三个基本模式:电子琴模式、录音模式、播放器模式 电子琴模式:7个基本按键控制产生7种音调,功能键实现调节音阶和音量 录音模式:可分为录音和放音两个模块,录音状态下会记录弹奏的音调以及时间;放音模式调用音乐播放器某些模块,实现相同的功能。 音乐播放器模式:可以实现音乐的播放、暂停、切歌、调速、顺序播放、单曲循环、随机播放、以及进度条显示。 有两个全局按键中断,可控制模式切换和全局静音/暂停。 1.2 主要技术性能指标 基本按键:7个; 功能按键:6个; 全局中断按键:2个; 扬声器:1个; 扬声器功率:1w; LCD1602:1块; 主要模式:3个; 曲库:8首; 音
[单片机]
基于<font color='red'>STM32</font>单片机的简易电子琴设计(1)
STM32 ADC转换时间
STM32F103XX的ADC的采样时钟最快14MHz,最快采样率1MHz。 ADC时钟: 这个ADC时钟是从哪来的呢。我们看下面这个STM32的时钟结构图: 我们大多使用STM32的最快PCLK2系统时钟72MHz。 ADCCLK的时钟由72MHz的6分频能瞒住14MHz以下的要求 为12MHz。 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //72M/6=12,ADC最大时间不能超过14M ADC转换时间: 有如下公式: TCONV = 采样时间+ 12.5 个周期 其中12.5个周期是采集12位AD时间是固定的,另外一个采样时间可以取下面几个参数由SMPx 寄存器控制,每个通道可以单独配置
[单片机]
<font color='red'>STM32</font> ADC转换时间
STM32存储器理解
分类: 1 ROM (EPROM、EEPROM、NOR_Flash、NAND_Flash) 只读存储器,断电后数据保存,以前ROM是只能读取,不能擦写的,随着技术的发展,flash逐渐取代了rom,但功能上还沿用了rom的作用,所以把它归为rom类。 2 RAM (SRAM) 随机存储器,掉电数据丢失,但它的最大有点就是读写速度快,典型的RAM就是内存条。 加深理解: 在KEIL5中点击魔术棒,再点击TARGET,在下面的选型中有如下选项: options for target ROM 外部只读存储器 用户设置 RAM 外部随机存储器 用户设置 IROM
[单片机]
<font color='red'>STM32</font>存储器理解
基于STM32的SMS短消息收发系统
短消息服务(Short Message Senice)作为GSM网络提供给用户的一种基本的数字业务,已成为诸多领域远程监控的一种通信手段。在很多应用场合中都通过PC机直接控制短消息收发模块完成系统的数据采集或远程信息传输,但对于偏远地区、架设通信线路比较困难的地方,需要一种方便携带的设备控制短消息收发模块。系统通过在STM32上完成对短消息模块的控制,提出了一种嵌入式短消息收发系统的实现方法。 本文讨论一类通用的SMS短消息收发系统的实现方法,包含短消息调度和SMS短消息处理控制器的实现机制,特别对STM32嵌入式微处理器下短消息收发调度的实现过程和短消息处理状态机进行了详细讨论。在嵌入式系统中,时间和并行性(concur
[单片机]
基于<font color='red'>STM32</font>的SMS短消息收发系统
一文详解STM32的时钟系统
STM32的时钟树 时钟信号推动单片机内各个部分执行相应的指令,时钟就像人的心跳一样。 STM32本身十分复杂,外设非常多,任何外设都需要时钟才能启动,但并不是所有的外设都需要系统时钟那么高的频率,如果都用高速时钟势必造成浪费。同一个电路,时钟越快功耗越大、抗电磁干扰能力越弱。复杂的MCU采用多时钟源的方法来解决这些问题。如下图,是STM32的时钟系统框图。 如上图左边的部分,看到STM32有4个独立时钟源,HSI、HSE、LSI、LSE。 HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。 HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 LSI是低速内部时钟,RC
[单片机]
一文详解<font color='red'>STM32</font>的时钟系统
stm32定时器外部时钟3使用外部时钟源模式2进行定时的步骤
stm32中的通用定时器的计数时钟有三种,内部时钟、外部时钟源、内部触发输入这三种,其中内部时钟是大家都比较常用的,也是在应用中比较多的,我们现在主要来讲一下外部时钟源的模式2外部时钟模式2:外部触发输入。 编程步骤: 配置TIM3_ETR引脚为输入引脚PD2,硬件上需要将脉冲连接到该引脚,我这里是使用6.78MHz的晶振 配置定时器3:包括使能定时器3对应的时钟引脚,配置定时器3的周期、预分频参数 因为我们使用了定时器3中断,所以需要给定时器设置优先级,在timerx_nvic_init()中的关于TIM3部分操作 将SMCR中的ETF、ETPS、ETP和ECE进行配置 执行完了以上步骤之后还需要操作triggle中断
[单片机]
STM32在系统时钟为72M下的几个延时函数
//粗延时函数,微秒 void delay_nus(u16 time) { u16 i=0; while(time--) { i=10; //自己定义 while(i--) ; } } //毫秒级的延时 void delay_nms(u16 time) { u16 i=0; while(time--) { i=12000; //自己定义 while(i--) ; } } 运用SysTick来实现准确定时: Sys
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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