效果:
1.找到引脚组别(DEFG)
led灯硬件结构
开关硬件结构
2.时钟使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); //LED
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE); //KEY
3.GPIO时钟控制
//LED--GPIO参数配置
GPIO_InitTypeDef led_gpio; //定义变量
led_gpio.GPIO_Mode = GPIO_Mode_OUT; //引脚以输出方式工作
led_gpio.GPIO_OType = GPIO_OType_PP; //推挽
led_gpio.GPIO_Pin = GPIO_Pin_10;
led_gpio.GPIO_Speed=GPIO_High_Speed; //gpio的反应速率,不太影响
led_gpio.GPIO_PuPd=GPIO_PuPd_UP; //上拉 GPIO_PuPd_DOWN 下拉//GPIO_PuPd_NOPULL
GPIO_Init(GPIOF,&led_gpio); //初始化变量
//KEY--GPIO参数配置
GPIO_InitTypeDef key_gpio; //定义变量
key_gpio.GPIO_Mode = GPIO_Mode_IN; //引脚以输入方式工作
key_gpio.GPIO_OType = GPIO_OType_PP; //推挽
key_gpio.GPIO_Pin = GPIO_Pin_4; //第几根引脚
key_gpio.GPIO_Speed=GPIO_High_Speed; //gpio的反应速率,不太影响
key_gpio.GPIO_PuPd=GPIO_PuPd_UP; //上拉 //取决于所调用的结构
GPIO_Init(GPIOE,&key_gpio); //初始化
4.控制实现思路
while(1) //大循环体,保证一直在运行,被控制
{
key0= GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4); //默认高电平,按下,接地
if(key0==1)
{
GPIO_WriteBit(GPIOF, GPIO_Pin_10,1); //led高电平,灯灭
}
else
{
GPIO_WriteBit(GPIOF, GPIO_Pin_10,0); //led高电平,灯亮
}
}
5. 完整代码
#include "stm32f4xx.h" // Device header
int main()
{
//时钟使能--LED
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
//GPIO时钟控制 //参数配置
//让程序决定第几组第几根引脚,如何工作
GPIO_InitTypeDef led_gpio;
led_gpio.GPIO_Mode = GPIO_Mode_OUT; //引脚以输出方式工作
led_gpio.GPIO_OType = GPIO_OType_PP; //推挽
led_gpio.GPIO_Pin = GPIO_Pin_9| GPIO_Pin_10 |GPIO_Pin_8;
led_gpio.GPIO_Speed=GPIO_High_Speed; //gpio的反应速率,不太影响
led_gpio.GPIO_PuPd=GPIO_PuPd_DOWN; //上拉 GPIO_PuPd_DOWN 下拉//GPIO_PuPd_NOPULL
GPIO_Init(GPIOF,&led_gpio);
GPIO_SetBits(GPIOF, GPIO_Pin_9);
GPIO_SetBits(GPIOF, GPIO_Pin_10);
uint16_t key0=0;
//时钟使能--KEY开关
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
//GPIO时钟控制 //参数配置
//让程序决定第几组第几根引脚,如何工作
GPIO_InitTypeDef key_gpio;
key_gpio.GPIO_Mode = GPIO_Mode_IN; //引脚以输入方式工作
key_gpio.GPIO_OType = GPIO_OType_PP; //推挽
key_gpio.GPIO_Pin = GPIO_Pin_4| GPIO_Pin_3 |GPIO_Pin_2;//第几根引脚
key_gpio.GPIO_Speed=GPIO_High_Speed; //gpio的反应速率,不太影响
key_gpio.GPIO_PuPd=GPIO_PuPd_UP; //上拉 GPIO_PuPd_DOWN 下拉//GPIO_PuPd_NOPULL
GPIO_Init(GPIOE,&key_gpio); //初始化
while(1)
{
//uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin);
key0= GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4);//默认高电平,按下,接地
if(key0==1)
{
GPIO_WriteBit(GPIOF, GPIO_Pin_10,1);//led高电平,灯灭
}
else
{
GPIO_WriteBit(GPIOF, GPIO_Pin_10,0); //led高电平,灯亮
}
}
}
6.视频演示
开关控制灯的亮灭
原文地址:https://blog.csdn.net/m0_69724592/article/details/134657230
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_40032.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。