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.hqwc.cn/news/225174.html

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

相关文章

Langchain-Chatchat学习

参考:Langchain-Chatchat 阿里通义千问Qwen 保姆级教程 | 次世代知识管理解决方案 - 知乎 (zhihu.com) 中文LLM生态观察 模型 就开源的部分而言,从一开始的MOSS[1] ChatGLM[2] ChatGLM2 [3] 到后来的 baichan [4] 基于LLama2 微调的 中文LLama2 [5] …

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

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

森林无人机高效解决巡查难题,林区防火掀新篇

山东省某市为了强化森林火灾防范,采用了一项新兴手段——复亚智能无人机森林火情监测系统。这套系统在AI飞行大脑的指挥下,让无人机在空中巡逻,实现了无人机森林防火系统的实施落地。 一、AI大脑如何引领森林无人机高空巡逻? 在山…

Appium 2 和 Appium Inspector 环境部署

前言 自 2022 年 1 月 1 日起,Appium 核心团队不再维护 Appium 1.x。官方支持的平台驱动程序的所有最新版本均不兼容 Appium 1.x,需要 Appium 2 才能运行。 Appium 2是一个自动化移动应用程序的开源工具,它带来了以下重要改进:  …

sqli-labs靶场详解less-24(二次注入)

less-24 对于一个像我一样的小白来说这关就像php代码审计 一开始进行判断注入点的时候怎么都找不到一点思路都没有 只能搜教程 说是二次注入 从来没遇见的题型 于是从代码审计开始 先说一下什么叫二次注入 二次注入 二次注入是指通过SQL语句存储到数据库的用户输入被读取后再次…

ESP32-Web-Server编程- JS 基础 4

ESP32-Web-Server编程- JS 基础 4 概述 HTML 内联事件处理器,你永远不应该使用 HTML 事件处理器属性——因为那些已经过时了,使用它们是不好的做法。 在前端编程中,除了将期望发生的事件写为 JS 文件外,还可以使用一些组件自带…

JavaScript 的 DOM 知识点有哪些?

文档对象模型(Document Object Model,简称 DOM),是一种与平台和语言无关的模型,用来表示 HTML 或 XML 文档。文档对象模型中定义了文档的逻辑结构,以及程序访问和操作文档的方式。 当网页加载时&#xff0…

正则表达式回溯陷阱

一、匹配场景 判断一个句子是不是正规英文句子 text "I am a student" 一个正常的英文句子如上,英文单词 空格隔开 英文单词 多个英文字符 [a-zA-Z] 空格用 \s 表示 那么一个句子就是单词 空格(一个或者多个,最后那个单词…

正点原子linux应用编程——入门篇2

系统信息与系统资源 本章重点学习如何通过Linux系统调用或C库函数获取系统信息,譬如获取系统时间、日期 以及设置系统时间、日期等;除此之外,还会学习Linux系统下的/proc虚拟文件系统,包括/proc 文件系统是什么以及如何从/proc文…

【Java Spring】SpringBoot 配置文件

1、Spring Boot配置文件的作用 配置文件的基本作用: 数据库连接信息(包括用户名和密码的设置)项目的启动端口第三方系统的调用密钥等信息用于发现和定位问题的普通日志和异常日志等 2、Spring Boot配置文件的格式 Spring Boot配置文件主要…

二十章 多线程

线程简介 在 Java 中,并发机制非常重要。在以往的程序设计中,我们都是一个任务完成后再进行下一个任务,这样下一个任务的开始必须等待前一个任务的结束。Java 语言提供了并发机制,程序员可以在程序中执行多个线程,每一…

基于Webserver的工业数据采集控制

http协议 http简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于Web Browser(浏览器)到Web Server(服务器)进行数据交互的传输协议。 HTTP是应用层协议 HTTP是一个基于…