STM32_GPIO复用为外部中断及中断功能测试.doc_第1页
STM32_GPIO复用为外部中断及中断功能测试.doc_第2页
STM32_GPIO复用为外部中断及中断功能测试.doc_第3页
STM32_GPIO复用为外部中断及中断功能测试.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

GPIO端口复用为外部中断信号输入端,控制PA1端口电平变化,使用MDKE_inter.c 代码如下,其它使用keil自带的文件#include stm32f10x_lib.hvoid RCC_cfg() /时钟设置 /打开PA端口时钟,由于GPIO用作中断输入,属于端口复用,故也需要打开复用时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);void NVIC_cfg() /设置中断 NVIC_InitTypeDef NVIC_InitStructure; /定义结构体变量 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /选择中断分组2,3个中断源,需2bit进行优先级设置 /高两位用于设置抢占式 优先级; /低两位用于设置响应式 优先级 NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQChannel; /选择中断通道2 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /抢占式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /响应式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /使能中断 NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel; /选择中断通道3 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /抢占式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /响应式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /使能中断 NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel; /选择中断通道5 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /抢占式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /响应式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /使能中断 NVIC_Init(&NVIC_InitStructure);void IO_cfg() /GPIO初始化 GPIO_InitTypeDef GPIO_InitStructure; /定义结构体变量 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; /选择使用的引脚 PA1做led指示 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /设置端口翻转速度 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /设置端口工作模式 推挽输出 GPIO_Init(GPIOA,&GPIO_InitStructure); /初始化PA.1引脚 GPIO_ResetBits(GPIOA,GPIO_Pin_1); /将PA.1引脚设置为低电平输出,LED灯灭 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_5; /选择引脚2 3 5 作为中断信号输入端 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /选择输入模式为浮空输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /输出频率最大50MHz GPIO_Init(GPIOA,&GPIO_InitStructure); /设置PA.2 /PA.3 /PA.5/由于GPIO并不是专用的中断引脚,因此在用GPIO来触发外部中断的时候需要设置将GPIO相应的引脚和中断线连接起来void EXTI_cfg() /将相应的IO口与中断线路进行连接 EXTI_InitTypeDef EXTI_InitStructure; /定义结构体变量 EXTI_ClearITPendingBit(EXTI_Line2); /清空中断标志 PA.2 中断口 EXTI_ClearITPendingBit(EXTI_Line3); / PA.3 中断口 EXTI_ClearITPendingBit(EXTI_Line5); / PA.5 中断口 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource2); /选择中断管脚PA.2 PA.3 PA.5 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource3); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5); EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3 | EXTI_Line5; /选择中断线路2 3 5 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; /设置为中断请求,非事件请求 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; /设置中断触发方式为上下降沿触发 EXTI_InitStructure.EXTI_LineCmd = ENABLE; /外部中断使能 EXTI_Init(&EXTI_InitStructure);int main() RCC_cfg(); /设置时钟 IO_cfg(); /GPIO设置 NVIC_cfg(); /中断管理设置 EXTI_cfg(); /GPIO与中断线路的连接 while(1); /文件说明:/库函数的默认路径为: .keilarmrv31libststm32f10x/1:时钟设置,使用库文件stm32f10x_rcc.c/2:中断管理,使用库文件stm32f10x_nvic.c ;/ 另cortexm3_macro.s 为中断管理库文件所需 ,为内核中特殊的指令操作/3:GPIO设置,使用库文件stm32f10x_gpio.c/4:GPIO与中断线路的连接,使用库文件stm32f10x_exti.c/5:中断函数,位于 stm32f10x_it.c 中,具体的中断操作代码如下:(找到具体的函数位置,将如下函数体写入中断函数内)/*void EXTI2_IRQHandler(void) /PA.2中断信号的响应函数 抢占优先级:0/响应优先级:0 GPIO_SetBits(GPIOA,GPIO_Pin_1); /将PA.1端口置位,点亮LED EXTI_ClearITPendingBit(EXTI_Line2); /清空中断标志位,防止持续进入中断void EXTI3_IRQHandler(void) /PA.3中断信号的响应函数 抢占优先级:0/响应优先级:0 GPIO_ResetBits(GPIOA,GPIO_Pin_1);/将PA.1端口清零,熄灭LED EXTI_ClearITPendingBit(EXTI_Line3);void EXTI9_5_IRQHandler(void)/PA.5中断信号的响应函数 抢占优先级:0/响应优先级:0 u8 ReadValue; /定义 存储端口状态 的变量 ReadValue = GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_1);/读取PA1

温馨提示

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

评论

0/150

提交评论