书签 分享 收藏 举报 版权申诉 / 34
上传文档赚钱

类型第8章STM32F10x的主要模块设计3外部中断课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:5067606
  • 上传时间:2023-02-07
  • 格式:PPT
  • 页数:34
  • 大小:1.80MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第8章STM32F10x的主要模块设计3外部中断课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    STM32F10x 主要 模块 设计 外部 中断 课件
    资源描述:

    1、Embedded System DevelopmentEmbedded System Development嵌入式系统与应用嵌入式系统与应用 第第8 8章章 STM32F10 xSTM32F10 x的主要模块设计的主要模块设计3 3外部中断外部中断F8.3 8.3 外部中断外部中断F8.3.1 GPIO8.3.1 GPIO键盘设计实验键盘设计实验F8.3.2 8.3.2 外部中断外部中断EXTIEXTI设计设计8.3.1 GPIO 8.3.1 GPIO 键盘设计实验键盘设计实验FGPIOGPIO端口如何进行键盘设计?端口如何进行键盘设计?F下面两种办法效果一样。下面两种办法效果一样。F一是采用

    2、上拉输入模式,按键在一是采用上拉输入模式,按键在没按下的时候,默认为高电平。没按下的时候,默认为高电平。PE5 key1PE5 key1PE6 key2 PE6 key2 F二是直接采用浮空输入模式,在二是直接采用浮空输入模式,在芯片外部接上拉电阻。芯片外部接上拉电阻。F按键实现LEDLED灯灯反转。按键原理图按键原理图1、按键实现LEDLED灯灯反转main()main()int main(void)int main(void)/*config the led config the led*/LED_GPIO_Config();LED_GPIO_Config();LED1(ON);LED1(

    3、ON);/*config keyconfig key*/Key_GPIO_Config();Key_GPIO_Config();while(1)while(1)if(Key_Scan(GPIOE,GPIO_Pin_5)=KEY_ON)if(Key_Scan(GPIOE,GPIO_Pin_5)=KEY_ON)/*LED1LED1灯反转灯反转*/GPIO_WriteBit(GPIOC,GPIO_Pin_3,GPIO_WriteBit(GPIOC,GPIO_Pin_3,BitAction(1-GPIO_ReadOutputDataBit(GPIOC,BitAction(1-GPIO_ReadOutp

    4、utDataBit(GPIOC,GPIO_Pin_3);GPIO_Pin_3);读取PC3的当前输出电平当前状态反相后写入到PC3按键实现LEDLED灯灯反转F把前面写的把前面写的LedLed灯灯led.cled.c和和led.hled.h复制到本工程文件夹,编复制到本工程文件夹,编写写mainmain函数:函数:F1 1、先调用了、先调用了led.cled.c中的中的LED_GPIO_Config()LED_GPIO_Config(),配置,配置LEDLED用到用到的的I/OI/O。F2 2、调用、调用LED1(ON)LED1(ON),把,把LEDLED灯灯1 1点亮。点亮。F3 3、调用、

    5、调用Key_GPIO_Config(),Key_GPIO_Config(),配置按键用到的配置按键用到的I/OI/O口。口。F4 4、调用、调用Key_Scan()Key_Scan()按键检测函数,监测到按键时,调用按键检测函数,监测到按键时,调用GPIO_WriteBit()GPIO_WriteBit()函数实现灯反转。函数实现灯反转。FBitActionBitAction枚举定义在枚举定义在stm32f10 x_gpio.hstm32f10 x_gpio.h第第104104行:行:typedef enumtypedef enum Bit_RESET=0,Bit_RESET=0,Bit_SE

    6、T Bit_SETBitAction;BitAction;2 2、bsp_key.hbsp_key.h按键函数头文件F主要声明主要声明Key_GPIO_ConfigKey_GPIO_Config()()、Key_ScanKey_Scan()()两个函数:两个函数:#ifndefifndef _KEY_H /_KEY_H /条件编译条件编译#define _KEY_H#define _KEY_H#include stm32f10 x.h#include stm32f10 x.h#define KEY_ON#define KEY_ON 0 /0 /按键按下标志按键按下标志#define KEY_O

    7、FF#define KEY_OFF1 /1 /无按键标志无按键标志void void Key_GPIO_ConfigKey_GPIO_Config(void);(void);uint8_t uint8_t Key_ScanKey_Scan(GPIO_TypeDefGPIO_TypeDef*GPIOx,u16 GPIOx,u16 GPIO_PinGPIO_Pin););#endifendifF在在bsp_key.Cbsp_key.C文件中实现上两个函数。文件中实现上两个函数。3 3、Key_GPIO_Config()Key_GPIO_Config()函数函数F与与LEDLED的的GPIOGPIO

    8、初始化函数初始化函数LED_GPIO_ConfigLED_GPIO_Config()()类似。类似。#include include bsp_key.hbsp_key.h void void Key_GPIO_ConfigKey_GPIO_Config(void)(void)GPIO_InitTypeDefGPIO_InitTypeDef GPIO_InitStructureGPIO_InitStructure;/*开启按键开启按键端口端口GPIOEGPIOE(PE5PE5)的时钟)的时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE

    9、RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE););GPIO_InitStructure.GPIO_PinGPIO_InitStructure.GPIO_Pin =GPIO_Pin_5;=GPIO_Pin_5;GPIO_InitStructure.GPIO_ModeGPIO_InitStructure.GPIO_Mode =GPIO_Mode_IPUGPIO_Mode_IPU;GPIO_InitGPIO_Init(GPIOE(GPIOE,&,&GPIO_InitStructureGPIO_InitStructure););F可用符号可用符

    10、号|同时同时配置多配置多个:个:GPIO_Pin_5|GPIO_Pin_6;GPIO_Pin_5|GPIO_Pin_6;4 4、Key_Scan()Key_Scan()按键检测函数按键检测函数F/*输入输入 :GPIOxGPIOx、GPIO_PinGPIO_Pin:待读取的端口、引脚,:待读取的端口、引脚,*输出输出 :KEY_OFF(KEY_OFF(没按下按键没按下按键)、KEY_ONKEY_ON(按下按键)(按下按键)*/u8 u8 Key_ScanKey_Scan(GPIO_TypeDefGPIO_TypeDef*GPIOx,u16 GPIOx,u16 GPIO_PinGPIO_Pin)

    11、/*检测是否有按键按下检测是否有按键按下 */if(if(GPIO_ReadInputDataBitGPIO_ReadInputDataBit(GPIOx,GPIO_PinGPIOx,GPIO_Pin)=KEY_ON)=KEY_ON)Delay(10000);/Delay(10000);/延时消抖延时消抖 if(if(GPIO_ReadInputDataBitGPIO_ReadInputDataBit(GPIOx,GPIO_PinGPIOx,GPIO_Pin)=KEY_ON)=KEY_ON)while while(GPIO_ReadInputDataBitGPIO_ReadInputDataB

    12、it(GPIOx,GPIO_PinGPIOx,GPIO_Pin)=KEY_ON);)=KEY_ON);return KEY_ON;/return KEY_ON;/等待按键释放等待按键释放 else else return KEY_OFF;return KEY_OFF;else else return KEY_OFF;return KEY_OFF;Key_Scan()Key_Scan()按键检测函数按键检测函数F库函数库函数GPIO_ReadInputDataBit(GPIO_ReadInputDataBit(端口号,引脚号端口号,引脚号);F返回引脚的数据,返回引脚的数据,0 0为低电平即为低

    13、电平即KEY_ONKEY_ON,可能有按键按下,可能有按键按下,调用延时函数消抖;否则返回,调用延时函数消抖;否则返回1 1为高电平即为高电平即KEY_OFFKEY_OFF,表,表示按键没有被按下。示按键没有被按下。F延时之后再次读取该引脚数据,若依然为低电平,表明确延时之后再次读取该引脚数据,若依然为低电平,表明确实有按键被按下了;否则返回实有按键被按下了;否则返回KEY_OFFKEY_OFF,表示没按键。,表示没按键。Fwhilewhile循环调用循环调用GPIO_ReadInputDataBit()GPIO_ReadInputDataBit(),等待按键释放,等待按键释放,条件变为假退出

    14、循环,返回表示按键被按下的标志,条件变为假退出循环,返回表示按键被按下的标志KEY_ONKEY_ON。F同理,通过输入不同的实参,来检测其它按键的引脚。这同理,通过输入不同的实参,来检测其它按键的引脚。这就是库的魅力!就是库的魅力!作业作业F1 1、进一步熟悉、进一步熟悉GPIOGPIO,掌握,掌握GPIOGPIO设计。设计。F2 2、掌握、掌握GPIOGPIO键盘实验,实验报告。键盘实验,实验报告。8.3.2 8.3.2 STM32中断向量表F上个实验中上个实验中while(1)while(1)程序中始终轮询检测是否有程序中始终轮询检测是否有按键按下,浪费按键按下,浪费CPUCPU时间、能耗

    15、。可采用中断处理方式,时间、能耗。可采用中断处理方式,当按键按下时触发中断再检测按键。当按键按下时触发中断再检测按键。FSTM32STM32的所有的所有GPIOGPIO都可以用作外部中断源,可把按键轮询都可以用作外部中断源,可把按键轮询检测改为由中断来处理,大大提高软件执行的效率。检测改为由中断来处理,大大提高软件执行的效率。F向量中断控制器向量中断控制器NVICNVIC属于属于CortexCortex内核的器件,编号为内核的器件,编号为1 11515的对应系统异常,大于等于的对应系统异常,大于等于1616的则全是外部中断。的则全是外部中断。FSTM32STM32中断向量表,优先级从中断向量表

    16、,优先级从-3-3至至6 6(即编号(即编号1 11515)为系)为系统异常,优先级为负的不能设置优先级,如复位统异常,优先级为负的不能设置优先级,如复位ResetReset、不可屏蔽中断不可屏蔽中断NMINMI、硬错误、硬错误HardfaultHardfault。F从优先级从优先级7 7开始(即类型编号开始(即类型编号1616开始)的为外部中断,优开始)的为外部中断,优先级自行设置。先级自行设置。STM32中断向量表STM32中断向量表8.3.3 8.3.3 STM32外部中断控制器EXTIEXTIF向量中断控制器向量中断控制器NVICNVIC能配置能配置1616种外部中断种外部中断EXTI

    17、x(015)EXTIx(015),超过超过1616个中断事件时,必然有个中断事件时,必然有2 2个以上的中断事件使用相同个以上的中断事件使用相同的中断种类。注意:相同种类的中断不能嵌套。的中断种类。注意:相同种类的中断不能嵌套。F外部中断控制器外部中断控制器EXTIEXTI配置管理外配置管理外部事件输入部事件输入GPIOGPIO引脚与引脚与EXTIxEXTIx的的连接方式:连接方式:FPAxPGxPAxPGx端口引脚的事件连接同端口引脚的事件连接同一个一个EXTIxEXTIx,分时复用。,分时复用。FGPIOGPIO事件可配置为下降沿、上升事件可配置为下降沿、上升沿或边沿三种模式触发中断。沿或

    18、边沿三种模式触发中断。FEXTIEXTI一个应用:上个实验的按键一个应用:上个实验的按键再添加下降沿触发中断,用中断再添加下降沿触发中断,用中断处理来检测按键。处理来检测按键。EXTI15STM32外部中断控制器EXTIEXTIF对于互联型芯片,外部中断控制器由对于互联型芯片,外部中断控制器由2020个产生事件中断请个产生事件中断请求的边沿检测器组成,其他芯片求的边沿检测器组成,其他芯片1919个。个。STM32外部中断控制器EXTIEXTIF每个输入线都可配置输入类型每个输入线都可配置输入类型(脉冲或挂起脉冲或挂起)和对应的触发和对应的触发方式方式(上升沿或下降沿或者双边沿都触发上升沿或下降

    19、沿或者双边沿都触发)。每个输入线都。每个输入线都可被屏蔽。挂起寄存器保持着状态线的中断请求。可被屏蔽。挂起寄存器保持着状态线的中断请求。F另外四个另外四个EXTIEXTI线的连接方式如下:线的连接方式如下:FEXTIEXTI线线1616连接到连接到PVDPVD输出输出FEXTIEXTI线线1717连接到连接到RTCRTC闹钟事件闹钟事件FEXTIEXTI线线1818连接到连接到USBUSB唤醒事件唤醒事件FEXTIEXTI线线1919连接到以太网唤醒事件连接到以太网唤醒事件(只适用于互联型产品只适用于互联型产品)GPIO的x引脚配置为EXTIx8.3.4 EXTI8.3.4 EXTI寄存器寄存

    20、器库中定义库中定义Fstm32f10 x.hstm32f10 x.h库库892892行中行中EXTIEXTI寄存器结构定义:寄存器结构定义:typedeftypedef structstruct vu32 IMR;/vu32 IMR;/中断屏蔽寄存器,配置中断屏蔽寄存器,配置2020个中断线的屏蔽位个中断线的屏蔽位 vu32 EMR;/vu32 EMR;/事件屏蔽寄存器事件屏蔽寄存器 vu32 RTSR;/vu32 RTSR;/上升沿触发选择寄存器上升沿触发选择寄存器 vu32 FTSR;/vu32 FTSR;/下降沿触发选择寄存器下降沿触发选择寄存器 vu32 SWIER;/vu32 SWI

    21、ER;/设置软件中断寄存器的请求位设置软件中断寄存器的请求位 vu32 PR;/vu32 PR;/挂起寄存器挂起寄存器 EXTI_TypeDefEXTI_TypeDef;EXTIEXTI寄存器寄存器库中定义库中定义F#define PERIPH_BASE(uint32_t)0 x4000 0000)#define PERIPH_BASE(uint32_t)0 x4000 0000)F#define APB2PERIPH_BASE(PERIPH_BASE+0 x1 0000)#define APB2PERIPH_BASE(PERIPH_BASE+0 x1 0000)F#define EXTI_B

    22、ASE (APB2PERIPH_BASE+0 x0400)#define EXTI_BASE (APB2PERIPH_BASE+0 x0400)F#define EXTI (EXTI_TypeDef#define EXTI (EXTI_TypeDef*)EXTI_BASE)EXTI_BASE)FEXTIEXTI为为EXTI_TypeDefEXTI_TypeDef结构体型指针地址:结构体型指针地址:0 x4001 04000 x4001 0400FEXITEXIT寄存器配置数据位宏定义在寄存器配置数据位宏定义在32693269行开始:。行开始:。F/*Bit definition for Bit

    23、 definition for EXTI_IMREXTI_IMR register register*/F#define E#define EXTI_IMR_MR0XTI_IMR_MR0 (uint32_t)0 x00000001)(uint32_t)0 x00000001)/*!Interrupt Mask on line 0!Interrupt Mask on line 0*/F#define#define EXTI_IMR_MR1 EXTI_IMR_MR1 (uint32_t)0 x00000002)(uint32_t)0 x00000002)F 8.3.5 EXTI8.3.5 EXTI

    24、库函数 stm32f10 x_exti.cstm32f10 x_exti.cFEXTIEXTI库函数在文件stm32f10 x_exti.cstm32f10 x_exti.c中定义中定义8.3.6 8.3.6 外部中断与NVIC的关系F外部中断外部中断0 0与与NVICNVIC的对应的对应NVICNVIC寄存器NVICNVIC库函数NVIC配置Fmiscmisc库中库中NVIC_Init()NVIC_Init()函数对函数对NVICNVIC初始化,用到初始化,用到NVIC_InitTypeDef NVIC_InitTypeDef 结构体,其中四个成员:结构体,其中四个成员:NVIC_IRQCh

    25、annelNVIC_IRQChannel参数来选择将要配置的中断向量;参数来选择将要配置的中断向量;NVIC_IRQChannelCmdNVIC_IRQChannelCmd参数来进行使能参数来进行使能(ENABLE)(ENABLE)或关闭或关闭(DISABLEDISABLE)该中断;)该中断;NVIC_IRQChannelPreemptionPriorityNVIC_IRQChannelPreemptionPriority成员要配置中断成员要配置中断向量的抢占优先级;向量的抢占优先级;NVIC_IRQChannelSubPriorityNVIC_IRQChannelSubPriority需要配

    26、置中断向量的响需要配置中断向量的响应优先级。应优先级。FNVICNVIC只可配置只可配置1616种中断向量的优先级:编号越小,优先级种中断向量的优先级:编号越小,优先级别越高;别越高;F抢占优先级:是指打断其它中断,会出现嵌套中断;抢占优先级:是指打断其它中断,会出现嵌套中断;F响应优先级:先处理响应优先级高的中断;响应优先级:先处理响应优先级高的中断;中断检测按键实验F硬件连接:硬件连接:PE5 key1PE5 key1、PE6 key2 PE6 key2,key1key1按下时,按下时,进入线中断处理函数,进入线中断处理函数,LED1LED1状态取反。状态取反。F配置工程环境:配置工程环境

    27、:除使用除使用GPIOGPIO和和RCCRCC片上外设;片上外设;还要使用还要使用extiexti片上外设,片上外设,stm32f10 x_exti.cstm32f10 x_exti.c包含了支包含了支持持extiexti配置和操作的函数;配置和操作的函数;misc.cmisc.c文件则包含了文件则包含了NVICNVIC的配置函数;的配置函数;F本实验中还会在本实验中还会在stm32f10 x_it.cstm32f10 x_it.c中编写中断服务函数。中编写中断服务函数。Main函数F配置好配置好LEDLED用到的用到的I/OI/O后,调用后,调用LED1()LED1()点亮一盏点亮一盏LED

    28、LED灯;配灯;配置中断,等待中断发生。置中断,等待中断发生。intint main(void)main(void)/*configconfig the led the led*/LED_GPIO_ConfigLED_GPIO_Config();();LED1(ON);LED1(ON);/*extiexti line line configconfig */EXTI_PE5_Config();EXTI_PE5_Config();/*wait interrupt wait interrupt*/while(1)while(1)配置外部中断配置外部中断exti.cexti.cFEXTI_PE5_C

    29、onfig()EXTI_PE5_Config()函数,函数,配置配置 PE5 PE5 为线中断口,并设置为线中断口,并设置中断优先级。中断优先级。F主要步骤:主要步骤:1.1.使能使能EXTIxEXTIx线的时钟和第二功能线的时钟和第二功能AFIOAFIO时钟时钟 2.2.配置配置EXTIxEXTIx线的中断优先级线的中断优先级 3.3.配置配置EXTI EXTI 中断线中断线I/O I/O 4.4.选定要配置为选定要配置为EXTIEXTI的的I/OI/O口线和口线和I/OI/O口的工作模式口的工作模式 5.EXTI 5.EXTI 中断线工作模式配置中断线工作模式配置 EXTI_PE5_Con

    30、fig()EXTI_PE5_Config()函数函数8.void EXTI_PE5_Config(void)8.void EXTI_PE5_Config(void)9.9.10.GPIO_InitTypeDef GPIO_InitStructure;10.GPIO_InitTypeDef GPIO_InitStructure;11.EXTI_InitTypeDef EXTI_InitStructure;11.EXTI_InitTypeDef EXTI_InitStructure;13.13./*config the extiline(PE5)clock and AFIO clock confi

    31、g the extiline(PE5)clock and AFIO clock*/14.RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|14.RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE);RCC_APB2Periph_AFIO,ENABLE);16./16./*config the NVIC(PE5)config the NVIC(PE5)*/17.NVIC_Configuration();17.NVIC_Configuration();/NVIC/NVIC

    32、初始化配置初始化配置19.19./*EXTI line gpio config(PE5)EXTI line gpio config(PE5)*/20.GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;20.GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;21.GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;21.GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;/上拉输入上拉输入 EXTI_PE5_Config()EXTI_PE5_Config()函数函数_ _续

    33、续22.22.GPIO_InitGPIO_Init(GPIOE,&(GPIOE,&GPIO_InitStructureGPIO_InitStructure););24.24./*EXTI line(PE5)mode config EXTI line(PE5)mode config*/25.25.GPIO_EXTILineConfigGPIO_EXTILineConfig(GPIO_PortSourceGPIOEGPIO_PortSourceGPIOE,GPIO_PinSource5);GPIO_PinSource5);/PE5/PE5设置为设置为EXTIEXTI输入线输入线26.26.EXTI

    34、_InitStructure.EXTI_LineEXTI_InitStructure.EXTI_Line=EXTI_Line5;=EXTI_Line5;27.27.EXTI_InitStructure.EXTI_ModeEXTI_InitStructure.EXTI_Mode=EXTI_Mode_InterruptEXTI_Mode_Interrupt;28.28.EXTI_InitStructure.EXTI_TriggerEXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_FallingEXTI_Trigger_Falling;/下降沿触发中断下降沿触

    35、发中断 29.29.EXTI_InitStructure.EXTI_LineCmdEXTI_InitStructure.EXTI_LineCmd=ENABLE;=ENABLE;30.30.EXTI_InitEXTI_Init(&(&EXTI_InitStructureEXTI_InitStructure););31.31.GPIO端口的复用功能AFIOFAFIO(alternate-function I/O)AFIO(alternate-function I/O),GPIOGPIO除了用作普通的除了用作普通的输入输出输入输出(主功能主功能),还可以作为片上外设的复用输入输出,还可以作为片上外设

    36、的复用输入输出,如串口,如串口,ADCADC,这些就是复用功能。,这些就是复用功能。FGPIOGPIO还有重映射功能:重映射功能是指把原来属于还有重映射功能:重映射功能是指把原来属于A A引脚引脚的默认复用功能,转移到了的默认复用功能,转移到了B B引脚进行使用(当然引脚进行使用(当然B B引脚具引脚具有这个重映射功能)。有这个重映射功能)。F当把当把GPIOGPIO用作用作EXTIEXTI外部中断外部中断 或使用重映射功能的时候,或使用重映射功能的时候,必须开启必须开启AFIOAFIO时钟。时钟。F代码的第代码的第1414行,开启了行,开启了AFIOAFIO的时钟。的时钟。NVIC初始化配置

    37、FEXTI_PE5_Config()EXTI_PE5_Config()调用调用了了NVIC_ConfigurationNVIC_Configuration()()函数来函数来配置配置NVICNVIC控制器。控制器。8.static void 8.static void NVIC_ConfigurationNVIC_Configuration(void)(void)9.9.10.10.NVIC_InitTypeDefNVIC_InitTypeDef NVIC_InitStructureNVIC_InitStructure;1212././*Configure one bit for preemp

    38、tion priority Configure one bit for preemption priority*/13.13.NVIC_PriorityGroupConfigNVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);(NVIC_PriorityGroup_1);1515././*配置配置PA|B|C|D|E5PA|B|C|D|E5为中断源为中断源 */16.16.NVIC_InitStructure.NVIC_IRQChannelNVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;=EXTI9_5_

    39、IRQn;17.17.NVIC_InitStructure.NVIC_NVIC_InitStructure.NVIC_IRQChannelPreemptionPriorityIRQChannelPreemptionPriority =0=0;18.18.NVIC_InitStructure.NVIC_IRQChannelSubPriorityNVIC_InitStructure.NVIC_IRQChannelSubPriority=0;=0;19.19.NVIC_InitStructure.NVIC_IRQChannelCmdNVIC_InitStructure.NVIC_IRQChannel

    40、Cmd=ENABLE;=ENABLE;20.20.NVIC_InitNVIC_Init(&(&NVIC_InitStructureNVIC_InitStructure););/向寄存器写入参数21.21.把NVIC中断优先级分组设置为第1组要配置的为EXTI第59线的中断向量抢占优先级和响应优先级,设为最高编写中断服务函数 FPE5PE5连接到内部的连接到内部的EXTI5EXTI5,GPIOGPIO配置为上拉输入,工作在下配置为上拉输入,工作在下降沿中断。在外围电路上我们将降沿中断。在外围电路上我们将PE5PE5接到了接到了key1key1上上。FPE5PE5始终为高,当按键按下始终为高,当按

    41、键按下时时,下降下降沿跳沿跳变变,EXTI5,EXTI5会捕捉到会捕捉到这一跳变,并产生相应的中断,中断服务程序在这一跳变,并产生相应的中断,中断服务程序在stm32f10 x_it.cstm32f10 x_it.c中中实现,专门实现,专门用来存放中断服务用来存放中断服务函数。函数。F中断中断服务函数的名字必须要跟启动文件服务函数的名字必须要跟启动文件startup_stm32f10 x_hd.sstartup_stm32f10 x_hd.s中的中断向量表定义中的中断向量表定义一致:一致:DCD EXTI9_5_IRQHandler DCD EXTI9_5_IRQHandler;EXTI Li

    42、ne 9.5;EXTI Line 9.5 EXTI9EXTI5EXTI9EXTI5中断向量的服务函数中断向量的服务函数名名F在在stm32f10 x_it.cstm32f10 x_it.c中加入中加入EXTI9_5_IRQHandler()EXTI9_5_IRQHandler()函数;函数;EXTI9_5_IRQHandler()EXTI9_5_IRQHandler()函数函数/*I/O I/O线中断,中断线为线中断,中断线为PE5 PE5*/void EXTI9_5_IRQHandler(void)void EXTI9_5_IRQHandler(void)if(EXTI_GetITStatu

    43、s(EXTI_Line5)!=RESET)if(EXTI_GetITStatus(EXTI_Line5)!=RESET)/确保是否产生了确保是否产生了EXTI LineEXTI Line中断中断 /LED1/LED1 取反取反 GPIO_WriteBit(GPIOC,GPIO_Pin_3,GPIO_WriteBit(GPIOC,GPIO_Pin_3,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_3);GPIO_Pin_3);/清除中断标志位清除中断标志

    44、位 EXTI_ClearITPendingBit(EXTI_Line5);EXTI_ClearITPendingBit(EXTI_Line5);实验现象F将野火将野火STM32STM32开发板供电开发板供电(DC5V)(DC5V),插上,插上JLINKJLINK,将编译好的,将编译好的程序下载到开发板,程序下载到开发板,LED1LED1亮,按下按键时亮,按下按键时LED1LED1灭,再按下灭,再按下按键时按键时LED1LED1亮,如此循环。亮,如此循环。8.2 8.2 课下任务课下任务F阅读阅读P161-172P161-172F阅读阅读Cortex-M3 Cortex-M3 权威指南,第权威指南,第7 7、8 8、9 9章章F阅读野火资料:阅读野火资料:P124-141P124-141F1 1、NVICNVIC嵌套向量中断控制器嵌套向量中断控制器F2 2、中断向量表、中断向量表F3 3、EXTIEXTI外部中断外部中断

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第8章STM32F10x的主要模块设计3外部中断课件.ppt
    链接地址:https://www.163wenku.com/p-5067606.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库