STM32学习笔记——中断
来源:互联网 发布:淘宝导航代码大全 编辑:程序博客网 时间:2024/05/22 03:11
重点:外部中断
代码:
main.c:
#include "stm32f10x.h"#include "stm32f10x_exti.h"#include "stm32f10x_rcc.h"#include "misc.h"void RCC_Configuration(void);void GPIO_Configuration(void);void NVIC_Configuration(void);void Delay(__IO uint32_t nCount);void Key_scan(void);unsigned char _it0 = 0, num = 0;int main(){ unsigned char b = 0; RCC_Configuration(); NVIC_Configuration(); GPIO_Configuration(); while(1){ Key_scan(); if(num == 2 && b == 0){ GPIO_SetBits(GPIOD, GPIO_Pin_2); b = 1; }else if(num == 2 && b == 1){ GPIO_ResetBits(GPIOD, GPIO_Pin_2); b = 0; } }}void Key_scan(){ num = 0; if(_it0 == 2){ if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_4) == 0){ Delay(0xffff);//GPIO_ReadInputDataBit()函数读取PC4引脚的状态 if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_4) == 0){ while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_4) == 0); num = 2; } } _it0 = 0; }}void Delay(__IO uint32_t nCount){ for(; nCount != 0; nCount--);}void RCC_Configuration(void){ SystemInit(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//打开AFOI时钟,使用复用I/O功能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);}void GPIO_Configuration(void){ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//PC4被复用做中断 GPIO_Init(GPIOC, &GPIO_InitStructure);}void NVIC_Configuration(void)//配置中断控制器{ NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource4); EXTI_InitStructure.EXTI_Line = EXTI_Line4; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);}
stm32f10x_it.c:
#include "stm32f10x_it.h"#include "stm32f10x_exti.h"#include "stm32f10x_rcc.h"#include "misc.h"extern unsigned char _it0;void EXTI4_IRQHandler(void){ if(EXTI_GetITStatus(EXTI_Line4) != RESET){ _it0 = 2; EXTI_ClearITPendingBit(EXTI_Line4); }}
小结:
1,I/O口与中断线有确定的对应关系
2,外部中断要将GPIO管脚设置成浮空输入模式
0 0
- STM32学习笔记——中断
- stm32学习笔记——按键(外部中断)
- stm32学习笔记——入门定时器中断
- STM32学习笔记——外部中断EXTI
- STM32学习笔记4——外部中断
- stm32学习笔记——外部中断的使用
- STM32-外部中断学习笔记
- STM32 CortexM3 中断 学习笔记!
- STM32-外部中断学习笔记
- STM32-外部中断学习笔记
- STM32自学笔记——外部中断
- STM32——中断
- STM32学习笔记整理之(2)——外部中断
- STM32学习笔记——高级定时器TIM1更新中断配置
- STM32学习笔记整理之(2)——外部中断
- STM32学习笔记:外部中断的使用
- STM32学习笔记:外部中断的使用
- STM32 F103 外部中断学习笔记
- JAVA wait(), notify(),sleep详解
- android Graphics(一):概述及基本几何图形绘制
- UIActionSheet and UIAlertView
- UI0810通讯录加强版
- vim 配置vim
- STM32学习笔记——中断
- ZOJ 3080 ChiBi [图论]
- 路由交换基本命令+一些笔记
- (转)Android中用OpenGL ES Tracer分析绘制过程
- OpenGL ES 光照
- HDU 5372 - Segment Game(树状数组)
- 第六章 项目整体管理
- 祝贺自己的软件《万能数据库查询分析器》在非凡软件站和太平洋电脑的下载排行榜分别名列第1和第2
- 认知http