GPIO的使用--操作PF09 PF10 PF08实现呼吸灯、跑马灯、警报闪烁灯

先来个呼吸灯演示

呼吸灯

目录

一、GPIO的介绍

1.含义

2.控制原理

3.控制流程

二、LED控制

1.呼吸灯

操作代码

烧录结果

2.蜂鸣器+红绿灯交替

操作代码

3.红绿灯交替闪烁

操作代码


一、GPIO的介绍

1.含义

GPIO(general porpose intput output),通用输入输出端口。通过程序,借助芯片外接的引脚(GPIO)来控制硬件设备上的的器件。芯片和引脚如图所示:

2.控制原理

电流输出的高低,是由程序决定的,芯片中的程序决定给这根电线供电或断电,芯片外侧接LED灯,可以通过观察led灯的亮灭判断我们的控制是否成功。

3.控制流程

二、LED控制

1.呼吸灯

操作代码
#include "stm32f4xx.h"                  // Device header//呼吸灯delay
void delay2(uint32_t t)
{while(t--);
}int main()
{//时钟使能RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//GPIO时钟控制  //参数配置,五大参数//让程序决定第几组第几根引脚,如何工作GPIO_InitTypeDef led_gpio;led_gpio.GPIO_Mode = GPIO_Mode_OUT;      //参数一:引脚以何种方式工作,输出->led灯只能是输出led_gpio.GPIO_OType = GPIO_OType_PP;	 //参数二:推挽或开漏,只设置其一 GPIO_OType_PP推挽; GPIO_OType_OD开漏led_gpio.GPIO_Pin =  GPIO_Pin_9| GPIO_Pin_10;//参数三:引脚工作成员;9、10两个成员同时工作key_gpio.GPIO_Speed=GPIO_High_Speed;      //参数四:gpio的反应速率,不太影响key_gpio.GPIO_PuPd=GPIO_PuPd_UP;          //参数五:上拉  GPIO_PuPd_DOWN 下拉//GPIO_PuPd_NOPULLGPIO_Init(GPIOF,&led_gpio);              //初始化变量//GPIO操控while(1){uint32_t time;while(1){GPIO_SetBits(GPIOF,GPIO_Pin_10);GPIO_ResetBits(GPIOF, GPIO_Pin_9);		delay2(time);GPIO_ResetBits(GPIOF, GPIO_Pin_10);	GPIO_SetBits(GPIOF,GPIO_Pin_9);		delay2(5000-time);time++;if(time == 5000) break;}while(1){GPIO_SetBits(GPIOF,GPIO_Pin_10);	GPIO_ResetBits(GPIOF, GPIO_Pin_9);			delay2(time);GPIO_ResetBits(GPIOF, GPIO_Pin_10);GPIO_SetBits(GPIOF,GPIO_Pin_9);		delay2(5000-time);time--;if(time == 0) break;}}}
烧录结果

2.蜂鸣器+红绿灯交替

操作代码
#include "stm32f4xx.h"                  // Device headervoid delay()
{uint32_t t=6000000;while(t--);
}
int main()
{//时钟使能RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//GPIO时钟控制  //参数配置,五大参数//让程序决定第几组第几根引脚,如何工作GPIO_InitTypeDef led_gpio;led_gpio.GPIO_Mode = GPIO_Mode_OUT;      //参数一:引脚以何种方式工作,输出->led灯只能是输出led_gpio.GPIO_OType = GPIO_OType_PP;	 //参数二:推挽或开漏,只设置其一 GPIO_OType_PP推挽; GPIO_OType_OD开漏led_gpio.GPIO_Pin =  GPIO_Pin_9| GPIO_Pin_10;//参数三:引脚工作成员;9、10两个成员同时工作key_gpio.GPIO_Speed=GPIO_High_Speed;      //参数四:gpio的反应速率,不太影响key_gpio.GPIO_PuPd=GPIO_PuPd_UP;          //参数五:上拉  GPIO_PuPd_DOWN 下拉//GPIO_PuPd_NOPULLGPIO_Init(GPIOF,&led_gpio);              //初始化变量//GPIO操控while(1){GPIO_SetBits(GPIOF, GPIO_Pin_8);GPIO_ResetBits(GPIOF, GPIO_Pin_9);delay();GPIO_SetBits(GPIOF, GPIO_Pin_9);GPIO_ResetBits(GPIOF, GPIO_Pin_8);GPIO_ResetBits(GPIOF, GPIO_Pin_10);delay();GPIO_SetBits(GPIOF, GPIO_Pin_10);}}

3.跑马灯--红绿灯交替闪烁

操作代码
#include "stm32f4xx.h"                  // Device headervoid delay()
{uint32_t t=6000000;while(t--);
}
int main()
{//时钟使能RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);//GPIO时钟控制  //参数配置,五大参数//让程序决定第几组第几根引脚,如何工作GPIO_InitTypeDef led_gpio;led_gpio.GPIO_Mode = GPIO_Mode_OUT;      //参数一:引脚以何种方式工作,输出->led灯只能是输出led_gpio.GPIO_OType = GPIO_OType_PP;	 //参数二:推挽或开漏,只设置其一 GPIO_OType_PP推挽; GPIO_OType_OD开漏led_gpio.GPIO_Pin =  GPIO_Pin_9| GPIO_Pin_10;//参数三:引脚工作成员;9、10两个成员同时工作key_gpio.GPIO_Speed=GPIO_High_Speed;      //参数四:gpio的反应速率,不太影响key_gpio.GPIO_PuPd=GPIO_PuPd_UP;          //参数五:上拉  GPIO_PuPd_DOWN 下拉//GPIO_PuPd_NOPULLGPIO_Init(GPIOF,&led_gpio);              //初始化变量//GPIO操控while(1){GPIO_ResetBits(GPIOF, GPIO_Pin_9);delay();GPIO_SetBits(GPIOF, GPIO_Pin_9);GPIO_ResetBits(GPIOF, GPIO_Pin_10);delay();GPIO_SetBits(GPIOF, GPIO_Pin_10);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/177167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI超级个体:ChatGPT与AIGC实战指南

目录 前言 一、ChatGPT在日常工作中的应用场景 1. 客户服务与支持 2. 内部沟通与协作 3. 创新与问题解决 二、巧用ChatGPT提升工作效率 1. 自动化工作流程 2. 信息整合与共享 3. 提高决策效率 三、巧用ChatGPT创造价值 1. 优化产品和服务 2. 提高员工满意度和留任率…

Slf4j使用Logback时,Logback如何初始化

前言 Slf4j SLF4J,全称 Simple Logging Facade for Java,是一个用于Java编程语言的日志系统抽象层。它为多种现有日志框架(例如Log4j、java.util.logging等)提供了统一的接口, 但自身并不实现日志功能。 SLF4J 允许用户在部署时…

ArkUI 如何将$r(’app.string.xxx‘) 转成string字符串

一、正常引用字符串资源文件内容 在 ArkUI 中,string.json 中的字符串资源正常情况下使用如下方式引用: Entry Component struct LoginPage {build() {Column() {Text($r(app.string.title))}}}二、资源转string类型 上面的代码没问题是因为 Text(con…

如何通过内网穿透实现公网远程ssh连接kali系统

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh远程连接kali 1…

销售流程中如何有效开发客户

在销售的海洋中,如何游刃有余地开发客户是一大关键。这需要深入了解你的目标客户,制定一份精细的销售计划,选择最合适的沟通方式,建立信任和信誉,并持续不断地跟进。 每一个潜在的客户都是一颗璀璨的星辰,…

【密码学引论】Hash密码

第六章 Hash密码 md4、md5、sha系列、SM3 定义:将任意长度的消息映射成固定长度消息的函数功能:确保数据的真实性和完整性,主要用于认证和数字签名Hash函数的安全性:单向性、抗若碰撞性、抗强碰撞性生日攻击:对于生日…

Ubuntu 设置Nginx开机自启

1.建立自启动服务文件 vim /usr/lib/systemd/system/nginx.service Descriptionnginx - high performance web server Afternetwork.target remote-fs.target nss-lookup.target [Service] Typeforking ExecStart/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx…

【libGDX】Mesh立方体贴图(6张图)

1 前言 本文通过一个立方体贴图的例子,讲解三维纹理贴图的应用,案例中使用 6 张不同的图片给立方体贴图,图片如下。 读者如果对 libGDX 不太熟悉,请回顾以下内容。 使用Mesh绘制三角形使用Mesh绘制矩形使用Mesh绘制圆形使用Mesh绘…

Current request is not a multipart request问题排查

概述 在应用工程里看到如下被标记为deprecated的代码,这对有代码洁癖的我而言是无法忍受的: row.getCell(10).setCellType(Cell.CELL_TYPE_STRING); String hospital row.getCell(0).getStringCellValue();对应的poi版本号?是的&#xff…

MySQL安装与配置教程

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

初刷leetcode题目(9)——数据结构与算法

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️…

Feign调用的两种方式

一、 先看一下项目结构 ply模块是主要的业务模块,upms是用户管理模块 他们都分为api和biz 其中api就是一些实体类,工具类,biz就是业务逻辑代码。 首先在upms-api中建立feign的文件夹,然后新建一个接口CustomApi CustomApi 然…

(Linux2.6内核)进程调度队列与切换

个人主页:Lei宝啊 愿所有美好如期而遇 我们首先来了解几个概念 1. 进程在CPU上运行的时候,一定要运行完才行吗?答案是否定的,我们大部分的操作系统,主流就是分时操作系统,即基于时间片进程轮转执行的。 …

Nginx Openresty通过Lua+Redis 实现动态封禁IP

需求 为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的 IP 黑名单。对于黑名单中的 IP ,我们将拒绝提供服务。并且可以设置封禁失效时间 环境准备 linux version: centos7 / ubuntu 等 redis version: 5.0.5 nginx version: nginx…

智能优化算法应用:基于正余弦算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于正余弦算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于正余弦算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.正余弦算法4.实验参数设定5.算法结果6.参考文献7.…

学习知识回顾随笔

文章目录 如何远程连接MySQL数据库1.创建用户来运行,此用户从任何主机连接到mysql数据库2.使用IP地址来访问MySQL数据库 如何远程访问Django项目Web应用什么是Web应用应用程序的两种模式Web应用程序的优缺点 HTTP协议(超文本传输协议)简介HTT…

FLASK博客系列4——再谈路由

最近好像拖更有点久了。抱歉抱歉~ 今天我们继续来聊聊路由(其实就是我上次偷懒剩下一点没讲完)。 通过上次的文章,我们基本了解了Flask中的路由,是不是比较简单呢?别急,今天来点猛料。 一、路由之HTTP方法绑…

C++之STL库:string类(用法列举和总结)

前言 大家在学习STL库的时候一定要学会看英文文档&#xff0c;俗话说熟能生巧&#xff0c;所以还得多练&#xff01; 在使用string类之前&#xff0c;要包含头文件#include <string>和using namespace std; 文档链接&#xff1a;string - C Reference 一、string——构造…

Springboot日志-logback

logback-spring.xml的配置项 共有一个父标签、两种属性、三个节点: 一个父标签&#xff1a;configuration 两种属性&#xff1a;contextName和property 三个节点&#xff1a;appender、root、logger 日志级别 日志级别从低到高分为TRACE < DEBUG < INFO < WARN &…

filebeat日志收集工具

elk:filebeat日志收集工具和logstash相同 filebeat是一个轻量级的日志收集工具&#xff0c;所使用的系统资源比logstash部署和启动时使用的资源要小得多 filebeat可以运行在非Java环境&#xff0c;它可以代理logstash在非Java环境上收集日志 filebeat无法实现数据的过滤&…