历史上的今天

今天是:2024年09月22日(星期日)

正在发生

2018年09月22日 | 【STM32电机矢量控制】记录13——EXTI外部中断

发布者:cxd88988 来源: eefocus关键字:STM32  电机  矢量控制  EXTI  外部中断 手机看文章 扫描二维码
随时随地手机看文章

STM32的EXTI控制器支持19 个外部中断/ 事件请求。每个中断设有状态位,每个中断/ 事件都有独立的触发和屏蔽设置。

STM32的19个外部中断对应着19路中断线,分别是EXTI_Line0-EXTI_Line18:


线0~15:对应外部 IO口的输入中断。

线16:连接到 PVD 输出。

线17:连接到 RTC 闹钟事件。

线18:连接到 USB 唤醒事件。

触发方式:STM32 的外部中断是通过边沿来触发的,不支持电平触发。 

外部中断分组:STM32 的每一个GPIO都能配置成一个外部中断触发源,STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。


STM32的每个IO口都可以作为中断输入,这点很好用。要把IO口作为外部中断输入,有以下几个步骤:

1)初始化IO口为输入。

这一步设置你要作为外部中断输入的IO口的状态,可以设置为上拉/下拉输入,也可以设置为浮空输入,但浮空的时候外部一定要带上拉,或者下拉电阻。否则可能导致中断不停的触发。在干扰较大的地方,就算使用了上拉/下拉,也建议使用外部上拉/下拉电阻,这样可以一定程度防止外部干扰带来的影响。

2)开启IO口复用时钟,设置IO口与中断线的映射关系。

STM32的IO口与中断线的对应关系需要配置外部中断配置寄存器EXTICR,这样我们要先开启复用时钟,然后配置IO口与中断线的对应关系。才能把外部中断与中断线连接起来。

3)开启与该IO口相对的线上中断/事件,设置触发条件。

这一步,我们要配置中断产生的条件,STM32可以配置成上升沿触发,下降沿触发,或者任意电平变化触发,但是不能配置成高电平触发和低电平触发。这里根据自己的实际情况来配置。同时要开启中断线上的中断,这里需要注意的是:如果使用外部中断,并设置该中断的EMR位的话,会引起软件仿真不能跳到中断,而硬件上是可以的。而不设置EMR,软件仿真就可以进入中断服务函数,并且硬件上也是可以的。建议不要配置EMR位。

4)配置中断分组(NVIC),并使能中断。

这一步,我们就是配置中断的分组,以及使能,对STM32的中断来说,只有配置了NVIC的设置,并开启才能被执行,否则是不会执行到中断服务函数里面去的。关于NVIC的详细介绍,请参考前面章节。

5)编写中断服务函数。

这是中断设置的最后一步,中断服务函数,是必不可少的,如果在代码里面开启了中断,但是没编写中断服务函数,就可能引起硬件错误,从而导致程序崩溃!所以在开启了某个中断后,一定要记得为该中断编写服务函数。在中断服务函数里面编写你要执行的中断后的操作。

EXTI库函数:

【STM32电机FOC】记录13——EXTI外部中断

EXTI配置例程:

EXTI初始化设置:

void EXTI_PB9_Init(void)

 

{

  GPIO_InitTypeDef GPIO_InitStructure;

  NVIC_InitTypeDef NVIC_InitStructure;

  EXTI_InitTypeDef EXTI_InitStructure;

     //使能GPIO和AFIO时钟,值得注意的是,当使用外部中断的时候必须使能AFIO时钟。

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);

     

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //浮空输入

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //IO速度为50MHz

  GPIO_Init(GPIOB,&GPIO_InitStructure);  

  

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9);//将EXIT线9连接到PB9

  EXTI_InitStructure.EXTI_Line = EXTI_Line9;

  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;  //上升下降沿触发

  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能中断线

  EXTI_Init(&EXTI_InitStructure);//初始化中断

  

  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  NVIC_Init(&NVIC_InitStructure);

}

配置中断服务函数: 

void EXTI9_5_IRQHandler(void)

{

  if(EXTI_GetITStatus(EXTI_Line9) != RESET)  //EXTI9产生了中断

  {

   ……………………………………………………//中断处理程序

  }

  EXTI_ClearITPendingBit(EXTI_Line9);//清除中断

}


 

主要完成任务:

1、整理回顾STM32的系列配置,进行系统性地整理;

2、整理FOC电机程序,进行查缺补漏;

3、回顾方波驱动程序;


