运动控制器32:STM32的中断和事件功能和库函数

嵌套向量中断控制器

  • 68个中断通道
  • 16级优先级
  • 电源管理控制
  • 系统控制寄存器的时间

系统滴答

系统嘀嗒校准值固定为9000,当系统嘀嗒时钟设定为9MHz(HCLK/8的最大值),产生1ms时间基准。

中断和异常向量

68个中断,按照分组,可以分成:(小容量的有不同,比如增加了TIM8的中断,FSMC中断等,但是少了OTG等中断)

  1. 窗口定时器,电源电压PVD,侵入检测,RTC实时时钟和闹钟中断,FLASH全局,RCC(复位和时钟控制),一共8个
  2. 外部中断,EXTI0EXTI4,一共5个,59共用一个,中断10~15共用一个。
  3. DMA和DMA2 7个通道+5个通道,一共12个
  4. ADC1和ADC2全局
  5. CAN1的4个中断和CAN2的4个
  6. TIM1高级定时器1,4个,TIM2,3,4全局共7个,以及定时器567各一个全局,
  7. I2C两个模块的时间和错误,一共4个
  8. SPI1和SPI2全局各1各
  9. USART1到USART5一共5个全局
  10. 以太网全局和唤醒,两个
  11. OTG唤醒和全局
    另外要注意的是,每一个模块有很多的中断源,比如SPI通信,这里只有一个全局的中断,具体模块中的中断源,需要在使用具体模块时进行设置,并打开全局中断。

外部中断/事件控制器

对于互联型产品,外部中断/事件控制器由20个产生事件/中断请求的边沿检测器组成,每个输入线可以独立地配置输入类型(脉冲
或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。

唤醒事件

可以通过外部或者内部事件来唤醒内核,配置方法如下:

  1. 在外设中设置中断时,不设置NVIC使能,而是设置SEVONPEND位,CPU唤醒以后,需要软件进行清除。
  2. 也可以设置EXTI为事件模式,用来唤醒内核。

功能说明

外部中断可以做中断,也可以作为事件,如果作为事件,则要先配置并使能事件线,配置方法如下:

  1. 硬件中断
    • 打开屏蔽位
    • 设置触发选择
    • 设置NVIC通道使能和屏蔽位
  2. 硬件事件
    硬件事件则只需要配置两步,同上
  3. 软件中断/软件事件
    • 配置屏蔽位,设置软件中断寄存器请求位

端口映射

  • 端口一共有PA0,PB0,PC0PG0,一共7组端口的第0位挂在EXT10上,同样,PA1,PB1,挂在EXTI1上,这样PA0~PA15一共占16个通道。
  • 另外还有4根单独的先,分配给PVD,RTC,USB唤醒和以太网唤醒。

库函数介绍

初始化和去初始化,以及结构体初始化函数

初始化结构体如下:

- uint32_t  EXTI_Line  //具体的中断线
- FunctionalState  EXTI_LineCmd  //使能
- EXTIMode_TypeDef  EXTI_Mode  //中断OR事件
- EXTITrigger_TypeDef  EXTI_Trigger //触发沿

状态位 GetFlagStatus ClearFlag

这个简单,入口参数是某条中断线,返回的参数是是否产生了中断,这个在中断服务程序中使用。

中断和挂起 GetITStatus 和ClearITPendingBit

同上,挂起和查询某条中断线的标志。

GenerateSWInterrupt

产生一个软件中断,由软件来控制,相当于虚拟一个硬件中断。

GPIO_EXTILineConfig

在GPIO的头文件中,有一个GPIO_EXTILineConfig函数,函数的功能是使用某个脚作为中断线。

下面的中断口配置功能中,用到了这些函数。

void EXTI0_Config(void)
 {
   //使能GPIOA的时钟
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
   
   //设置A0初始化
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
   GPIO_Init(GPIOA, &GPIO_InitStructure);
 
   //使用的是A0的复用功能,打开复用时钟
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
 
   //使用GPIOA的PIN0作为中断线
   GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
 
   //配置中断线的初始化
   EXTI_InitStructure.EXTI_Line = EXTI_Line0;
   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  
   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
   EXTI_Init(&EXTI_InitStructure);
 
  //配置中断优先级和使能中断,并配置中断服务程序的位置
   NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
   NVIC_Init(&NVIC_InitStructure);
 }

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容