STM32F407学习笔记——GPIO_按键控制LED亮灭

2023-05-16

#include <stm32f4xx.h>
#include "stm32f4xx_conf.h"
#include "delay.h"

GPIO_TypeDef* io_led=GPIOC;//定义一个指向结构体GPIO_TypeDef的io_led  
const u16 pin_led=GPIO_Pin_1;//引脚
GPIO_TypeDef* io_key=GPIOC;
const u16 pin_key=GPIO_Pin_0;

void Led_Init()
{
	GPIO_InitTypeDef GPIO_init_l;//用于初始化的结构体
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);	//时钟
	GPIO_init_l.GPIO_Pin=GPIO_Pin_1;
	GPIO_init_l.GPIO_Mode=GPIO_Mode_OUT;
	GPIO_init_l.GPIO_OType=GPIO_OType_PP;
	GPIO_init_l.GPIO_Speed=GPIO_Speed_100MHz;
	GPIO_init_l.GPIO_PuPd=GPIO_PuPd_NOPULL;

	GPIO_Init(GPIOC,&GPIO_init_l);
}

void Key_Init()
{
	GPIO_InitTypeDef GPIO_init_k;
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
	GPIO_init_k.GPIO_Pin=GPIO_Pin_0;
	GPIO_init_k.GPIO_Mode=GPIO_Mode_IN;
	GPIO_init_k.GPIO_PuPd=GPIO_PuPd_NOPULL;

	GPIO_Init(GPIOC,&GPIO_init_k);
}

void Delay(u32 time)
{
	u32 t=time;
	while(t--);
}

int main(void)
{
	u8 flag=0;
	Key_Init();
	Led_Init();
	while(1)
	{
		if((io_key->IDR&pin_key)==0){
			Delay(0xfffff);
			if((io_key->IDR&pin_key)==0){
				if(flag==0){
					flag=1;
					io_led->BSRRL=pin_led;//对寄存器进行操作   BSRRL  低电平
					Delay(5000000);
				}
				else{
					flag=0;
					io_led->BSRRH=pin_led;//对寄存器进行操作   BSRRH   高电平
					Delay(5000000);
				}
			}
		}
	}
}
话说51写这个分分钟就搞定了,不过STM32这样是有道理的,大型的工程便于管理


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F407学习笔记——GPIO_按键控制LED亮灭 的相关文章

