当前位置: 首页 > web >正文

GPIO点亮LED

  1. GPIO外设的概述
  • GPIO的概念

GPIO(General Purpose Input/Output)外设是微控制器MCU中最基本且最通用的接口,用于与外部设备进行交互。GPIO引脚的核心功能是作为通用的数字输入或输出,可以通过软件配置为多种工作模式,以满足不同的应用需求,GPIO引脚需要和外设连接在一起的,就可以和外设实现通信以及采集数据等功能。

  • GPIO的定义

指的是对芯片的某个I/O口进行高/低电平的输出,以及可以利用某个I/O的输入功能来获取外部输入的电平的状态。一般电平采用都是TTL电平信号,TTL电平信号规定:+5V等价于逻辑“1”,0V等价于逻辑“0”。

注意:电平其实有一个电压范围:一般>2.4V就可以表示高电平,<0.4V表示低电平

重点作业:要求大家了解TTL电平信号、RS-232电平信号、RS-485电平信号的区别和特点!(找工作会问)

  • 引脚的布局

电源引脚 :VCC、VDD、VSS、VDDA、VSSA、VREF+等属于电源引脚

晶振引脚 :PC14、PC15、PH0、PH1就属于晶振引脚,也可以作为其他的功能使用

复位引脚 :NRST属于复位引脚 指的是低电平复位

BOOT引脚 :BOOT0是专用引脚,BOOT1就属于功能引脚 (设置芯片的自举模式)

GPIO引脚 :芯片一共有144引脚,但是GPIO引脚有114个

下载引脚 :PA13、PA14、PB3、PB4等都属于下载引脚(JTAG、SWD)

  • 引脚的命名

芯片厂商设计芯片时,会对芯片的管脚进行命名,命名的标准都是差不多的,一般IO口的命名是由P(Pin)开头,分为很多组(端口),以字母A~H来命名,每个组(端口)有16个引脚,引脚的编号为0~15,所以如端口A引脚范围: PA0 ~ PA15 端口B引脚范围:PB0~PB15.....

和8bit单片机的I/O的命名规则类似,常用的8051单片机(AT 89C52、STC89C52.....),和以上的命名规则类似,只是端口的区别,8bit的管脚数量很少,只有40个管脚(2个供电引脚、1个复位引脚、2个晶振引脚、3个存储器选择引脚),剩下的32个管脚才作为I/O口。

只不过对于8bit单片机而言,所以把32个管脚分为4个端口,端口以数字0~3进行编号,每个端口下只有8个I/O口,也是以数字0~7进行编号 : P00 ~P07、P10~P17........

  • 引脚的功能

需要注意:芯片的引脚有很多的功能,一般默认的功能都是作为GPIO(输入输出),但是引脚也有其他的功能,被称为“第二功能”,只有在使用ADC通道和DAC需要把引脚设置模拟模式,其他情况下想要把引脚当做别的功能使用,需要把引脚设置复用模式。注意:如果想要了解引脚的功能,应该查阅芯片的数据手册!!!!

  1. GPIO外设的使用

想要学习硬件开发,一般都是从点亮LED开始,主要是以基础外设作为入门,掌握外设的控制流程。

  1. 查看原理图,找到控制发光二极管的芯片的IO口,LED0 -- PF9引脚,其他的引脚类似!!

  1. 分析原理图,理解硬件的控制原理(复杂外设还需要结合数据手册),输出低电平就亮

现实中分辨发光二极管(LED)的正负极 :

引脚长度

  • 正极(阳极):LED的较长引脚通常为正极。
  • 负极(阴极)较短引脚为负极。
    (注意:此方法适用于未剪脚的LED,若引脚已被剪短则需参考其他方法。)

2. 内部结构观察

  • 透过LED的透明外壳观察内部电极:
    • 正极:内部较小的金属片(通常为三角形或尖端形状)。
    • 负极:内部较大的金属片(通常为碗状或圆形)。

3. 封装标记

  • 平边标记:部分LED的圆形封装底部有平边(缺口),靠近平边的一侧为负极
  • 符号标记:部分贴片LED(如SMD型)表面会标有“+”或“-”符号。

4. 万用表检测

  • 使用万用表的二极管测试档
    • 红表笔接正极,黑表笔接负极时,LED会微弱发光;反接则不亮。

  1. 程序设计,根据ST公司提供的函数库(标准外设库+HAL库)的帮助手册学习开发流程

以上是ST公司提供的关于标准外设库的外设的配置和初始化的流程,是针对MCU中所有外设的,流程是通用的。

所以ST公司为了提高用户体验,会为用户编写很多关于MCU外设的代码案例,供用户参考!

练习:下载刚才的程序,观察运行效果,如果D1可以实现点亮,说明代码思路没问题,则要求大家实现点亮开发板4盏LED的程序。

http://www.xdnf.cn/news/7020.html

相关文章:

  • 使用UniApi调用百度地图API的需要注意的地方
  • 基于 jQuery 的轻量级在线画册、电子书、产品目录插件及使用
  • 粒子群算法(PSO算法)
  • RAGFlow Arbitrary Account Takeover Vulnerability
  • 广东省省考备考(第十三天5.17)—言语:中心理解题(听课后强化练习)
  • 3、ubantu系统 | 通过vscode远程安装并配置anaconda
  • C++中析构函数不设为virtual导致内存泄漏示例
  • 电子电路:电位器和可变电阻是同一个东西吗?
  • 2025年【道路运输企业安全生产管理人员】考试题库及道路运输企业安全生产管理人员考试内容
  • 获取淘宝店铺所有商品信息接口数据指南
  • JavaScript splice() 方法
  • 【C++】string的使用【上】
  • Linux面试题集合(6)
  • PIC16F18877 ADC 代码
  • Python绘制南丁格尔玫瑰图:从入门到实战
  • 专题四:综合练习(组合总和的暴搜dfs)
  • printf耗时高的原因
  • UE 材质基础 第一天
  • nginx集成防火墙ngx_waf的docker版
  • 重庆 ICPC 比赛游记
  • Vue 3.0中响应式依赖和更新
  • list重点接口及模拟实现
  • 从复杂系统(杂多集合的实例)到智慧系统(理想集合的建构)
  • docker迅雷自定义端口号、登录用户名密码
  • 【嵌入式项目-MCU代码2】
  • Bitmap、Roaring Bitmap、HyperLogLog对比介绍
  • BootCDN介绍(Bootstrap主导的前端开源项目免费CDN加速服务)
  • LLM笔记(二)LLM数据基础-分词算法(2)
  • Linux面试题集合(1)
  • 前端扫盲HTML