2020-11-02

本文介绍了如何使用独立按键控制STM32F103C8T6单片机的开关机及LED灯的闪烁与亮灭。通过按键初始化、电源引脚设置、中断函数等实现长按开机、单次按键控制LED状态。

独立按键控制stm32开关机以及控制LED的闪烁与亮灭

 


前言

本文简单介绍如何利用独立按键控制stm32单片机的开关机以及LED灯的亮灭。硬件用的stm32f103c8t6最小系统,软件是keil5。基本思路,程序下载到最小系统板里,通过按键检测给单片机上电,利用中断的方式利用按键控制灯的亮灭以及闪烁。

功能:1.长按开机(利用按键扫描的方式),给最小系统板上电;2.按一次灯闪烁;3.再按一次灯常亮;4.再按一次灯灭,即单片机关机。只有长按单片机才会开机。

一、按键控制电路

1.按键控制电路图

2 .控制引脚

电路简单介绍:外接电源VIN为+5V,TPS76333芯片是将输入的5V电压转换为3.3V输出(具体原理自己参考TPS76333数据手册)。tps芯片有个使能EN接口,只有该接口输入高电平时,tps芯片才能输出3.3V的电压,供系统使用;否则没有电压输出。KEY_EN和PWR_EN分别连接C8T6的PB6和PB5接口。其中在初始化时,按键引脚配置为上拉输入(这里我也不太懂,程序这样配置,功能可以实现),电源引脚配置为推挽输出。当按键按下时,单片机检测到高电平,即EN接口使能,则tps芯片输出3.3V为系统供电。这是,将PB5设置为高电平输出,即使按键松开,PB5输出高电平也可以使能EN引脚,使tps芯片输出3.3V电压。这个过程为开机过程。系统上电之后,按键配置为中断的方式,如系统检测到按键按下,将PB5配置输出低电平,这是当按键松开时,TPS的EN引脚输入均为低电平,无法使能芯片输出,这时系统关机。

二、软件部分

1.按键初始化

2.电源引脚初始化

3.按键扫描函数

4.中断函数

5.定时器初始化

6.宏定义

 1.按键初始化
void KEY_Init(void)                               
 {
     GPIO_InitTypeDef GPIO_InitStruct;             //定义GPIO结构体变量
     EXTI_InitTypeDef EXTI_InitStruct;             //定义外部中断结构体变量
     NVIC_InitTypeDef NVIC_InitStruct;
    
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);     //使能GPIOA的时钟并开启复用时钟   

     GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;       //配置GPIO为上拉输入
     GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6;          //配置GPIO第6引脚
     GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;   //配置GPIO速
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值