芯达stm32入门系列教程之九《初试stm32中断

芯达stm32入门系列教程之九《初试stm32中断

ID:23091254

大小:674.00 KB

页数:12页

时间:2018-11-04

芯达stm32入门系列教程之九《初试stm32中断_第1页
芯达stm32入门系列教程之九《初试stm32中断_第2页
芯达stm32入门系列教程之九《初试stm32中断_第3页
芯达stm32入门系列教程之九《初试stm32中断_第4页
芯达stm32入门系列教程之九《初试stm32中断_第5页
资源描述:

《芯达stm32入门系列教程之九《初试stm32中断》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、STM32入门系列教程初试STM32中断(2010-04-23)其它啥也不说,我们先看下芯达STM32外部中断所采用电路,非常简单,如下图所示:该电路直接从STM32系列的CPU引脚直接引出两个GPIO(PE2/PE3),外加上拉电阻后,使用一个轻触开关接地。很明显,按下开关时,PE2/PE3引脚接地,否则为高电平。学习STM32中断时,我们可以一边回想单片机中断系统一边学习。这里的思路就与单片机类似:当按下按键时,电平变动,使用上升或下降沿触发中断。对于单片机来说,很简单,开中断即可。但STM32却有所不同。我们使能配置EXTI、NVIC中断后,还需要注意IO口时

2、钟的使能。笔者当初忽略了AFIO时钟,调试2天没有结果,重新查看datasheet时,发现AFIO时钟没有打开。下面简单列出外部中断的编程思路:1、系统初始化,如系统时钟初始化,使之进入72MHZ主频;2、GPIO配置,务必注意打开GPIO时钟时,一定打开AFIO时钟。3、EXTI配置,在这里配置需要选择哪个引脚作为中断引脚。4、NVIC配置,这也是比单片机多出来的部分,我们必须把NVIC中对应的通道使能,并且设置优先级别。5、使用while(1)进行死循环,并在中断程序中写入中断发生时应如何处理。好吧,开始STM32的外部中断的编程之旅吧,详细的例程代码,请参考光

3、盘中的《芯达STM32配套例程》文件夹。本期例程使用的模板,是刚刚从STM32官网上下载的最新版本的3.0固件模板,其工程文件放在根目录下的ProjectTemplateRVMDK目录中,点击工程文件即可打开。同样只要关注main.c文件即可。步骤一系统初始化,使用固件模板中自带的SystemInit();函数即可。通过分析这个函数,我们会发现此函数把主频默认调整到72MHZ。步骤二GPIO配置,这以后均是需要自己编写的函数,例程中采用GPIO_Config();函数,如下所示:{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP

4、IOB

5、RCC_APB2Periph_GPIOE/***LED1->PB8,LED2->PB9,LED3->PE0,LED4->PE1*Key1->PE2,Key2->PE3*/}在这里函数里,我们首先使能了GPIOB、GPIOE的时钟,因为我们使用PB8PB9PE0PE1作为用户指示灯来验证外部中断,使用PE2PE3作为中断触发引脚。注意它们的配置中,同样是GPIO引脚,却需要把PE2PE3配置为浮空输入模式,而其他配置为输出模式——很好理解,因为LED指示灯是由CPU驱动点亮的,而中断引脚PE2PE3,是外界按键驱动的,相对于CPU来说,是“输入”。

6、步骤三EXTI的配置。此步相当于单片机的中断配置,使用的函数是EXTI_Config();函数。{选择EXTI_ClearITPendingBit(EXTI_Line3);EXTI_ClearITPendingBit(EXTI_Line2);EXTI_Init(&EXTI_InitStructure);}该函数中,首先指明当前系统中使用哪个引脚作为触发外部中断的引脚,这个直接使用固件库中提供的GPIO_EXTILineConfig();函数即可。我们指明了PE2PE3引脚作为触发中断引脚。然后使用EXTI_ClearITPendingBit();函数清除中断标志位

7、。关于中断标志位,大家应该都很熟悉。我们进入中断服务程序后,首先做的就是清除中断标志位,否则它会不断响应中断,不断进入中断函数。当然,我们这里做这个步骤,只是为了预防万一,您也可以删除此句试验下。另外需要说明的是EXTI_Line3,这个表示的是中断线3。对于外部中断中的GPIO,有16个中断线,分别是0-15,刚好对应于每个GPIO端口的0-15引脚。接下来设置外部中断结构体的成员,比如EXTI_Mode_Interrupt即为中断请求,还有一个是EXTI_Mode_Event,事件请求。这里就有一个问题了,事件和中断到底啥关系呢?请参考如下语句(网络上查的):“

8、事件:是表示检测有一某件触发事件发生了。中断:有某个事件发生并产生中断,并跳转到对应的中断处理程序中。事件可以触发中断,也可以不触发中断有可能被更优先的中断屏蔽,事件不会事件只是一个触发信号(脉冲),而中断则是一个固定的电平信号”我们采用的触发方式是上升沿触发EXTI_Trigger_Rising,使用的中断线是EXTI_Line2和EXTI_Line3,实际上就是指明使用的是GPIO的第2引脚和第3引脚。最后不要忘了务必要使能它,呵呵。步骤四NVIC配置。先解释下NVIC,它的中文全称是“嵌套向量中断控制器。”我们进行NVIC配置时,采用的是NVIC_Conf

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

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

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