STM32入门教程-2023版【3-2】详细讲解实现LED流水灯

news2024/11/29 12:30:21

关注 + 点赞    不错过精彩内容

图片

大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! 

三、LED流水灯

依据电路图连接电路

图片

复制LED闪烁的工程,改个名字叫3-2 LED流水灯

图片

修改部分代码,因为我们连接的都是GPIOA的端口,所以第一句不用变的

图片

接着初始化端口的这一部分,我们流水灯用的是GPIOA的0到7号端口,所以这里要加一些端口,如图所示这样就可以把这三个端口初始化了

图片

为什么可以这样用“|”操作?

在stm32f10x_gpio.h文件中可以看到,各个端口的定义,将各位转化为二进制是0000000000000001、0000000000000010、0000000000000100,这里每一个端口对应着一个位,按位或的操作就相当于0000000000000111

图片

最后,我们还可以看到,这里有个GPIO_Pin_All,它对应的数据就是0xFFFF,也就是所有位都为1,这样就相当于选中了所有的引脚

图片

在这里,除了这个GPIO_Pin可以用按位或的操作方式外,这个时钟控制的这一项,也是可以用按位或的操作有式来选择多个外设的

图片

介绍完按位或,我们就可以在这里使用按位或把这8个引脚都选上,这样就把16个端口全部配置为推挽输出模式

图片

在while中,为了实现同时控制16个端口,我们就可以使用GPIO_Write这个函数了,我们复制过来,第一个参数是GPIOx,我们直接写GPIOA

图片

第二个转到定义看一下,这第二个参数就是直接写到GPIO的ODR寄存器里的

图片

所以我们可以写0x0001,对应二进制就是0000 0000 0000 0001,因为C语言不支持直接写二进制,所以这里只能转换为十六进制来写,这16个二进制分别对应PA0到PA15总共16个端口,最低位对应PA0,然后往上依次是PA1、PA2,一直到PA15

图片

因为是低电平点亮,所以前面再加一个按位取反的符号,这样就是第一个LED点亮,其他都熄灭了

图片

以此类推可以实现8个Led灯的点亮,再加上Delay延时函数,就可以实现8个Led灯的循环点亮,想快一点的话可以让Delay函数延时时间改为100,如:Delay_ms(100);

#include "stm32f10x.h"                  // Device header#include "delay.h" int main(void){                GPIO_InitTypeDef GPIO_Initstructure;        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);                GPIO_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;        //GPIO_Initstructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; 按或取        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                Delay_ms(500);                GPIO_Write(GPIOA, ~0x0002); //0000 0000 0000 0010                Delay_ms(500);                GPIO_Write(GPIOA, ~0x0004); //0000 0000 0000 0100                Delay_ms(500);                GPIO_Write(GPIOA, ~0x0008); //0000 0000 0000 1000                Delay_ms(500);                GPIO_Write(GPIOA, ~0x0010); //0000 0000 0001 0000                Delay_ms(500);                GPIO_Write(GPIOA, ~0x0020); //0000 0000 0010 0000                Delay_ms(500);                GPIO_Write(GPIOA, ~0x0040); //0000 0000 0100 0000                Delay_ms(500);                GPIO_Write(GPIOA, ~0x0080); //0000 0000 1000 0000                Delay_ms(500);        }}

可以看到LED循环点亮!

图片

作 者 :硬核王同学

------- END ------

关注公众号回复“加群”按规则加入技术交流群  回复“1024”查看更多内容

图片

如果觉得有用请点个免费的赞

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

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

相关文章

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(2)

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(2) 在 Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(1) Android Matrix剪切clipPath缩放scale图片po…

Linux基础知识点-(七-线程)

目录 一、线程和进程 1.1 线程的基本概念 1.2 线程的优缺点 二、创建线程 2.1 pthread_create() - 创建线程函数 三、线程属性 四、线程退出 4.1 pthread_exit() 4.2 pthread_join() 4.3 pthread_detach() 一、线程和进程 1.1 线程的基本概念 在很多Linux的书籍基…

Java ArrayList 面试题

Java ArrayList 面试题 文章目录 Java ArrayList 面试题ArrayList源码分析成员变量构造方法ArrayList源码分析面试题-ArrayList listnew ArrayList(10)中的list扩容几次面试题-如何实现数组和List之间的转换 ArrayList源码分析 分析ArrayList源码主要从三个方面去翻阅&#xf…

【鸿蒙】安装DevEco Studio运行HarmonyOS第一个APP(小白必看)

文章目录 前言一、DevEco Studio是什么?二、DevEco Studio安装运行1. 下载DevEco Studio2. 安装DevEco Studio3. 启动DevEco Studio4. 运行APP5. 修改代码 三、DevEco Studio调试注意事项总结 前言 鸿蒙OS是华为公司开发的一款基于微内核、耗时10年、4000多名研发人…

MySQL检索距离当前最近的7个小时内,靠近每个时间点数据信息

MySQL检索距离当前最近的7个小时内,靠近每个时间点数据信息 如果你想在最近7个小时内找到每个时间点最接近的数据,即使某些时间点没有数据,你可以使用子查询和窗口函数。以下是一个示例查询: sqlCopy codeSELECTt.time_point,CO…

[每周一更]-(第51期):Go的调度器GMP

