江科大stm32学习笔记——【3-2】GPIO输出:LED闪烁LED流水灯蜂鸣器

(一) 硬件连接

1.LED闪烁

LED灯正极连接面包板电源正极,LED负极连接单片机A0口

(也可以LED负极连面包板负极,LED正极连接单片机A0口)

跳线连接单片机3.3和面包板正极,连接单片机GND和面包板负极

2.LED流水灯

 

3.蜂鸣器

(二)代码

一.基础代码

以下所有库函数从gpio.h文件最下方查找,参数也是对函数定义查找后自己填写

1.使用RCC开启GPIO时钟: 

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

2.使用GPIO_Init函数初始化GPIO

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);

开漏输出的模式高电平没有驱动能力

3.使用输出或者输入的函数控制GPIO口:

GPIO_SetBits(GPIOA,GPIO_Pin_0);//将指定端口设置为高电平
GPIO_ResetBits(GPIOA,GPIO_Pin_0);//将指定端口设置为低电平
GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);//将指定端口设置为高电平或低电平

二.LED闪烁

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
int main(void){//使用RCC开启GPIO时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使用GPIO_Init函数初始化GPIO:GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);while(1){GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);Delay_ms(500);GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);Delay_ms(500);}
}

延时函数要加头文件注明

三.LED流水灯

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
int main(void){	//使用RCC开启GPIO时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使用GPIO_Init函数初始化GPIO:GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);while(1){//加~是因为低电平点亮,要按位取反GPIO_Write(GPIOA,~0x0001);//对应二进制:0000 0000 0000 0001 PA0Delay_ms(500);GPIO_Write(GPIOA,~0x0002);//对应二进制:0000 0000 0000 0010 PA1Delay_ms(500);GPIO_Write(GPIOA,~0x0004);//对应二进制:0000 0000 0000 0100 PA2Delay_ms(500);GPIO_Write(GPIOA,~0x0008);//对应二进制:0000 0000 0000 1000 PA3Delay_ms(500);GPIO_Write(GPIOA,~0x0010);//对应二进制:0000 0000 0001 0000 PA4Delay_ms(500);GPIO_Write(GPIOA,~0x0020);//对应二进制:0000 0000 0010 0000 PA5Delay_ms(500);GPIO_Write(GPIOA,~0x0040);//对应二进制:0000 0000 0100 0000 PA6Delay_ms(500);GPIO_Write(GPIOA,~0x0080);//对应二进制:0000 0000 1000 0000 PA7Delay_ms(500);}
}

 三.蜂鸣器

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
int main(void){//使用RCC开启GPIO时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使用GPIO_Init函数初始化GPIO:GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);while(1){GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_RESET);Delay_ms(500);GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_SET);Delay_ms(500);}
}

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

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

相关文章

本地配置多个git账户及ll设置

本地配置多个git账户 清除全局配置将命令行,切换到ssh目录生成GitLab和Gitee的公钥、私钥去对应的代码仓库添加 SSH Keys添加私钥ll设置 管理密钥验证仓库配置关于gitgitee.com: Permission denied (publickey) 清除全局配置 此步骤可以不做,经测试不影…

【Spring】IoC容器 控制反转 与 DI依赖注入 配置类实现版本 第四期

文章目录 基于 配置类 方式管理 Bean一、 配置类和扫描注解二、Bean定义组件三、高级特性:Bean注解细节四、高级特性:Import扩展五、基于注解配置类方式整合三层架构组件总结 基于 配置类 方式管理 Bean Spring 完全注解配置(Fully Annotatio…

Spark之【基础介绍】

Spark最初是由美国伯克利大学AMP实验室在2009年开发,Spark时基于内存计算的大数据并行计算框架,可以用于构建大型的、低延迟的数据分析应用程序。 Spark是当今大数据领域最活跃、最热门、最高效的大数据通用计算平台之一。 Spark的特点 运行速度快 &am…

社交媒体变革者:剖析Facebook对在线互动的贡献

随着数字化时代的蓬勃发展,社交媒体已经成为人们日常生活中不可或缺的一部分。在这个领域的发展中,Facebook作为先行者和领导者,对在线互动的演变和发展产生了深远的影响。本文将深入剖析Facebook在社交媒体领域的贡献,以及它对在…

Kafka3.x进阶

来源:B站 目录 Kafka生产者生产经验——生产者如何提高吞吐量生产经验——数据可靠性生产经验——数据去重数据传递语义幂等性生产者事务 生产经验——数据有序生产经验——数据乱序 Kafka BrokerKafka Broker 工作流程Zookeeper 存储的 Kafka 信息Kafka Broker 总…

Flink中的双流Join

1. Flink中双流Join介绍 Flink版本Join支持类型Join API1.4innerTable/SQL1.5inner,left,right,fullTable/SQL1.6inner,left,right,fullTable/SQL/DataStream Join大体分为两种:Window Join 和 Interval Join 两种。 Window Join又可以根据Window的类型细分为3种…

网络中的进程监控

每个企业都有一些流程和程序来实现他们的业务目标,这同样适用于网络,网络中的进程监控是分析、处理和管理网络内发生的各种活动以提高网络性能和能力的做法。 网络中需要监控的基本进程 监视系统资源(CPU 利用率、内存利用率、CPU 温度等&a…

【QT-lineEidte动画效果

QT-lineEidte动画效果 一、演示效果二、核心代码三、下载链接 一、演示效果 二、核心代码 #ifndef DynamicUnderlineLineEdit_H #define DynamicUnderlineLineEdit_H#include <QWidget> #include <QLineEdit> #include <QPainter> #include <QPaintEvent…

Redis高性能原理

redis大家都知道拥有很高的性能&#xff0c;每秒可以支持上万个请求&#xff0c;这里探讨下它高性能的原理。单线程架构和io多路复用技术。 一&#xff0c;单线程架构 单线程架构指的是命令执行核心线程是单线程的&#xff0c;数据持久化、同步、异步删除是其他线程在跑的。re…

【安卓基础4】Activity(二)

&#x1f3c6;作者简介&#xff1a;|康有为| &#xff0c;大四在读&#xff0c;目前在小米安卓实习&#xff0c;毕业入职 &#x1f3c6;安卓学习资料推荐&#xff1a; 视频&#xff1a;b站搜动脑学院 视频链接 &#xff08;他们的视频后面一部分没再更新&#xff0c;看看前面也…

软考29-上午题-【数据结构】-排序

一、排序的基本概念 1-1、稳定性 稳定性指的是相同的数据所在的位置经过排序后是否发生变化。若是排序后&#xff0c;次序不变&#xff0c;则是稳定的。 1-2、归位 每一趟排序能确定一个元素的最终位置。 1-3、内部排序 排序记录全部存放在内存中进行排序的过程。 1-4、外部…

YOLOv5推理时出现:assert im0 is not None, f‘Image Not Found {path}‘

一、问题展示 Traceback (most recent call last):File "/media/hadoop/yolov5-7.0/detect.py", line 259, in <module>main(opt)File "/media/hadoop//yolov5-7.0/detect.py", line 254, in mainrun(**vars(opt))File "/home/hadoop/anaconda…