IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 一.STM32嵌入式学习--GPIO口(1)--IO口的基础知识以及配置程序的方法 -> 正文阅读

[嵌入式]一.STM32嵌入式学习--GPIO口(1)--IO口的基础知识以及配置程序的方法

? ? ? ? 学习单片机,从学习GPIO口开始。

????????我们在日常的编写程序时离不开IO口的配置,而IO口的学习是在stm32中比较基础,对初学者比较友好,又比较全面的一个基础功能,所以我们都是从GPIO口的学习开始接触stm32。

? ? ? ? 首先我们要确定我们的学习方法,在stm32的学习中,我们是基于不同的芯片进行配置和使用,所以我们需要从三个方向来学习。

????????什么是GPIO口?

? ? ? ? 怎么去配置GPIO口?

????????GPIO口的具体应用在哪里?

1.什么是GPIO?

IO口:I:input 输入? ? ? ? ? O:output 输出

作用:是芯片与外界做信息交换的唯一通道。

数量:以STM32F407VGT6为例,该芯片有100引脚,其中包括5组IO口

5组:GPIOA,GPIOB到E ?每一组有0~15号(16个)?

GPIOA:0 1 2 3......15 ????????????16个 ???

GPIOB:0 1 2 3......15 ????????????16个

GPIOC:0 1 2 3......15 ????????????16个 ???

GPIOD:0 1 2 3......15 ????????????16个

GPIOE:0 1 2 3......15 ????????????16个 ???

??PA5表示:GPIOA组的5号IO口? ? ? ??

2.如何去配置IO 口

我们在学习嵌入式的过程中,需要通过数据手册来查看芯片框图,通过查看具体中文参考手册来查看具体IO口的功能和配置。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GPIO控制器(STM32F101xx为例)

?初学者在尝试看图时,发现没有头绪。此时我们应该将图分割成不同的部分来看。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?GPIO口输入部分框图

1.保护二极管:防止击穿;

2.肖特基触发器:将输入的连续信号转换为离散信号。

我们通过该图不难看出:我们的信息or电平从IO口输入经过三条不同的道路到芯片内核进行处理。

其中我根据写程序的经验将这“三条路”分为三个输入方式:

通用输入:直接检测IO口的电平状态(如果需要读取外界给IO口的电平状态,就要用通用输入)

复用输入:从IO进来的数据信号要经过片上外设(串口控制器),再到核心。IO就要用复用输入模式

模拟输入:外界的模拟量(电压)通过IO口进入到ADC控制器,ADC控制器转换成数字量(模数转换)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?GPIO口输出部分

我们通过输入部分总结出来的概念不难区分:

从内核直接读取或者写入的为通用输出部分,而从片上外设间接从内核读取或者写入的输出为复用输出。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? GPIO通用输出(两条路径都可)

从而我们总结出:

通用输出:核心直接控制IO输出高低电平,就用通用输出模式

复用输出:核心将数据信号发送到片上外设,片上外设再通过IO口传送出去.IO口复用输出模式

在其他的芯片中我们还可能看到模拟输出,通过DAC片上外设进行数模转换,再将模拟数据通过IO口传输出去。

我们还看到输出相对于输入有输出类型的选择,包括推挽输出和开漏输出。

推挽输出:IO口可以输出高电平,也可以输出低电平。

开漏输出:IO口只能输出低电平。

至此,我们总结了GPIO口信息交换的几种方式,还可以通过更形象的图像来显示:

我们把IO口信息交换的具体工作方式理清楚了,我们也懂了有多少种输入输出方式。

通过这些,我们应该懂得如何使用IO口,而且要根据需求来确定选择哪一种模式。

那我们来看看IO口对应的寄存器有哪些

学会查看寄存器要从以下几点做起:

1.寄存器的名字

2.寄存器的功能

3.寄存器有多少位,几位控制一个IO

4.具体如何配置

?1.寄存器的名字

在具体编写程序时应写成对应IO口指向该寄存器,譬如:

PA5:GPIOA->CRL

PE0:GPIOE->CRL

?2.寄存器的功能

如图所示,在寄存器的下方有该寄存器的具体功能在哪一位;

在该寄存器下方主要配置IO口的具体的输入/输出模式和输出的速度,

譬如我要配置PA0的通用输入:GPIOA->MODE &= ~(3<<0);(直接清零即可)

譬如我要配置PC6的复用输出:GPIOC->MODE &=~(3<<24);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?GPIOC->MODE |=(2<<24);

(上述代码使用了c语言的位运算的知识)

3.寄存器有多少位,几位控制一个IO

我们要清楚寄存器有几位,而且哪位配置哪些功能,其次,我们也要看清楚几位控制一个IO,如果是一位,我们可以直接对该位进行清零或者置一或者写值,如果是两位以上,我们需要先将其清零,再进行写值。

总结:回到我们最初的三个问题:

????????什么是GPIO口?

? ? ? ?是芯片与外界做信息交换的唯一通道。

? ? ? ? 怎么去配置GPIO口?

? ? ? ? 根据自己的需求来确定信息交换的模式,再通过框图确定需要使用的寄存器进行配置

????????GPIO口的具体应用在哪里?

????????通用输入:直接检测IO口的电平状态(如果需要读取外界给IO口的电平状态,就要用通用输入模式。

????????复用输入:从IO进来的数据信号要经过片上外设(串口控制器),再到核心。IO就要用复用输入模式。

????????模拟输入:外界的模拟量(电压)通过IO口进入到ADC控制器,ADC控制器转换成数字量(模数转换)

????????通用输出:核心直接控制IO输出高低电平,就用通用输出模式

????????复用输出:核心将数据信号发送到片上外设,片上外设再通过IO口传送出去.IO口复用输出模式

????????模拟输出:通过DAC片上外设进行数模转换,再将模拟数据通过IO口传输出去。

最后进行知识补充:位运算

如果需要某个变量的某一位变为0,其他位不改变

a = a & ~(1 << x); ????????????// a &= ~(1<<x) ?

公式:

如果需要某个变量的某一位变为1,其他位不改变

a = a | (1 << x); ?????????????//a |= (1<<x) ?

公式:

如果对某两位写入某个值,其他位不变,

一定要先清零两位

再或上具体值

a = a & ~(3<<x); //清零 ???//a &= ~(3<<x) ; ???

a = a | (n << x) ??????????// a |= (n<<x);

01 ????n:1

10 ????n:2

11 ????n:3

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:18:15  更:2022-09-25 23:19:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:40:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码