11-STM32外部中断编程_第1页
11-STM32外部中断编程_第2页
11-STM32外部中断编程_第3页
11-STM32外部中断编程_第4页
11-STM32外部中断编程_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STM32外部中断编程STM32外部中断编程主要涉及外部中断/事件管理库函数、嵌套向量中断控制器NVIC库函数以及中断服务函数等。GPIO_EXTILineConfig()函数,用来配置GPIO引脚与中断线EXTIx的映射关系。函数原型如下:voidGPIO_EXTILineConfig(uint8_tGPIO_PortSource,uint8_tGPIO_PinSource);例如:GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);STM32外部中断编程主要涉及外部中断/事件管理库函数、嵌套向量中断控制器NVIC库函数以及中断服务函数等。EXTI_Init()函数,对中断线上的中断进行初始化。函数原型如下:voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct)typedefstruct{uint32_tEXTI_Line;EXTIMode_TypeDefEXTI_Mode;EXTITrigger_TypeDefEXTI_Trigger;FunctionalStateEXTI_LineCmd;}EXTI_InitTypeDef;STM32的外部中断初始化是通过结构体来初始化(设置初始值)的。EXTI_InitTypeDef结构体的成员变量如下:STM32外部中断编程主要涉及外部中断/事件管理库函数、嵌套向量中断控制器NVIC库函数以及中断服务函数等。EXTI_Init()函数,对中断线上的中断进行初始化。例如:EXTI_InitTypeDefEXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line4;

//将中断映射到中断线EXTI4上EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

//设置为中断模式EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

//设置为下降沿触发中断EXTI_InitStructure.EXTI_LineCmd=ENABLE;

//中断使能,即开中断EXTI_Init(&EXTI_InitStructure);

//根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器STM32外部中断编程主要涉及外部中断/事件管理库函数、嵌套向量中断控制器NVIC库函数以及中断服务函数等。NVIC_PriorityGroupConfig()函数,选择使用哪种优先级分组方式。函数原型如下:voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup);#defineNVIC_PriorityGroup_0((uint32_t)0x700) //第0组#defineNVIC_PriorityGroup_1((uint32_t)0x600) //第1组#defineNVIC_PriorityGroup_2((uint32_t)0x500) //第2组#defineNVIC_PriorityGroup_3((uint32_t)0x400) //第3组#defineNVIC_PriorityGroup_4((uint32_t)0x300) //第4组这个函数的参数有5个,是在misc.h头文件中定义的,代码如下:例如,设置中断优先级分组为第2组,有2位抢占优先级、2位响应优先级,代码如下:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);STM32外部中断编程主要涉及外部中断/事件管理库函数、嵌套向量中断控制器NVIC库函数以及中断服务函数等。NVIC_Init()函数,设置中断优先级。其函数原型如下:voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct);typedefstruct{

uint8_tNVIC_IRQChannel;

uint8_tNVIC_IRQChannelPreemptionPriority;

uint8_tNVIC_IRQChannelSubPriority;

FunctionalStateNVIC_IRQChannelCmd;}NVIC_InitTypeDef;所有初始化的参数都是通过结构体指针NVIC_InitStruct来传递的,该指针指向NVIC_InitTypeDef类型的结构体。NVIC_InitTypeDef结构体的成员变量如下:STM32外部中断编程主要涉及外部中断/事件管理库函数、嵌套向量中断控制器NVIC库函数以及中断服务函数等。NVIC_Init()函数,设置中断优先级。例如:NVIC_InitTypeDefNVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x02;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure); STM32外部中断编程主要涉及外部中断/事件管理库函数、嵌套向量中断控制器NVIC库函数以及中断服务函数等。中断服务函数。外部中断服务函数的名字是在startup_stm32f10x_hd.s中是定义好的。中断线0~4的每个中断线对应一个EXTI0_IRQHandler~EXTI4_IRQHandler中断服务函数;中断线5~9共用一个EXTI9_5_IRQHandler中断服务函数;中断线10~15共用一个EXTI15_10_IRQHandler中断服务函数。STM32外部中断编程主要涉及外部中断/事件管理库函数、嵌套向量中断控制器NVIC库函数以及中断服务函数等。ITStatusEXTI_GetITStatus()和EXTI_ClearITPendingBit()函数ITStatusEXTI_GetITStatus()函数,判断某个中断线上的中断是否发生(标志位是否置位)。EXTI_ClearITPendingBit()函数,清除某个中断线上的中断标志位。还有EXTI_GetFlagStatus()和EXTI_ClearFlag()两个函数,分别用来判断外部中断状态以及清除外部状态标志位,作用和前面两个函数类似。只是在EXTI_GetITStatus()函数中会先判断这种中断是否使能,使能了才去判断中断标志位,而EXTI_GetFlagStatus()函数直接判断状态标志位。STM32外部中断编程主要涉及外部中断/事件管理库函数、嵌套向量中断控制器NVIC库函数以及中断服务函数等。STM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论