STM32_GPIO复用为外部中断及中断功能测试_第1页
STM32_GPIO复用为外部中断及中断功能测试_第2页
STM32_GPIO复用为外部中断及中断功能测试_第3页
STM32_GPIO复用为外部中断及中断功能测试_第4页
STM32_GPIO复用为外部中断及中断功能测试_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、GPIO端口复用为外部中断信号输入端,控制PA1端口电平变化,使用MDKE_inter.c代码如下,其它使用keil自带的文件#includestm32f10 x_lib.hvoidRCC_cfg()/时钟设置打开PA端口时钟,由于GPIO用作中断输入,属于端口复用,故也需要打开复用时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);voidNVIC_cfg()/设置中断/定义结构体变量NVIC_InitTypeDefNVIC_InitStructure;NVIC_PriorityGroupConf

2、ig(NVIC_PriorityGroup_2);选择中断分组2,3个中断源,需2bit进行优先级设置/选择中断通道2/抢占式中断优先级设置为0/响应式中断优先级设置为0/使能中断/高两位用于设置抢占式优先级;/低两位用于设置响应式优先级NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IR

3、QChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQChannel;/选择中断通道3NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;/抢占式中断优先级设置为0NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;/响应式中断优先级设置为0NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;/使能中断NVIC_Init(&

4、NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQChannel;/选择中断通道5NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;/抢占式中断优先级设置为0/响应式中断优先级设置为0/使能中断NVIC_Init(&NVIC_InitStructure);voidIO_c

5、fg()/GPIO初始化GPIO_InitTypeDefGPIO_InitStructure;/定义结构体变量GPIO_InitStructure.GPIO_Pin=GPIO_Pin_l;选择使用的引脚PA1做led指示GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/设置端口翻转速度GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;/设置端口工作模式推挽输出GPIO_Init(GPIOA,&GPIO_InitStructure);/初始化PA.l引脚GPIO_ResetBits(GPIOA,GPIO_Pi

6、n_1);/将PA.1引脚设置为低电平输出,LED灯灭GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);/选择引脚235作为中断信号输入端/选择输入模式为浮空输入/输出频率最大50MHz/设置PA.2/PA.3/PA.5由于GPIO并不是专用的中断引脚,因此

7、在用GPIO来触发外部中断的时候需要设置将GPIO相应的引脚和中断线连接起来voidEXTI_cfg()/将相应的10口与中断线路进行连接EXTI_InitTypeDefEXTI_InitStructure;/定义结构体变量EXTI_ClearITPendingBit(EXTI_Line2);EXTI_ClearITPendingBit(EXTI_Line3);EXTI_ClearITPendingBit(EXTI_Line5);/清空中断标志/PA.2中断口PA.3中断口PA.5中断口GPI0_EXTILineConfig(GPI0_PortSourceGPI0A,GPI0_PinSourc

8、e2);GPI0_EXTILineConfig(GPI0_PortSourceGPI0A,GPI0_PinSource3);选择中断管脚PA.2PA.3PA.5GPI0_EXTILineConfig(GPI0_PortSourceGPI0A,GPI0_PinSource5);EXTI_InitStructure.EXTI_Line=EXTI_Line2|EXTI_Line3|EXTI_Line5;/选择中断线路235EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;/设置为中断请求,非事件请求EXTI_InitStructure.EXTI_Tri

9、gger=EXTI_Trigger_Rising_Falling;/设置中断触发方式为上下降沿触发EXTI_InitStructure.EXTI_LineCmd=ENABLE;/外部中断使能EXTI_Init(&EXTI_InitStructure);intmain()RCC_cfg();/设置时钟IO_cfg();/GPIO设置NVIC_cfg();/中断管理设置EXTI_cfg();/GPIO与中断线路的连接while(1);/文件说明:/库函数的默认路径为:.keilarmrv31libststm32f10 x/1:时钟设置,使用库文件stm32f10 x_rcc.c/2:中断管理,使用

10、库文件stm32f10 x_nvic.c;/另cortexm3_macro.s为中断管理库文件所需,为内核中特殊的指令操作/3:GPIO设置,使用库文件stm32f10 x_gpio.c/4:GPIO与中断线路的连接,使用库文件stm32f10 x_exti.c/5:中断函数,位于stm32f10 x_it.c中,具体的中断操作代码如下:(找到具体的函数位置,将如下函数体写入中断函数内)/*voidEXTI2_IRQHandler(void)/PA.2中断信号的响应函数抢占优先级:0/响应优先级:0GPIO_SetBits(GPIOA,GPIO_Pin_l);将PA.1端口置位,点亮LEDEX

11、TI_ClearITPendingBit(EXTI_Line2);/清空中断标志位,防止持续进入中断/PA.3中断信号的响应函数抢占优先级:0/响应优先级:0voidEXTI3_IRQHandler(void)GPIO_ResetBits(GPIOA,GPIO_Pin_l);将PA.l端口清零,熄灭LEDEXTI_ClearITPendingBit(EXTI_Line3);voidEXTI9_5_IRQHandler(void)/PA.5中断信号的响应函数抢占优先级:0/响应优先级:0u8ReadValue;/定义存储端口状态的变量ReadValue=GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_1);读取PA1端口的当前状态/若该端口当前为低电平,if(ReadValue=0)GPIO_SetBits(GPIOA,GPIO_Pin_l);elseGPIO_ResetBits(GPIOA,GPIO_Pin_l);EXTI_ClearITPendingBit(EX

温馨提示

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

评论

0/150

提交评论