参考文献 https://learnku.com/articles/41728http://go.cyub.vip/gmp/gmp-model.html#g-m-phttps://blog.csdn.net/ByteDanceTech/article/details/129292683https://www.ququ123.top/2022/04/golang_gmp_principle/ 什么是GMP? GMP模型是Go语言并发模型的核心概念&#x…

chrome浏览器自动填充密码的字号设置不生效

问题 刷新浏览器初始化字号很小 随便点击一下就会恢复我设置的字号大小 原因 给表单设置自动填充 autocomplete“on” 后,chrome会默认给自动填充的input表单加上 input:-webkit-autofill 私有属性 解决办法 方法一,对私有属性设置样式&#xff0…

matplotlib绘制折线图

代码 import matplotlib.pyplot as plt import numpy as npdef get_data(txt_path: str , epoch: int 100, target: str , target_data_len: int 5): # 函数介绍 # https://blog.csdn.net/LQ_001/article/details/130127681?csdn_share_tail%7B%22type%22%3A%22blog%22%2…

2024年的诸多跨年演讲,为什么觉得像是鸡汤?

时光如白驹过隙匆匆而已,转瞬间已来到2024年。伴随着新的一年的到来,一些互联网大佬如罗振宇、吴晓波等纷纷直播演讲,分享各自的思考和感悟。值不值得听呢?为什么有时候觉得是鸡汤?这里分析下可能的原因。 罗振宇的“做…

好代码网同款wordpress主题,适合搭建资源分享类网站,自带五六百的精品资源数据

代码简介: 好代码资源网是个还不错的资源分享类网站,基于wordpress搭建的。它的主题看起来还是不错的。这里分享一下这个网站的主题包。说是主题包,其实就是整站打包的,集成了主题(wordpress美化主题包几个插件&#…

使用results.csv文件数据绘制mAP对比图

yolov5每次train完成(如果没有中途退出)都会在run目录下生成expX目录(X代表生成结果次数 第一次训练完成生成exp0 第二次生成exp1…以此类推)。expX目录下会保存训练生成的weights以及result.txt文件,其中weights是训练…

走进UI设计的秘密武器!6款软件值得珍藏!

Adobe Photoshop AdobePhotoshop,简称“PS它是一个由Adobesystems开发和发行的图像处理软件。Photoshop主要处理由像素组成的数字图像。使用其大量的编辑和绘图工具,可以有效地编辑图片。PS在图像、图形、文本、视频、出版等方面具有许多功能。 截至20…

API调试利器:速卖通平台的API测试与调试全攻略

想要快速注册速卖通平台的API账号?按照以下步骤操作,轻松完成注册: 进入速卖通平台,点击“卖家中心”,找到并点击“API管理”选项。在API管理页面中,点击“申请API密钥”按钮,填写相关信息并提…

架构设计系列9,10

架构设计系列9:前端架构和后端架构的区别 前端架构和后端架构都是软件系统中最关键的架构层,负责处理不同方面的任务和逻辑,两者之间是存在一些区别和联系的,我会从以下几个方面来阐述: 定位和职责 ● 前端架构主要…

普通用户用哪款电脑杀毒软件最好?

前言 各位小伙伴接触到电脑的时候,都一定有听过“电脑一定要安装杀毒软件”这句话。 毕竟在电脑诞生之初到今天,电脑木马和病毒依旧存在。 中了木马或病毒的电脑会出现什么现象?具体得看中了什么样的病毒。 但轻则资料泄漏、电脑瘫痪&…

el-select 多选,选有一个未选择的选项

多选有未选择这个选项后。会出现一个情况,绑定的数据为[‘未选择’,‘cpu1’,‘cpu2’] 进行一个处理,选择(未选择)就清除(其它的选择),选择(cpu)就清除(未选…

【Python机器学习】k近邻——k近邻分类

k-NN算法最简单的版本是只考虑一个最近邻,也就是想要预测的数据点最近的训练数据点,预测结果就是这个训练数据点的已知输出。 除了仅考虑最近邻,还可以考虑任意(k个)邻居,这也是k近邻算法名字的由来。在考…

【TC3xx芯片】TC3xx芯片的GTM模块详解

目录 前言 正文 1.GTM模块功能概述 1.1 GTM具体功能 1.2 GTM架构 2. GTM模块输入时钟 2.1.fGTM的值怎么计算 3. CMU 3.1 CMU功能 3.2 CMU时钟的计算 3..2.1 CLS0_CLK怎么计算 3.2.1 GTM Global Clock时钟计算 3.2.2 分频时钟的计算 4. CCM 4.1 CCM功能 4.2 CCM…

学习调整echarts中toolbox位置toolBox工具栏属性

学习调整echarts中toolbox位置toolBox工具栏属性 toolbox工具栏属性介绍示例代码代码参数说明 toolbox工具栏属性介绍 参考网址:https://echarts.apache.org/zh/option.html#tooltip 属性类型说明toolbox.showbooleanboolean 默认值为true,是否显示工具…

解密智能物流时代的未来:成本约束与需求升级的出路

引言: 近年来,中国物流行业蓬勃发展,为经济发展提供了重要的支撑。然而,随着国内外市场的竞争加剧和消费者对物流服务的期望不断提高,物流行业也面临着一系列的挑战。在此时,AR技术的应用融合给物流行业带…