独立按键控制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速

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

3328

被折叠的 条评论
为什么被折叠?



