stm32f103按键中断实现方法

发布者:huanxin最新更新时间:2018-12-11 来源: eefocus关键字:stm32f103  按键中断 手机看文章 扫描二维码
随时随地手机看文章

#include"stm32f10x.h"

 

void LED_GPIO_Config()

{

/*定义一个GPIO_InitTypeDef类型的结构体*/

GPIO_InitTypeDef GPIO_InitStructure;


/*开启GPIOB的外设时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);


/*选择要控制的GPIOB引脚*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;


/*设置引脚模式为通用推挽输出*/

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;


/*设置引脚速率为50MHz*/

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;


/*调用库函数,初始化GPIOB*/

GPIO_Init(GPIOB, &GPIO_InitStructure);


/*关闭LED灯*/

GPIO_SetBits(GPIOB, GPIO_Pin_5);

}

 

void EXTI_PC5_Config()

{

static void NVIC_Configuration();


/*定义一个GPIO_InitTypeDef类型的结构体*/

GPIO_InitTypeDef GPIO_InitStructure;

/*定义一个EXTI_InitTypeDef类型的结构体*/

EXTI_InitTypeDef EXTI_InitStructure;


/*开启GPIOC的外设时钟和AFIO时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);


/*配置NVIC(PC5)*/

NVIC_Configuration();


/*EXTI GPIO(PC5)线配置*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /*设置上拉输入*/

GPIO_Init(GPIOC, &GPIO_InitStructure); /*调用库函数,初始化GPIOC*/


/*EXTI线(PE5)模式配置*/

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5);

EXTI_InitStructure.EXTI_Line = EXTI_Line5;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; /*下降沿中断*/


EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

}

 

static void NVIC_Configuration()

{

/*定义一个NVIC_InitTypeDef类型的结构体*/

NVIC_InitTypeDef NVIC_InitStructure;


/*为抢占优先级配置一位*/

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);


/*配置P[A|B|C|D|E]5为中断源*/

NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

 

void Delay(uint32_t uCount)

{

    for(;uCount>0;uCount--);

}

 

void EXTI9_5_IRQHandler()

{

if(EXTI_GetITStatus(EXTI_Line5) != RESET) /*确保是否产生了EXTI Line中断*/

{

/*消抖*/

Delay(1000);

/*LED取反*/

GPIO_WriteBit(GPIOB, GPIO_Pin_5, (BitAction)((~GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_5))));

/*清除中断标志位*/

EXTI_ClearITPendingBit(EXTI_Line5);

}

}

 

int main(void)

{

/*初始化LED*/

LED_GPIO_Config();

/*EXTI线配置*/

EXTI_PC5_Config();


GPIO_SetBits(GPIOB, GPIO_Pin_5);/*置高*/


while(1);

}

关键字:stm32f103  按键中断 引用地址:stm32f103按键中断实现方法

上一篇:STM32中断方式检测按键
下一篇:STM32_按键控制LED之轮询

推荐阅读最新更新时间:2024-03-16 16:19

