当前位置: 首页 > article >正文

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_NOPULL
	GPIO_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 header

void 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_NOPULL
	GPIO_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 header

void 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_NOPULL
	GPIO_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.kler.cn/news/156974.html

相关文章:

  • 开源CDN软件GoEdge —— 筑梦之路
  • 马斯克没继续的工作,我帮他继续下去
  • [蓝桥杯 2019 省 B] 特别数的和-C语言的解法
  • Anaconda和Python关系详解和使用选择
  • Educational Codeforces Round 159(div2) --- E. Collapsing Strings-- 题解
  • Redis数据库
  • 卷麻了,00后测试用例写的比我还好,简直无地自容......
  • spring日志输出到elasticsearch
  • 【有机化学(药学类)】醛和酮3
  • 刷题系列——排序算法
  • Python面向对象③:封装【侯小啾Python基础领航计划 系列(二十一)】
  • 5.【自动驾驶与机器人中的SLAM技术】2D点云的scan matching算法 和 检测退化场景的思路
  • Android之 知识总结第二篇
  • 用python写一个简单的爬虫
  • 三次握手四次挥手
  • Google Protocol Buffers (proto3) 中的 DoubleValue 类型用法总结
  • linux创建新的py文件
  • 电商项目之Web实时消息推送(附源码)
  • 入门Python+Vue 全栈开发高级BI数据的可视化实战项目几个技术点总结
  • 2023年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——解析版
  • 131. 分割回文串
  • JMeter从入门到精通
  • 个人Windows电脑通过Cloudreve+Cpolar搭建PHP云盘系统公网可访问
  • 机器学习(1)机器学习类型和机器学习的主要概念
  • 练习十一:简单卷积器的设计
  • 纯C读取文件实现解析H264裸流每一帧数据
  • 回归分析:预测和建模
  • Git 简介及异常场景处理
  • 12月4日作业
  • 作业12.4