嵌入式实验---实验一 通用GPIO实验

news2024/11/16 11:56:39

一、实验目的

1、掌握STM32F103 GPIO程序设计流程;

2、熟悉STM32固件库的基本使用。

二、实验原理

1、通过按键实现:按键按下,LED点亮;按键释放,LED熄灭。

三、实验设备和器材

电脑、Keil uVision5软件、Proteus 8 Professional软件

四、实验内容和步骤

4.1 代码开发

按照书本中实验流程在Keil中完成GPIO实验的代码开发;

4.2 原理图设计

在Proteus中完成原理图的设计,如图1所示。

图1 GPIO实验原理图

五、实验记录和实验结果

5.1 实验效果记录(附照片即可)

5.2 实验效果说明

单击Proteus左下方的仿真运行图标后,工程仿真运行效果如上图所示,当按键BUTTON1弹起释放时,LED呈现黑色表示熄灭状态。当按键BUTTON1被按下时,LED被点亮变成黄色。

六、实验预习要求

  1. 实验前认真阅读本实验指导;
  2. 熟悉书本中相关操作及相关器件。
  3. 完成5.1和5.2内容。

七、思考题

1. GPIO常用的功能有哪些

  1. 数字输入:用于接收外部数字信号,例如传感器的数据、按钮的状态等。

  1. 数字输出:用于向外部设备发送数字信号,例如控制LED灯、驱动电机等。

  1. 模拟输入:有些GPIO引脚还具有模拟输入功能,可以接收模拟信号,例如模拟传感器的输出。

  1. 模拟输出:有些GPIO引脚还具有模拟输出功能,可以输出模拟信号,例如控制模拟电路中的某些参数。

  1. 中断控制:可以配置GPIO引脚触发中断,以便在外部事件发生时及时通知处理器。

  1. PWM输出:某些GPIO引脚支持脉冲宽度调制(PWM)输出,用于控制电机速度、调节背光亮度等应用。

  1. 串行通信:部分GPIO引脚还可以配置为串行通信接口,例如SPI、I2C、UART等。

2、使用GPIO引脚的配置流程

  1. 选择合适的硬件平台和开发环境:硬件平台可以是树莓派、Arduino、ESP8266/ESP32等。开发环境可能涉及到Arduino IDE、PlatformIO、树莓派的Raspbian系统等。

  1. 了解硬件的GPIO引脚分布:确定要使用的具体GPIO引脚编号。不同的平台和开发板可能有不同的引脚编号和功能分配,需要查阅相应的文档。

  1. 初始化GPIO引脚:在大多数情况下,需要初始化引脚,以确定它们是输入还是输出,以及它们的初始状态(高电平或低电平)。

  1. 配置引脚的输入输出模式:如果要将引脚配置为输入模式,通常需要设置输入电阻(上拉或下拉)。如果要将引脚配置为输出模式,通常需要设置输出电平(高或低)。

  1. 编写和加载代码:使用选定的编程语言(例如C/C++、Python等)编写控制GPIO引脚的程序。编译或解释代码,并将其加载到硬件平台中。

  1. 测试和调试:将程序加载到硬件平台后,通过连接到引脚的传感器、LED等外部设备来测试GPIO引脚的功能。如果有必要,进行调试以确保引脚按预期工作。

  1. 维护和更新:随着项目的发展,可能需要修改GPIO引脚的配置或功能。根据需要更新代码,并进行相关测试。

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

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

相关文章

TVS的原理及选型

目录 案例描述 TVS管的功能与作用: TVS选型注意事项: 高速TVS管选型 最近项目中遇到TVS管选型错误的问题。在此对TVS的功能及选型做一个分享。 案例描述 项目中保护指标应为4-14V,而选型的TVS管位SMJ40CA,其保护电压为40V未…

深信服科技:2023网络安全深度洞察及2024年趋势研判报告

2023 年,生成式人工智能和各种大模型迅速应用在网络攻击与对抗中,带来了新型攻防场景和安全威胁。漏洞利用链组合攻击实现攻击效果加成,在国家级对抗中频繁使用。勒索团伙广泛利用多个信创系统漏洞,对企业数据安全与财产安全造成了…

【Android】三种常见的布局LinearLayout、GridLayout、RelativeLayout

【Android】三种常见的布局LinearLayout、GridLayout、RelativeLayout 在 Android 开发中,布局(Layout)是构建用户界面的基础。通过合理的布局管理,可以确保应用在不同设备和屏幕尺寸上都能有良好的用户体验。本文将简单介绍 And…

Premiere Pro 关键帧的运用(热气球飞行)

制作“热气球飞行”效果,步骤如下: 1.新建项目>新建序列,项目名称为“热气球飞行”,序列设置如下图所示。 2.将“背景”和“飞船”素材导入项目面板中,并将“背景”素材拖到时间线的视频轨道v1上,将“飞…

如何下载Visual Studio2022编译器。详细教程

朝三暮四就该死! --莫迪大仙 引言:今天下个Visual Studio给大家也分享分享,同时怕自己忘记,也记录记录。(windows版本演示) 一、下载网址 网址:Visual Studio2022下载 - Windows、Mac、Linux…

Leetcode Hot100之双指针

1. 移动零 题目描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。解题思路 双指针遍历一遍即可解决: 我们定义了两个指针 i 和 j&#xf…

scratch编程03-反弹球

这篇文章和上一篇文章《scratch3编程02-使用克隆来编写小游戏》类似(已经完全掌握了克隆的可以忽略这篇文章),两篇文章都使用到了克隆来编写一个小游戏,这篇文章与上篇文章不同的是,本体在进行克隆操作时,不…

图卷积网络(Graph Convolutional Network, GCN)

图卷积网络(Graph Convolutional Network, GCN)是一种用于处理图结构数据的深度学习模型。GCN编码器的核心思想是通过邻接节点的信息聚合来更新节点表示。 图的表示 一个图 G通常表示为 G(V,E),其中: V 是节点集合,…

【单片机】三极管的电路符号及图片识别

一:三极管的电路符号 二:三极管的分类 a;按频率分:高频管和低频管 b;按功率分:小功率管,中功率管和的功率管 c;按机构分:PNP管和NPN管 d;按材质分:硅管和锗管 e;按功能分:开关管和放…

Python基础-引用参数、斐波那契数列、无极分类

1.引用参数的问题 (1)列表(list) 引用参数,传地址的参数,即list1会因list2修改而改变。 list1 [1,2,3,4] list2 list1 print(list1) list2[2] 1 print(list2) print(list1)非引用参数,不传…

获得淘宝app商品详情原数据API接口|商品价格详情页面优惠券主图

item_get_app:通过商品id获取商品详情页数据 注册账号获取API测试地址 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中&#xf…

如何将本地代码上传到git上面

精简步骤: git init git add . git commit -m "first init" git remote add origin 远程仓库地址 git push -u origin master 目录 1、初始化本地仓库 2、添加所有文件到本地仓库 3、提交更改到本地仓库 4、添加github仓库作为远程仓库 5、推送更改…

简单介绍vim

文章目录 前言一、Vim的特点二、安装Vim三、设置Vim配置文件的位置:编辑配置文件:添加配置选项:保存并退出编辑器:快速配置验证设置: 总结 前言 Vim是一款强大的文本编辑器,被广泛用于各种编程和文本编辑任…

Gin 详解

Gin 介绍 gin框架是一个基于go语言的轻量级web框架,它具有高效性、灵活性、易扩展性路由 gin框架使用的是定制版的httprouter 其路由原理是大量使用公共前缀的树结构,注册路由的过程就是构造前缀树的过程。 具有公共前缀的节点也共享一个公共父节点。…

若依 ruoyi 显示隐藏搜索框 显示隐藏列

一、 显示隐藏搜索框 页面搜索关键字 showSearch,设置是否显示 隐藏: 显示: 二、自定义设置 显示隐藏列 1. 页面搜索关键字 right-toolbar,新增: :columns"columns" 2. js下 data(){return{}}中新增&am…

手把手教你创建并启动一个Vue3项目(Windows版)

一、Node安装 1、下载地址:Node.js — Run JavaScript Everywhere 2、安装Node,双击启动一直Next 3、验证安装Node是否成功,打开CMD命令窗口,输入node -v,显示版本就表示成功 4、验证安装npm是否成功,npm是…

DFS(一)

问题一(指数级选择) 从1~n这n个整数中任意选取多个,输出所有可能的选择方案。 首先想一下,在现实世界中,我们要如何解决这个问题。 应该是一个一个枚举,即每个数都可以有两个选择(选/不选)。共有种结果。 想一下,如…

UI设计速成课:理解模态窗口与非模态窗口的区别

我们日常所说的弹性框架是非常笼统的概念。我们习惯性地称之为对话框架、浮动层和提示条。弹性框架可以分为两种:模态弹性框架和非模态弹性框架。产品需要弹性框架来传递信息,用户需要弹性框架来接受反馈,但是没有经过推敲的弹出窗口设计很容易让用户感到…

mouseinc-smartUp Gestures被禁用后的替代品

前言 smartUp Gestures恶意软件,既然谷歌这么判断,可能大概率没错了,我们换一个mouseInc吧下载地址 https://www.123pan.com/s/fDzUVv-hCtlA 设置下会更好用 设置 通过AHK设置下一些快捷操作~ 对应的查找 https://source.chromium.org/chromium/chromium/src//main:chrome/a…

【CT】LeetCode手撕—20. 有效的括号

题目 原题连接&#xff1a;20. 有效的括号 1- 思路 模式识别 模式1&#xff1a;括号左右匹配 ——> 借助栈来实现 ——> Deque<Character> deque new LinkedList<>()模式2&#xff1a;顺序匹配 ——> 用 if 判断 具体思路 1.遇到左括号 直接入栈相应…