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

嵌入式单片机中外设的基本控制与实现

一、GPIO外设的概述

1.GPIO的概念

GPIO指的是通用的输入输出端口,可以由用户通过软件配置的方式来进行控制,GPIO引脚需要和外设连接在一起的,就可以和外设实现通信以及采集数据等功能。

2.GPIO的定义

指的是对芯片的某个引脚进行高低电平的输出,以及可以去检测某个引脚的电平状态。一般电平采用都是TTL电平信号,TTL电平信号规定:+5V等价于逻辑“1”,0V等价于逻辑“0”。

电平其实有一个电平范围:>2.4V就表示高电平,<0.4V就表示低电平。

高电平(2.4~5V)                                        低电平(0~0.7V)

3.引脚的说明

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

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

复位引脚   :NRST属于复位引脚

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

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

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

4.引脚的命名规则    

一般是由P开头,分为很多组,以字母A~H来命名,每个组有16个引脚,引脚的编号为0~15,所以如 PA0 ~ PA15  PB0~PB15........

5.引脚的功能

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

需要注意:引脚的功能必须通过查阅芯片的数据手册,才可以进行配置   如下图所示

注意:带FT标志的IO口,引脚内部有保护二极管,可以容忍5V电压(芯片的标准电压为3.3V)

二、GPIO外设的使用

GPIO外设的使用一般在实际开发过都是使用函数库开发,提高开发效率,以GPIO外设为例,讲解一下函数库开发的流程。以点亮LED为例    

l分析原理图,找到外设连接的GPIO引脚    LED0 --- PF9

一般硬件工程师在设计开发板的过程中,先设计原理图(实际上就是对硬件的抽象),一般外设都需要通过导线连接在芯片的引脚上(不简洁),都会利用网络标号实现导线的连接,网络编号其实就是一个电气连接点,一般是以字母+数字命名,如果多个连接点都是用同样的网络编号,就说明导线是连接在一起的。

l分析原理图,理解硬件的控制原理   GPIO输出高电平 灯灭 

对于一些简单的外设通过原理图就可以分析,但是一些复杂的传感器还需要结合对应的数据手册。      

l根据函数库的接口进行开发    参考ST公司提供的函数库帮助手册(相当于man手册)

    

思考:能不能根据ST公司提供的步骤把代码编写出来?  答案是可以的

ST公司也怕你不会写,所以ST公司的开发人员帮开发者编写每个外设的代码例程

通过移植    

作业:

01 编写代码,实现移植ST公司的例程到自己的开发板,点亮4盏LED(要求不去网上抄)

02 通过查阅资料,利用STM32CubeMx实现点亮4盏LED,并对比标准外设库看看区别

03 通过查阅原理图,实现开发板的蜂鸣器的控制

晨讲:

01 请简述Thumb指令集与THumb-2指令集的区别                       (奖励8.88元红包)    

02请简述关键字volatile的作用,并且至少说出3种应用场合        (奖励一杯奶茶)


http://www.kler.cn/a/447298.html

相关文章:

  • MySQL数据库下载及安装教程
  • RAG开发中,如何用Milvus 2.5 BM25算法实现混合搜索
  • 「Mac畅玩鸿蒙与硬件45」UI互动应用篇22 - 评分统计工具
  • 2023年下半年软考信息安全工程师案例分析及答案解析
  • C++ 智能指针(高频面试题)
  • 基于LabVIEW的USRP信道测量开发
  • 游戏开发技能系统常用概念
  • Kafka 迁移 AutoMQ 时 Flink 位点管理的挑战与解决方案
  • 基于Spring Boot的智慧农业专家远程指导系统
  • 如何使用 Python 连接 MySQL 数据库?
  • Websocket客户端始终连接不上Server排查之Openai Realtime api
  • 基于 STM32 的多路火灾报警系统设计
  • LeetCode hot100-91
  • 高性能MySQL-查询性能优化
  • 标准库与HAL库的区别
  • 常用的缓存技术都有哪些
  • CodeSurfer 介绍
  • 青少年编程与数学 02-004 Go语言Web编程 08课题、使用Gin框架
  • 雅思真题短语梳理(一)
  • 9596 回文数 存档40%
  • 使用Electron获取用户信息,监听程序打开,用户退出连接关闭程序【全代码,有图】
  • Redis应用缓存框架
  • Spring如何解决bean的循环依赖
  • centos stream 8下载安装遇到的坑
  • 方正畅享全媒体新闻采编系统 reportCenter.do SQL注入漏洞复现
  • 天天 AI-241220:今日热点-OpenAI整大活!ChatGPT新增电话功能,全民AGI要来了