stm32单片机个人学习笔记3(GPIO输出)

news/2024/9/18 8:42:22/ 标签: 单片机, stm32, 学习

前言

本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。

STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili

一、GPIO简介

二、GPIO基本结构

 三、GPIO位结构

施密特触发器的原理 

红线是输入电平,蓝线是整流后的电平,绿线是上限和下限

当波形越过上限或下限时,电平才会发生改变,假如只在下限周围上下浮动是电平是不会发生变化的 

位设置/清除寄存器的使用原理 :如果要在某位上置1,而其它位保持不变,就在位设置寄存器中,给这对应位置1,其它位置0,这样这个位就会被置为1,其它位不变,省去了C语言&=和|=复杂繁琐的操作;置0则在位清除寄存器置1即可,其它置0的保持不变。

推挽:两个MOS管均起作用,输出给1时,P-MOS导通,N-MOS截止,输出高电平;输出给0时,P-MOS截止,N-MOS导通,输出低电平,此时高低电平均有驱动能力。

开漏:P-MOS管不起作用,只有N-MOS管有用, 输出给1时,N-MOS截止,输出高电平;输出给0时,N-MOS导通,输出低电平,此时高电平没有驱动能力,只有低电平有驱动能力,主要应用于总线挂载多个设备是防止多个设备的互相干扰或者可以在IO口配置一个上拉电阻,输出0时,N-MOS导通,输出低电平,而输出1时,N-MOS截止,IO口的上拉电阻可以将IO口拉至5V来驱动电路。

关闭:当引脚配置为输入模式时,两个MOS均关闭,不起输出作用。

四、GPIO模式

 只输入,输出开关是断开的,而输出的时候,输入也是可以进来的,除了模拟输入会关闭数字输入的功能,其它七个模式输入都是有效的。

五、硬件电路

上面两个图是低电平导通,高电平截止

下面两个图是高电平导通,低电平截止 

六、实例一(LED闪烁)

1. 接线图

2. 代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"int main(void)
{//启动时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);		//初始化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流水灯)

1.接线图

2.代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);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 0001Delay_ms(50);GPIO_Write(GPIOA, ~0x0002);		//0000 0000 0000 0010Delay_ms(50);GPIO_Write(GPIOA, ~0x0004);		//0000 0000 0000 0100Delay_ms(50);GPIO_Write(GPIOA, ~0x0008);		//0000 0000 0000 1000Delay_ms(50);GPIO_Write(GPIOA, ~0x0010);		//0000 0000 0001 0000Delay_ms(50);GPIO_Write(GPIOA, ~0x0020);		//0000 0000 0010 0000Delay_ms(50);GPIO_Write(GPIOA, ~0x0040);		//0000 0000 0100 0000Delay_ms(50);GPIO_Write(GPIOA, ~0x0080);		//0000 0000 1000 0000Delay_ms(50);}
}

八、实例三(蜂鸣器)

1.接线图

2.代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);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(100);GPIO_WriteBit(GPIOB, GPIO_Pin_12, Bit_SET);Delay_ms(100);GPIO_WriteBit(GPIOB, GPIO_Pin_12, Bit_RESET);Delay_ms(100);GPIO_WriteBit(GPIOB, GPIO_Pin_12, Bit_SET);Delay_ms(700);}
}

 其为有源蜂鸣器,给低电平就会响


http://www.ppmy.cn/news/1525898.html

相关文章

a√斗地主之顺子

