0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32外部中断

冬至子 来源:HyanLabviewCoder 作者:Happy Every Moment 2023-10-24 09:29 次阅读

68个可屏蔽中断通道,包括EXTI,TIM,ADC,USART,SPI,I²C,RTC等多个外设(F1系列最多的数量,以型号为主);

使用NVIC统一管理中断,每个中断通道都拥有16个可编程优先等级,可以对优先级进行分组,进一步设置抢占优先级和响应优先级。

图片

图片

图片

AFIO内部图

图片

EXTI内部图

图片

中断和事件的区别

图片

NVIC的中断优先级由优先级寄存器的4位(0-15)决定,这四位可以进行切分,分为高N位的抢占优先级,

和4-n位的响应优先级;

抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的话,

按照中断号排队。

操作的是NVIC->IPRx寄存器

图片

图片

中断示例

main

#include "stm32f10x.h" // Device header

#include "Delay.h"

#include "OUT1.H"

#include "Interrupt.h"

int main(void)

{

OUT1_Init();

Interrupt_Init();

OUT1_OFF();

while(1)

{

    Delay_s(5);

    OUT1_OFF();

}

}

interrupt.c

#include "stm32f10x.h" // Device header

#include "OUT1.h"

void Interrupt_Init (void)

{

//开启GPIOC的时钟控制

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);  

//开启AFIO的时钟控制

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);   

//EXTI的时钟控制不需要开启     

//NVIC也不需要开启,NVIC是属于内核内的外设    

                                                      

/*配置GPIO   */  

GPIO_InitTypeDef GPIO_InitStructur;

GPIO_InitStructur.GPIO_Mode=GPIO_Mode_IPU;      //设置成上拉输入

GPIO_InitStructur.GPIO_Pin=GPIO_Pin_15;         //选择15号Pin脚

GPIO_InitStructur.GPIO_Speed=GPIO_Speed_50MHz;  //不重要

GPIO_Init(GPIOC,&GPIO_InitStructur);            //选择C组的GPIO

/*配置AIFO    */

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource15);  //设置PC15为外部中断线



/*配置EXIT    */

EXTI_InitTypeDef EXTI_Initstructure;

EXTI_Initstructure.EXTI_Line=EXTI_Line15;             //配置中断线

EXTI_Initstructure.EXTI_LineCmd=ENABLE;               //是否开启中断

EXTI_Initstructure.EXTI_Mode=EXTI_Mode_Interrupt;     //配置成中断

EXTI_Initstructure.EXTI_Trigger=EXTI_Trigger_Rising;  //配置成上升沿触发

EXTI_Init(&EXTI_Initstructure);



/*配置NVIC   配置中断分组  */

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //配置中断抢占优先级和响应优先级分组



NVIC_InitTypeDef NVIC_InitStruct;

NVIC_InitStruct.NVIC_IRQChannel=EXTI15_10_IRQn;

NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;

NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1; //配置抢占优先级

NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;        //配置响应优先级    

NVIC_Init(&NVIC_InitStruct);

}

/*编写中断函数,中断函数的名字都是固定的,中断函数都是无参数无返回值的 */

/*编中断函数的函数名可以在启动文件startup_stm32f10x_md.s中可以找到 */

/*中断函数的名字都是以_IRQHandler结尾 */

void EXTI15_10_IRQHandler(void)

{

if(EXTI_GetITStatus(EXTI_Line15)==SET)

{

    /*编写中断程序  */

    OUT1_ON();

    EXTI_ClearITPendingBit(EXTI_Line15);  //清除中断标志位

}

}

interrupt.h

#ifndef __Interrupt_H

#define __Interrupt_H

void Interrupt_Init (void);

#endif

图片

图片

图片

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5343

    浏览量

    120328
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    355925
  • 外部中断
    +关注

    关注

    1

    文章

    131

    浏览量

    15821
  • 时钟控制
    +关注

    关注

    0

    文章

    17

    浏览量

    6824
  • AFIO
    +关注

    关注

    0

    文章

    6

    浏览量

    2948
收藏 人收藏

    评论

    相关推荐

    STM32CubeIDE软件实现STM32外部中断实例

    本文用STM32CubeIDE软件实现STM32外部中断实例。
    的头像 发表于 08-24 09:09 4367次阅读

    STM32外部中断的设置

    发现了一个关于STM32外部中断的设置小文章
    发表于 03-13 16:04

    STM32外部中断的怎么配置

    STM32中断分组STM32外部中断的配置过程使用GPIO口接按键进行外部
    发表于 03-02 07:34

    详细解析STM32外部中断

    说明:本文旨在详细解析STM32外部中断,以实现按键触发外部中断。其中包含“编程流程”、“程序代码”、“代码解析”、“原理分析”、“小结”
    发表于 08-13 07:50

    STM32外部中断简介

    STM32外部中断+TFTLCD显示STM32外部中断简介S
    发表于 08-16 07:46

    stm32外部中断简介

    stm32外部中断实验
    发表于 08-17 08:20

    STM32外部中断中断通道是什么?

    STM32外部中断中断通道是什么?
    发表于 11-16 09:12

    STM32外部中断怎么设置?

    STM32外部中断怎么设置?
    发表于 11-18 07:36

    STM32外部中断实现红外遥控功能

    STM32外部中断实现红外遥控功能。
    发表于 12-14 15:49 67次下载

    STM32_外部中断程序

    STM32 外部中断程序,很好的学习资料,快来下载吧
    发表于 02-15 17:09 30次下载

    STM32外部中断实验-EXTI

    STM32 外部中断简介STM32 的每个 IO 都可以作为外部中断
    发表于 11-29 16:06 9次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>外部</b><b class='flag-5'>中断</b>实验-EXTI

    STM32外部中断边沿触发存在延时问题

    STM32外部中断时延问题概括:通过软件调试,示波器观察的方式,来分析外部中断存在时延的原因。在调试模拟SPI接收的时候,想用
    发表于 12-27 18:27 20次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>外部</b><b class='flag-5'>中断</b>边沿触发存在延时问题

    STM32 外部中断实验参考程序

    STM32 外部中断实验程序,供STM32初学者参考。
    发表于 12-30 10:46 41次下载

    STM32如何配置外部中断STM32外部中断配置步骤

    STM32如何配置外部中断STM32外部中断配置步骤  作为一款现代化的微控制器,
    的头像 发表于 10-26 17:47 3557次阅读

    STM32外部中断大问题

    出现这种情况,明明没有触发外部中断,可是中断服务函数还是不断的++。问题一:电气噪声和抖动电气噪声和抖动是常见的问题,可能会导致STM32外部
    的头像 发表于 11-08 08:00 2295次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>外部</b><b class='flag-5'>中断</b>大问题