将步进电机与STM32F103C8板连接的教程
步进电机是无刷直流电机,可以小角度旋转,这些角度称为步进。一般步进电机使用200步完成360度旋转,意味着其每步旋转1.8度。步进电机用于许多需要精确旋转运动的设备,如机器人、天线、硬盘驱动器等。我们可以通过给出适当的说明将步进电机旋转到任何特定角度。主要有两种类型的步进电机可供选择,单极和双极。单极更容易操作、控制,也更容易获得。在本教程中,我们将步进电机与STM32F103C8(蓝色药丸)板连接。 所需材料 STM32F103C8 (蓝色药丸) 步进电机(28BYJ-48) ULN2003 集成电路 电位器 10k 面包板 跳线 步进电机 (28BYJ-48) 28BYJ-48 是一款单极步进电机,需要 5V 电源。电机具
[单片机]
将步进电机与<font color='red'>STM32F103</font>C8板连接的教程
基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口
在本教程中,我将介绍如何将DHT11湿度和温度传感器与基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口。DHT11传感器的值由STM32读取,并显示在I2C LCD显示屏上。 介绍 传感器是很小的设备,可以弥合原始模拟世界与MCU的数字世界之间的鸿沟。传感器可以非常简单,例如非常著名的LM35温度传感器,也可以是一些复杂的数学单元,例如MPU6050陀螺仪和加速度计组合传感器。 简单或复杂,传感器是许多消费,汽车,机器人和工业应用中的关键部分,如果不集成适当的传感器就无法完成某些应用。 让我们从工业应用程序扩展到日常项目和业余爱好者。气象站是一个非常普遍且受欢迎的项目,无论是物联网
[单片机]
STM32F103C8T6+温湿度传感器DHT11实现温湿度采集
通信原理 单总线通信 DHT11器件采用简化的单总线通信。单总线只有一根数据线,主从机之间的数据交换、控制命令等均由单总线完成。在单总线系统中,只有当主机呼叫从机时,从机才能应答。 挂载于单总线上的设备,必须通过一个漏极开路或三态端口连接至该数据线,以允许设备在不发生数据时能够释放总线。单总线通常要求外接一个4.7kΩ的上拉电阻,这样,当总线闲置时,总线上始终是高电平 传输数据位定义 一次传送40位数据,高位先出。数据格式位: 8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验位。 注:其中湿度小数部分为0。 校验位的数据定义: “8bit湿度整数数据+8bit
[单片机]
<font color='red'>STM32F103</font>C8T6+温湿度传感器DHT11实现温湿度采集
stm32f103pwm实现呼吸灯(寄存器)
一、思路 通过 Tim 定时器可以设置多路 PWM 实现呼吸灯,所以我们使能一个 TIM3,因为 TIM3 的通道2(CH2)正好映射到 PB5(LED) 然后配置 PB5 为复用推挽输出,50MHZ pwm通过定时器 TIM3 的计数器 CNT 从 0 到 ARR(ARR可以设置为0-65535) 进行周期的自增或自减, CNT 每自增或自减一次与 CCR2 比较一次,CCR2的值由我们自己设置,一般通过 while 循环按照我们希望的时间 比如1s增加1 如果在PWM模式1下 CNT向上计数时 CNT CCR2 则将 PB5设为高电平 如果在PWM模式2下 CNT向上计数时 CNT CCR2 则将 PB5设为低电平 通过
[单片机]
<font color='red'>stm32f103</font>pwm实现呼吸灯(寄存器)
基于STM32F103平台CANOPEN工业协议源码
单片机源程序如下: /* Includes ------------------------------------------------------------------*/ #include stm32f10x.h #include delay.h #include can.h #include mco.h #include lcd.h #include bsp.h #include i2c.h #include 24cxx.h #include stdio.h typedef struct { u8 BaudRate_Data; u8 ODNodeID_Data; }e2prom; e2prom
[单片机]
STM32F103+RT-Thread从零开始(二)——RTT系统中点亮LED
上次的的推文简单说了下如何使用Keil创建STM32F103的工程,并且完成了LED点亮,及让LED等闪烁的功能,那是诸多同学学习单片机的起手式。本篇推文是继续上一篇推文的内容,依旧是点亮LED,不同的是,这次点亮LED等,是在RT-Thread操作系统中进行的。 创建工程 创建一个Keil工程,芯片依旧选择STM32F103C8T6,然后在Manage Run-Time Environment对话框中选择需要用的的软件组件,与上文不同的是,我们需要把RTT一起勾上。如下图: 上图中,红线框中即为RTT操作系统的组件,分别为设备驱动,系统内核以及shell。蓝线框中为Keil的RTX操作系统。我们现在要用的是RT
[单片机]
使用ESP8266将STM32F103C8连接到互联网的方法
在本教程中,我们使用 ESP8266 将 STM32F103C8 连接到互联网。在这里,我们将ESP8266 Wi-Fi 模块与我们的蓝丸 STM32F103C8 板接口,并将数据发送到 ESP8266 网络服务器上托管的网页。 所需组件 蓝丸STM32F103C8板 ESP8266 无线无线模块 笔记本电脑和无线网络热点 ESP8266 无线无线模块 大多数人将 ESP8266 称为 WIFI 模块,但它实际上是一个微控制器。ESP8266 是乐鑫公司(一家总部位于上海的公司)开发的微控制器的名称。该微控制器具有执行WIFI相关活动的能力,因此被广泛用作WIFI模块。 接地(0 V) 发射,传输数据位 X GPIO 2
[单片机]
使用ESP8266将<font color='red'>STM32F103</font>C8连接到互联网的方法
STM32F101xx and STM32F103xx RTC 校准
AN2604 应用笔记 STM32F101xx and STM32F103xx RTC 校准 总体介绍 实时时钟在很多嵌入式应用中是必不可少的,但是由于外部环境温度的改变,驱动RTC的晶体频率会发生变化,因此RTC就没有预想的那么准确了! STM32F101xx and STM32F103xx附带有数字时钟校准电路,因此可以适应与变化的环境,它主要是来补偿晶体由于环境的变化,这篇应用笔记主要讨论了RTC校准的基本原理以及解释了如何利用RTC校准来提高计时精度。 1 RTC校准基本原理 1.1 晶体的准确性 在很多计时领域,通常都是用 石英精确度 这么一个术语来描述的,石英晶体振荡器提供了一个远远优于其他类
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved