stm32简记之nvic和外部中断

stm32简记之nvic和外部中断

ID:34707990

大小:50.26 KB

页数:3页

时间:2019-03-09

stm32简记之nvic和外部中断_第1页
stm32简记之nvic和外部中断_第2页
stm32简记之nvic和外部中断_第3页
资源描述:

《stm32简记之nvic和外部中断》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、STM32简记之NVIC和外部中断Postedon2013/06/20byM1之前用stm32也就是用些内部资源或者耍耍前辈留下来的库,最近在写SPWM波的时候才知道自己对于中断这方面的欠缺,更暴漏了我学东西不打基础的恶习,所以打算重新整理下资料,原因有二:1、通过这种方式能加深记忆。2、方便以后查看。因为只追求自己看得懂所以总结的比较简洁,所以称之为简记。步骤如下:1、系统初始化,如系统时钟初始化,使之进入72MHZ主频;程序启动时已调用SystemInit()函数将主频改为72MHZ。2、GPIO配置,务必注意打

2、开GPIO时钟时,一定打开AFIO时钟。在使用引脚的重映射功能和外部中断时需要使用AFIO时钟。3、EXTI配置,在这里配置需要选择哪个引脚作为中断引脚。   EXTI_InitTypeDefEXTI_InitStructure;定义一个EXTI初始化结构体   EXTI_InitStructure.EXTI_Line=EXTI_Line1;设置中断线:EXTIL_Line1为中断线1   EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;模式:这里有两个模式,一个是中

3、断模式,也就是事件,具体区别如下:“事件:是表示检测有一某件触发事件发生了。中断:有某个事件发生并产生中断,并跳转到对应的中断处理程序中。事件可以触发中断,也可以不触发中断有可能被更优先的中断屏蔽,事件不会事件本质上就是一个触发信号,是用来触发特定的外设模块或核心本身(唤醒).事件只是一个触发信号(脉冲),而中断则是一个固定的电平信号”   EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;设置触发中断方式:EXTI_Trigger_Falling设置输入线路下

4、降沿为中断请求EXTI_Trigger_Rising设置输入线路上升沿为中断请求EXTI_Trigger_Rising_Falling设置输入线路上升沿和下降沿为中断请求    EXTI_InitStructure.EXTI_LineCmd=ENABLE;定义选择中断线的新状态   EXTI_Init(&EXTI_InitStructure); 根据EXTI_InitStructure中指定的参数初始化外设EXTI寄存器。4、NVIC配置,这也是比单片机多出来的部分,我们必须把NVIC中对应的通道使能,并且设置优先级

5、别。NVIC(嵌套中断向量控制器),用于管理中断优先级。比如在英语四级考试期间,饭堂特殊情况,监考老师优先打饭(抢占优先级),但是监考老师与监考老师之间也要排队(响应优先级),也就是说监考老师可以直接来抢断学生打饭的位置,但是监考老师与监考老师之间必须排队,不能抢断。STM32中指定优先级的寄存器为4位,其定义如下:第0组:所有4位用于指定响应优先级第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级第3组:最高3位用于指定抢占式优先级,最低

6、1位用于指定响应优先级第4组:所有4位用于指定抢占式优先级可以通过voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup)来设定。例如:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1)//设置位第1组配置外部中断1优先级:   NVIC_InitStructure.NVIC_IRQChannel=EXTI1_IRQn;  //配置中断通道   NVIC_InitStructure.NVIC_IRQChannelPree

7、mptionPriority=0; //抢占优先级   NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//响应优先级   NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//改中断NVIC的新状态   NVIC_Init(&NVIC_InitStructure);//按照结构体内容定义该通道NVIC5、编写中断函数。在启动文件(startup_stm32f10x_hd.s)中找到中断函数名称,将其加在stm32f10x_it.

8、c内,例如:voidEXTI2_IRQHandler(void){   delay_init();   delay_ms(580);   flag=!flag;   if(flag)   {      GPIO_SetBits(GPIOE,GPIO_Pin_4);   }   else   {      GPIO_ResetBits(GPIOE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。