随机推荐

  • 最大似然估计和最小二乘估计的区别与联系

    看似最小二乘估计与最大似然估计在推导得到的结果很相似 xff0c 但是其前提条件必须引起大家的注意 xff01 xff01 xff01 对于最小二乘估计 xff0c 最合理的参数估计量应该使得模型能最好地拟合样本数据 xff0c 也就是估计
  • 关于Web API 2.0中的Options请求返回405的问题

    关于Web API 2 0中的Options请求返回405的问题 前提 xff1a IIS寄宿的网站 当你向服务器发送非简单请求时 xff0c 客户端会先发送一条预检请求 xff0c 借以确认当前请求源和待请求方法是否被网站允许 xff08
  • 得到指针指向的数组的长度

    1 定义数组 xff0c 要给定其长度 xff0c 也可以用Type a 61 的方式 在对数组进行操作时 xff0c 可能需要计算数组长度 xff0c 方法是 xff1a sizeof 数组名 sizeof 元素类型 数组int a 4
  • Redis的应用--分布式锁

    Redis 文章目录 Redis应用分布式锁解决方案 应用 分布式锁 互斥死锁容错 解决方案 正常使用redis的nx数据 xff0c 下面的语句 xff0c key使用对应的前缀 43 主键 xff0c value使用一个随机值UUID
  • Golang调用FFmpeg转换视频流

    问题背景 问题背景是在 xff0c 由于视频采集端使用的是H264编码采集的裸流 xff0c 而网络流媒体大多是以FLV为主的直播方式进行的 xff0c 为了实现实时直播 xff0c 当前是打算直接使用FFmpeg将H264裸流实时转成FL
  • 【Deepin Debian 系统安装RPD远程桌面工具Remmina】

    Remmina 是一款在 Linux 和其他类 Unix 系统下的自由开源 功能丰富 强大的远程桌面客户端 xff0c 它用 GTK 43 3 编写而成 它适用于那些需要远程访问及使用许多计算机的系统管理员和在外出行人员 它以简单 统一 同
  • Linux部署yapi

    一 安装node 1 获取资源node资源 8 x版本 curl sL https rpm nodesource com setup 8 x bash 耐心等待 2 安装nodejs yum install y nodejs 3 查看nod
  • vim环境设定:~/.vimrc(语法高亮等一些的设置)

    Centos里的VI只默认安装了vim minimal xff0d 7 x 所以无论是输入vi或者vim查看文件 xff0c syntax功能都无法正常启用 因此需要用yum安装另外两个组件 xff1a vim common 7 x和vim
  • HTML中meta标签都有什么作用?

    一直以来 xff0c 对HTML中的meta标签一知半解 xff0c 这次抽时间好好总结一下 meta标签 定义 xff1a meta元素提供有关页面的元信息 meta information 比如针对 搜索引擎和更新频度的描述和关键词 搜
  • 自增运算符的用法

    a 43 43 和 43 43 a 都属于自增运算符 a 43 43 是先进行取值 xff0c 后进行自增 43 43 a是先进行自增 xff0c 后进行取值
  • 使用七牛云CDN加速并绑定阿里云域名详细教程

    昨天晚上在某个群里看到群友问 xff0c 七牛云能不能绑定自己的域名作为静态资源文件的前缀 xff0c 忽然想起来我已经有快两年时间没有登录过我的七牛云账号了 xff0c 不禁老脸一红 xff0c 这是有多久没有自己前后端都弄了 xff0c
  • 一些中间件的思维导图

    一些中间件的思维导图 文章目录 一些中间件的思维导图写在前面Redis博客连接Redis的应用 分布式锁Redis的基础Redis的生产问题 缓存雪崩 缓存穿透 双写一致性 并发竞争Redis的cluster集群Redis的replicat
  • VS2012 下配置gsl-1.8库

    GSL的安装配置如下 xff1a 1 下载安装 从http gnuwin32 sourceforge net packages gsl htm 下载安装gsl 1 8 exe和gsl 1 8 src exe两个exe文件 下载好后如下图 x
  • 一种初始化结构体数组的方法

    typedef struct int requestNumber void dispatchFunction Parcel amp p struct RequestInfo pRI int responseFunction Parcel a
  • OpenCV学习笔记——新版本的数据结构core

    2 0新版本对数据结构进行了大幅修改 xff1a 定义了DataType 类 定义了Point 模板类 xff0c 取代了之前版本的CvPoint CvPoint2D32f Point 类不用多言 xff0c 里面两个成员变量x xff0c
  • Java面向对象中类与对象的概念和使用(一)

    方法创建与重载 1 方法就是一段可以重复调用的代码段 2 定义格式 xff1a 访问修饰符 返回值类型 方法名 1 方法重载 xff1a 方法名称相同 xff0c 但是参数的类型和个数不同 xff0c 通过传递参数的个数和类型不同来完成不同
  • CCF-CSP考试介绍以及复习技巧指导

    CCF CSP考试时间及费用 时间一般是每年3 9 12月的中旬 xff0c 报名时间一般也是提前一个月 xff0c 不固定 非计算机协会会员300元 次 xff0c 会员180元 次 xff08 学生会员需缴纳50元 年的会费 xff09
  • 知根知底:Flink-KafkaConsumer 详解

    Flink Kafka Connector 是连接kafka 的连接器 xff0c 负责对接kafka 的读写 xff0c 本篇主要介绍kafka consumer 的执行流程与核心设计 逻辑执行流程 分配当前task消费的partitio
  • debian下添加环境变量

    1 添加临时环境变量方法 xff1a export PATH 61 PATH usr local 你的环境变量路径 2 添加永久环境变量 cd 打开文件 gedit bashrc 在 bashrc文件末尾添加如下 xff1a PATH 61
  • STM32F407学习笔记——GPIO_按键控制LED亮灭

    include lt stm32f4xx h gt include 34 stm32f4xx conf h 34 include 34 delay h 34 GPIO TypeDef io led 61 GPIOC 定义一个指向结构体 sp