关键字:STM32  电机  矢量控制  EXTI  外部中断 引用地址:【STM32电机矢量控制】记录13——EXTI外部中断

上一篇:【STM32电机矢量控制】记录14——霍尔传感器
下一篇:【STM32电机矢量控制】记录12——IWDG看门狗

推荐阅读

看门狗概念: 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都会陷入死循环。程序的正常运行被打断,由单片机控制的系统无法继续正常工作,会造成整个系统陷入停滞状态,发生不可预料的后果。看门狗就是定期的查看芯片...
1、自主品牌工业机器人销量、市占率双双上升 一路高歌猛进的中国机器人市场在2018年出现了销量下滑,全年共累计销售机器人13.3万台,同比下降了3.75%,而自主品牌机器人却在糟糕的大环境下交出了一份不错的答卷。 2007-2018中国工业机器人出货量 来看这样一组数据:2013年国产机器人国产占有率为25.7%,2016年国产机器人的市场占有率为32.7%,2017年...
  1、msp430的存储结构采用冯。依曼结构,即RAM和Flash在同一个寻址空间内统一编址,没有代码空间和数据空间之分。  2、Flash是以段为为基本结构进行存储的。总体上分三部分:  Flash主存储区: 用于存储程序代码,被分成4个扇区,每个扇区分128seg, 每个seg段 大小为 64 * 1024 / 128 = 512B。 Flash控制器可以以位、字节、或者字的格...
描述Vision Components展示了各种新的摄像头模块,将高图像质量和高帧速率与MIPI CSI-2接口的优势相结合,模块由传感器板和完全集成的MIPI适配器板组成。图:Vision Components在VC MIPI相机模块中另外集成了索尼Pregius和Starvis传感器,使其具有高图像质量、高感光度和高帧速率借助本款产品,用户可以使用没有原生MIPI接口的索尼Pregius和Starvis系...

史海拾趣

问答坊 | AI 解惑

为今天的多模手机选择最恰当的发射架构

在竞争激烈的GSM电话终端市场上,终端制造商开始期待可以加快开发速度和缩短开发周期的解决方案。由于越来越多功能丰富的新型手机开始集成百万像素数字相机、蓝牙技术和多媒体功能,设计者开始寻找尺寸更小和集成度更高的发射和接收RF模块,它们能 ...…

查看全部问答∨

W24129AK

华邦 静态 RAM 技术资料 = 61128 …

查看全部问答∨

几种软件滤波算法的比较

第1种方法限幅滤波法(又称程序判断滤波法) A方法 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代 ...…

查看全部问答∨

超声波测距学习板套件的完整原理图

赛先生科技(www.schoolboy.com.cn)原创的超声波学习板套件之原理图,详情可以登陆该网站。…

查看全部问答∨

读《把时间当作朋友》(六):学习方法真的那么重要吗

原文: 学习方法真的至关重要么 前面已经提到我作为老师经常遇到学生问“老师,这个方法真的有用么?”其 实,我知道学生的问题不止这一个,他们还有更进一步的问题。当然,只有聪明 的人才去关心方法,这没什么不对。然而,学生总是过分关心自 ...…

查看全部问答∨

wince5.0系统下如何编写服务程序

各位eeworld的朋友,最近小弟在弄WINCE,想在WINCE下写服务程序,使的开机启动服务,为PC机与WINCE通讯(通过网络)提供相应的服务,我想找个Demo程序,听说和流式驱动写法相似,请大家为我提供相应思想或者实例程序,谢谢了!…

查看全部问答∨

WinCE+PXA270 DMA传输问题!

我用的是WinCE5.0的系统,使用的BVDMAIN的bsp。 在driver里面有一个DMA文件夹,里面有一些使用DMA时相关的函数。还有一个例程代码。 但是我用例程代码调试,总是不成功。 请教一下是什么原因,谢谢 代码如下: #define FPGA_DMA_BUFFER_SI ...…

查看全部问答∨

evc 头文件的问题

evc支持directx吗? 为什么我在pb中的实现的文件在evc下说找不到<imaging.h>?…

查看全部问答∨

为什么写了一个简单的软件延时程序无法调试

我在书上抄的一段程序 #include \"io430.h\" #include<msp430x44x.h>#define Const 100vodi SoftDelay(int Factor){int i,j;for(i=0;i<Factor;i++)    for(j=0;j<Const;j++); }void main(void){ _NOP();  SoftDelay ...…

查看全部问答∨

msp430LaunchPad风火轮触摸板手册

msp430LaunchPad风火轮触摸板手册   …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved