江协STM32:点亮第一个LED灯和流水灯
很多单片机都是高电平弱驱动,低电平强驱动,所以这里是低电平有效
点亮一个LED灯
操作STM32的GPIO需要三个操作:
第一个使用RCC开启GPIO的时钟
第二步使用GPIO_Init函数初始化GPIO
第三步使用输出或输入函数控制GPIO
1.使用RCC开启GPIO的时钟
1.1.RCC的库函数
点击
主要用到这三个函数
1126这个函数:第一个参数选择外设,第二个参数使能或失能
示例 开启GPIOA的时钟
1.2.GPIO库函数:
还是Librayry里面
GPIO全部函数
349行函数调用之后,所指定的GPIO函数外设就会被复位,这个就是这个函数的用途
350行函数,作用:复位AFIO外设
351行函数,非常重要,这个函数的作用是用结构体的参数来初始化GPIO口,我们需要先定义一个结构体变量,再给结构体赋值,最后调用这个函数,这个函数内部就会自动读取结构体的值,然哈自动把外设的各个参数配置好
352行函数,这个函数可以把结构体变量赋给一个默认值
353-356这四个函数就是GPIO的读取函数
357-360这四个就是GPIO的写入函数
353-360这些函数就可以实现读写GPIO口的功能
361-366目前不用
这里面最重要的函数是:351,353-360
LED灯程序编写:
2.1.首先调用RCC里面的APB2外设时钟控制函数
因为要点亮PA0口的LED,所以选择RCC_APB2Periph GPIOA这一项
第二个参数选择ENABLE,放到第二个参数
这样时钟就开启了
2.2.然后调用GPIO_Init函数
第一个参数选择GPIOA,第二个参数是一个结构体
把结构体定义出来
然后用点把结构体的成员都定义出来
然后从8开始到10都是一个套路,右键跳转,看说明,复制粘贴一下参数
选择这个,Ctrl+F搜索一下,然后跳转下图
这里就是GPIO的八种工作模式
AIN是模拟输入,IN_FLOATING是浮空输入,IPD是下拉输入,IPU是上拉输入
OUT_PD是开漏输出,OUT_PP是推挽输出,AF_OD是复用开漏,AF_PP是复用推挽
点灯是推挽输出,所以复制OUT_PP
推挽输出:可以高电平也可以低电平
接下来GPIO_Pin选择引脚,然后继续右键跳转
选择menber
然后选择这个,Ctrl+F然后跳转下图
这里因为用的是GPIOA外设的0号引脚,所以选择GPIO_Pin_0
这样就设置好引脚了
然后设置第三个,还是右键跳转
Ctil+F搜索,跳转下面页面
输出速度选50HZ就行
最后把GPIO初始化结构体的地址放到GPIO_Init的第二个参数就行了,这样GPIO初始化就完成了
当这个GPIO_Inlt函数执行完,这个GPIO外设的0号引脚就自动被配置为推挽输出,50HZ的速度了
它内部的主要执行逻辑就是读取结构体的参数,执行一堆判断和运算,最后写入到GPIO的配置寄存器
上面步骤已经把GPIO初始化完成,下面就可以使用输入输出函数了
输出函数介绍
2.3.这次试验就用这四个输出函数
GPIO_Setbits:
第一个参数是GPIOx,也就是设置IO口,例如如果是PA那就是GPIOA,第二个参数是GPIO_Pin,这个函数可以把指定的端口设置为高电平
GPIO_ResetBits:
第一个参数是GPIOx,也就是设置IO口,例如如果是PA那就是GPIOA,第二个参数是GPIO_Pin,这个函数可以把指定的端口设置为低电平
GPIO_Writebit:
这个函数有三个参数,前两个跟上面一样,第三个是BitValue,这个是根据第三个参数的值来设置指定的端口
GPIO_Write
第一个参数是GPIOx,也就是设置IO口,第二个参数是PortVal,这个函数可以同时对16个端口进行写入操作
开始实践
用一下第一个函数
看注释
第一个GPIOx,x可以是A到G
第二个GPIO_Pin_x,x可以是0到15
这样就是控制了PA0
这个函数是把指定端口设置低电平,所以灯亮了
再来试试这个函数
这个函数是把指定端口设置高电平,所以灯灭了
然后再来试试第三个函数
第三个参数介绍的是指定写入的数据值,这个参数可以是BitAction这个枚举中的一个值
Bit_RESET是清除端口值,也就是置低电平
Bit_SET是设置端口值,也就是置高电平
写Bit_RESET
灯又亮了
写Bit_SET
灯又灭了
这就是这三个函数的用法
流水灯实验
还是之前LED的文件,复制粘贴一下
流水灯是用GPIOA的0-7号端口,所以这里要加端口1-7,在GPIO_Pin_0后面或运算GPIO_Pin_1或运算GPIO_Pin_2,这样就可以一次性把三个端口一次性都初始化了
为什么可以这样呢,我们看这个,这里可以看到,Pin0对应的是0x0001
这个是二进制形式
以此类推,每个端口对应一个位,如果把它们进行按位或的操作,这就是按位或的操作逻辑
比如Pin0,Pin1,Pin2按位或,结果就是0111,这样就相当于同时选中了三个端口
这里还有一个这个函数,GPIO_Pin_All,它对应的数据就是0xFFFF,也就是所有位都为1,这样就相当于选中了所有的引脚
时钟控制这一项,也是可以利用按位或的操作方式来选择多个外设的,数据规律是每一位对应一个外设
这个也可以利用按位或选择多个引脚,所以Setbit+了个s
这个函数也是一样的意思
这里的话就直接用GPIO_Pin_Alll了,这样就把16个端口全部配置为了推挽输出模式
为了现在同时控制16个端口,我们就可以使用GPIO_Write这个函数了
GPIO_Write
第一个参数是GPIOx
跳转看看,这里写的是,指定写到输出数据寄存器的值
可以看到,这第二个参数就是直接写道GPIO的ODR寄存器里面的
所以直接写0x0001,因为c语言不支持写二进制,所以这里只能写十六进制
最低位对应PA0,然后往上依次是PA1,PA2
一直到PA15
因为是低电平点亮,所以要在前面再加按位取反的符号
相关文章:
江协STM32:点亮第一个LED灯和流水灯
很多单片机都是高电平弱驱动,低电平强驱动,所以这里是低电平有效 点亮一个LED灯 操作STM32的GPIO需要三个操作: 第一个使用RCC开启GPIO的时钟 第二步使用GPIO_Init函数初始化GPIO 第三步使用输出或输入函数控制GPIO 1.使用RCC开启GPIO的时…...
设计模式之建造者模式精讲
也叫生成器模式。将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 在建造者模式中,有如下4个角色: 抽象建造者(Builder):用于规范产品的各个组成部分,并进行抽象&…...
vue3源码解析——watch和watchEffect区别
watch和watchEffect是Vue 3.0中新增的两个响应式API,用于监听数据的变化。watch适用于需要获取新值和旧值,或者需要懒执行的场景,而watchEffect适用于需要监听多个数据源,并且需要立即执行的场景。它们之间的区别如下:…...
微服务(基础篇-006-Docker)
目录 初识Docker(1) Docker解决的问题(1.1) Docker与虚拟机(1.2) 镜像和容器(1.3) Docker和DockerHub(1.4) docker架构(1.5) 安…...
深度学习算法概念介绍
前言 深度学习算法是一类基于人工神经网络的机器学习方法,其核心思想是通过多层次的非线性变换,从数据中学习表示层次特征,从而实现对复杂模式的建模和学习。深度学习算法在图像识别、语音识别、自然语言处理等领域取得了巨大的成功…...
查找算法及查找常用数据结构总结
1.顺序表查找 基本方法: 设查找表以一维数组来存储,要求在此表中查找出关键字的值为x的元素的位置,若查找成功,则返回其位置(即下标),否则,返回一个表示元素不存在的下标࿰…...
大语言模型---强化学习
本文章参考,原文链接:https://blog.csdn.net/qq_35812205/article/details/133563158 SFT使用交叉熵损失函数,目标是调整参数使模型输出与标准答案一致,不能从整体把控output质量 RLHF(分为奖励模型训练、近端策略优化…...
前端三剑客 —— CSS (第二节)
目录 内容回顾: CSS选择器*** 属性选择器 伪类选择器 1):link 超链接点击之前 2):visited 超链接点击之后 3):hover 鼠标悬停在某个标签上时 4):active 鼠标点击某个标签时,但没有松开 5):fo…...
牛客NC31 第一个只出现一次的字符【simple map Java,Go,PHP】
题目 题目链接: https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c 核心 Map参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*…...
软考系统架构设计师(摘抄)01
架构师承担的责任 系统架构师设计师是承担系统架构设计的核心角色,他不仅是连接用户需求和系统进一步设计与实现的桥梁,也是系统开发早期阶段质量保证的关键角色。系统架构师就是项目的总设计师,他是一个既需要掌控整体又需要洞悉局部瓶颈&a…...
5G无线接入网和接口协议
**部分笔记** 4.3无线协议架构 NR无线协议分为两个平面:用户面和控制面。 用户面(UP):协议栈及用户数据采用的协议 控制面(Control Plane,CP)协议栈即系统的控制信令传输采用的协议簇。 虚线标注的是信令数据的流向。一个UE在…...
【力扣刷题日记】1173.即时食物配送I
前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 1173.即时食物配送I 表:Delivery 列名类型delivery_idintcustomer_idintorder_datedatecustomer…...
2024年github之node排行榜top50
如果有帮助到您还请动动手帮忙点赞,关注,评论转发,感谢啦!💕💕💕😘😘😘 本文由Butterfly一键发布工具发布 2024年github之node排行榜top50 语言star项目名称…...
当我们在地址栏输入URL的时候浏览器发生了什么
URL 解析 是否合法 首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作。检查http缓存 DNS 查询 浏览器缓存 -> 操作系统缓存 -> 路由器缓存 -> DNS缓存 -> 根域名服务器查询 TCP 连接 …...
【研发日记】Matlab/Simulink开箱报告(十一)——Requirements Toolbox
目录 前言 Requirements Toolbox 编写需求 需求联接设计 需求跟踪开发进度 追溯性矩阵 分析和应用 总结 前言 见《开箱报告,Simulink Toolbox库模块使用指南(六)——S-Fuction模块(TLC)》 见《开箱报告&#x…...
Elastic 8.13:Elastic AI 助手中 Amazon Bedrock 的正式发布 (GA) 用于可观测性
作者:来自 Elastic Brian Bergholm 今天,我们很高兴地宣布 Elastic 8.13 的正式发布。 有什么新特性? 8.13 版本的三个最重要的组件包括 Elastic AI 助手中 Amazon Bedrock 支持的正式发布 (general availability - GA),新的向量…...
MFC 截取对话框生成图片、截取整个屏幕(可取黑白反色或者整体图片取反色)
HWND hwnd ::GetDesktopWindow();//截整个屏幕,用从这往下4句HDC hdc ::GetDC(hwnd);CDC dc;dc.Attach(hdc);CRect rc,rcw;GetWindowRect(&rcw);GetClientRect(&rc);//只截对话框,用这句//rc.SetRect(0, 0, GetSystemMetrics(SM_CXSCREEN), Ge…...
【LeetCode: 331. 验证二叉树的前序序列化 + DFS】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...
【Consul】Linux安装Consul保姆级教程
【Consul】Linux安装Consul保姆级教程 大家好 我是寸铁👊 总结了一篇【Consul】Linux安装Consul保姆级教程✨ 喜欢的小伙伴可以点点关注 💝 前言 今天要把编写的go程序放到linux上进行测试Consul服务注册与发现,那怎么样才能实现这一过程&am…...
pytorch常用的模块函数汇总(1)
目录 torch:核心库,包含张量操作、数学函数等基本功能 torch.nn:神经网络模块,包括各种层、损失函数和优化器等 torch.optim:优化算法模块,提供了各种优化器,如随机梯度下降 (SGD)、Adam、RMS…...
素数的计数律:Π函数、歪斜数
相当多的数字! 一、说明 自从人类开始掌握最起码的算术概念以来,有一类数字一直处于最前沿——素数。素数定义简单,但难以捕捉,众所周知,素数是数学中一些最困难问题的罪魁祸首,让几代最优秀的数学家感到…...
图像识别在农业领域的应用
图像识别技术在农业领域的应用正在逐渐成熟,它通过分析处理拍摄的植物或农田的图像,为农业生产提供决策支持。以下是图像识别在农业中的一些关键应用: 病虫害检测:图像识别技术能够识别作物上的病斑、虫害或异常状况。通过比较高…...
【JavaSE】java刷题--数组练习
前言 本篇讲解了一些数组相关题目(主要以代码的形式呈现),主要目的在于巩固数组相关知识。 上一篇 数组 讲解了一维数组和二维数组的基础知识~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎…...
预处理、编译、汇编、链接过程
预处理、编译、汇编、链接过程 预处理 引入头文件 #include 展开宏定义 #define 处理条件编译指令 #ifdef 删除注释 添加行号 在Linux下可以使用gcc -E命令把hello.c文件预处理成hello.i文件。windows这些操作都集成在编译器visual studio这些里面了。 编译 进行语法分…...
3、Cocos Creator 节点和组件
目录 1、 节点和组件 2、 节点层级和显示顺序 3、坐标系和节点变换属性 坐标系 锚点 旋转 缩放 尺寸 4、 常用技巧 5、参考 1、 节点和组件 Cocos Creator 的工作流程是以组件式开发为核心的,组件式架构也称作 组件 — 实体系统(或 Entity-C…...
【js刷题:数据结构数组篇之长度最小的子数组】
长度最小的子数组 一、题目二、方法1.暴力解法2.滑动窗口是什么滑动窗口的起始位置滑动窗口的结束位置代码展示 3.力扣刷题水果成篮题目思路代码 一、题目 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组&…...
大话设计模式之装饰模式
装饰模式(Decorator Pattern)是一种结构型设计模式,它允许向现有对象动态地添加新功能,同时又不改变其结构。装饰模式通过将对象放入包装器中来实现,在包装器中可以动态地添加功能。 在装饰模式中,通常会有…...
国赛大纲解读
1. 第一部分,是针对5G基础知识的掌握,第二部分是人工智能基本算法的掌握,就是人工智能的应用,用5G+人工智能(AI算法)进行网络优化的问题,要有网络优化的基础知识,比如说:某个区域的覆盖问题,覆盖特别差,但有数据,覆盖电频,srp值这些数据给你,根据数据来判断是…...
设计模式(5):原型模式
一.原型模式 通过 n e w 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。 \color{red}{通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。} 通过new产生一个对象需要非常繁琐的数据准备或访问权限…...
【React】vite + react 项目,进行配置 eslint
安装与配置 eslint 1 安装 eslint babel/eslint-parser2 初始化配置 eslint3 安装 vite-plugin-eslint4 配置 vite.config.js 文件5 修改 eslint 默认配置 1 安装 eslint babel/eslint-parser npm i -D eslint babel/eslint-parser2 初始化配置 eslint npx eslint --init相关…...
做网站 分工/全网推广平台推荐
1.基于贫血模型的传统开发模式 // BO,不包含业务逻辑 // 虚拟钱包 public class VirtualWalletBo {// 省略 getter/setter/constructor 方法 private Long id; private Long createTime; private BigDecimal balance; }// Service public class VirtualWalletSer…...
深圳福田区房价多少钱一平米/北京seo业务员
前言 SQLite数据库由于其简单、灵活、轻量、开源,已经被越来越多的被应用到中小型应用中。甚至有人说,SQLite完全可以用来取代c语言中的文件读写操作。因此我最近编写有关遥感数据处理的程序的时候,也将SQLite引入进来,以提高数据…...
阿里云域名注册电话/seo发帖网站
redo log大量生成的诊断处理流程本文是原创文章,转载请注明出处: http://blog.csdn.net/msdnchina/article/details/41249705 1.获得归档日志暴增时段的一个归档日志:可以查询v$archived_log视图,结合completion_time列进行定位…...
如何做正版小说网站/武汉seo推广优化
0 引言 《信息安全技术 信息系统安全等级保护基本要求》(GB/T 22239-2008)在我国推行信息安全等级保护制度的过程中起到了非常重要的作用, 被广泛用于各行业或领域, 指导用户开展信息系统安全等级保护的建设整改、等级测评等工作[1]。随着信息技术的发展…...
北京三屏网站制作/百度资讯
【PConline深圳站行情】条码打印机的应用在我们生活中已经屡见不鲜,超市中的产品标签打印既是这类产品制造出来的,大部分条码打印机只能针对不同行业需求进行打印,而且其价格不菲。如果出现一款能应用于多种行业且经济实惠的产品,…...
wordpress 美术馆/大型网站建设平台
模板介绍 精美PPT模板设计,简约创意个人简历求职竞聘PPT模板。一套岗位晋升幻灯片模板,内含橙色多种配色,精美风格设计,动态播放效果,精美实用。 一份设计精美的PPT模板,可以让你在汇报演讲时脱颖而出。 …...