题目描述 在斗地主扑克牌游戏中,扑克牌由小到大的顺序为:3,4,5.6,7.8,9,10,J,Q,K,A,2,玩家可以出的扑克牌阵型有:单张、对子、顺子、飞机、炸弹等。 其中顺子的出牌规则为:由至少5张由小到大连续递增的扑克牌组成,且不能包含2。 例如:(3.4.…

【目标检测数据集】车辆分类数据集1880张7类VOC+YOLO(含摩托车、救护车、消防车、警车、警用摩托车、轿车、大车)

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1883 标注数量(xml文件个数):1883 标注数量(txt文件个数):1883 标注…

智能知识库企业微信助手,更智能、体验更好!

本文由 ChatMoney团队出品 为了增强企业内部知识的传递和共享效率,最近花了两周时间测试Chatmoney知识库 企微客服助手模式,测试效果让我很惊喜! 对话引用知识库内容,Chatmoney也会从逻辑上补全输出结果,智能知识库企微客服助手方…

VMware Fusion虚拟机Mac版 安装Ubuntu操作系统教程

Mac分享吧 文章目录 下载镜像地址:[www.macfxb.cn](http://www.macfxb.cn)一、Ubuntu安装完成,软件打开效果二、Mac中安装Ubuntu虚拟机1️⃣:下载镜像2️⃣:创建虚拟机3️⃣:虚拟机设置4️⃣:虚拟机安装5️…

cesium+vue3实体entity学习

官方文档链接:Cesium中文api文档 | Index - Cesium Documentation 官方示例链接:Cesium Sandcastle vue for cesium:A Vue 3 based component library of CesiumJS for developers | Vue for Cesium (zouyaoji.top) package.js: {"name": "demo&q…

闲云野记:24915

一、前言 本次回顾3个知识点:进程地址空间、JavaScript项目的影响优化、Vue 3 的应用路由。 二、进程地址空间 进程内核数据结构(task_struct)代码(只读的)和数据 ;进程具有独立性:多进程之间…

Android 蓝牙三方和动态权限三方

记录一下最近用到的简单的框架 蓝牙 FastBle:Android BLE通信库的介绍与高级用法 - 简书 https://github.com/Jasonchenlijian/FastBle 动态权限: GitHub - googlesamples/easypermissions: Simplify Android M system permissions 位置权限举例,arrayOf中多个…

【题解】【枚举】——First Step (ファーストステップ)

【题解】【枚举】——First Step ファーストステップ First Step (ファーストステップ)题目背景题目描述输入格式输出格式输入输出样例输入 #1输出 #1 提示 1.思路解析2.AC代码 First Step (ファーストステップ) 原题在洛谷上 题目背景 我们 Aqours,要第一次举办…

一分钟了解小程序的等保测评

小程序作为移动互联网应用的一种形式,其安全性和合规性受到了国家法律法规的严格要求。根据《中华人民共和国网络安全法》和《信息安全技术 个人信息安全规范》等相关法律法规,小程序在开发和运营过程中需要进行等级保护测评(等保测评&#x…

Pyspark下操作dataframe方法(2)

文章目录 Pyspark dataframecount 统计数量createGlobalTempView 创建全局视图表createOrReplaceGlobalTempView 创建全局视图表createTempView 创建临时视图createOrReplaceTempView 创建临时视图crossJoin 返回笛卡尔积cube 维度统计describe 统计列的基本信息distinct 去重d…

使用 Vue.js 将数据对象的值放入另一个数据对象中

1.直接赋值 最简单的方法是直接赋值。这种方法适用于将一个对象的值直接复制到另一个对象的属性中。 示例代码 <template><div><p>原始数据对象: {{ originalData }}</p><p>目标数据对象: {{ targetData }}</p><button click"c…

Mac 上终端使用 MySql 记录

文章目录 下载安装终端进入 MySql常用操作查看数据库选择一个数据库查看当前选择的数据库Navcat 打开提示报错参考文章 下载安装 先下载社区版的 MySql 安装的过程需要设置 root 的密码&#xff0c;这个是要进入数据库所设定的&#xff0c;所以要记住 终端进入 MySql 首先输…

【LeetCode 算法笔记】739. 每日温度

目录 问题描述暴力解法栈 问题描述 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0…

使用Rustup快速无缝升级Rust

rust update 升级 Rustup 是 Rust 官方的跨平台 Rust 安装工具。我们可以使用rustup升级rust版本 rustup updaterustup is not installed at ‘E:\cargo’ 意思是说’E:\argo’未安装rustup 将原来C:\Users\用户名\.cargo\bin下的文件复制到新的E:\cargo\bin $ rustup upda…

MyCat管理及监控

目录 MyCat原理 MyCat管理 MyCat-web 安装Zookeeper 安装Mycat-web MyCat原理 在MyCat中&#xff0c;当执行一条SQL语句时&#xff0c;MyCat需要进行SQL解析、分片分析、路由分析、读写分离分析 等操作&#xff0c;最终经过一系列的分析决定将当前的SQL语句到底路由到那几…

【Android Studio】2024.1.1最新版本AS调试老项目(老版AS项目文件、旧gradle)导入其他人的项目

文章目录 实验环境开始修改项目文件1. 删除.gradle及.idea两个文件夹2.修改SDK路径&#xff08;本地SDK存放路径&#xff09;3.修改gradle版本4.修改gradle插件版本&#xff08;AGP&#xff09;5.修改JDK版本 实验环境 Android Studio 版本 项目版本 开始修改项目文件 1. 删…

后端面试经典问题汇总

后端面试经典问题汇总 后端开发在现代互联网应用中扮演着关键角色&#xff0c;涉及的数据处理、业务逻辑和系统性能等方面在面试中常常会被深入考察。本文将总结一些后端面试中常见的经典问题&#xff0c;并给出简单的解答思路。 1. HTTP 协议 问题&#xff1a;请解释 HTTP …

电脑与电脑之间怎么快速传输文件?

若两台电脑在同一局域网&#xff0c;可以使用Windows远程桌面传输文件&#xff0c;或者使用远程看看这款免费的远程桌面软件&#xff0c;它支持在不同的网络之间传输文件&#xff0c;而且速度快、安全性高。 步骤1. 在两台电脑上下载、安装并运行远程看看。 步骤2. 注册一个远…

Java面试篇基础部分-Java泛型详解

导语   Java中泛型的本质是参数化类型,泛型提供了编译时类型的安全检测机制。泛型机制允许程序在编译的时候检测非法的类型,例如要实现一个对于字符串、整型、浮点型、对象类型等比较其大小的方法,就可以使用泛型,在使用的时候在明确所要比较的数据类型就可以了。 当然如…

React 前端应用结合 Nginx 部署指南及常见错误排查

在现代 Web 开发中&#xff0c;React 已成为构建用户界面的流行选择&#xff0c;而 Nginx 则是一个高性能的 Web 服务器&#xff0c;广泛用于静态文件的托管和负载均衡。在本篇博客中&#xff0c;我们将详细介绍如何将一个 React 应用部署到 Nginx 上&#xff0c;并探讨在部署过…