搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
微机原理与接口技术:嵌入式系统描述
0.00     定价 ¥ 69.00
浙江图书馆
  • ISBN:
    9787302528593
  • 作      者:
    姚琳,万亚东,汪红兵
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2019-08-01
收藏
畅销推荐
编辑推荐

1)选用主流ARM Cortex-M3体系结构,便于学生校内实践,契合企业需求;2)兼顾嵌入式处理器及外围控制器的原理和操作,让读者理解CortexM3处理器的特性,各种控制器的工作原理及使用方法,理解嵌入式处理器架构及涉及到的方法;3)针对目前M2M、物联网、无线传输等低功耗嵌入式开发的应用,选用了STM32L系列超低功耗处理器;4)ST原厂Dicovery系列开发板设计实验,资源丰富;5)精选一些传感器采集、无线传输、触摸输入、显示、休眠唤醒的等综合实例,便于学生在本书开发板的基础上通过模块设计快速开发物联网相关的创新项目;6)结合CMSIS库进行实例开发,对CMSIS的关键函数进行了梳理,对涉及系统运行的汇编部分进行了详细分析。


展开
内容介绍

  《微机原理与接口技术:嵌入式系统描述》内容全面、重点明确、表述简洁,注重将微机接口控制器的基本原理和实际操作相结合,突出软硬件设计中的计算思维模式。全书共12章,内容包括微机原理及基本概念、Cortex-M3处理器体系结构、ARM汇编、嵌入式系统开发基础、GPIO控制器、NVIC及EXTI中断控制器、定时器、USART总线、IIC总线、SPI总线、ADC以及低功耗控制,并配套基于STM32L15x系列的实验教程。
  《微机原理与接口技术:嵌入式系统描述》适合作为非计算机专业微机原理及接口技术的教材,也可作为计算机类嵌入式系统课程的参考教材。

展开
精彩书摘

第5章通用输入输出

【导读】通用输入输出(General Purpose Input/Output, GPIO)是嵌入式微控制器最常用、最基础、灵活性最强的控制器,可以实现简单控制,也可以组合实现复杂时序,是嵌入式程序设计必须掌握的控制器。本章首先介绍GPIO的引脚内部构造,不同的输入输出模式的区别,然后对GPIO的寄存器定义进行了详细介绍,并结合ST的外围控制器库函数对典型API进行了介绍,最后以LED和按键为例阐述了利用库函数进行I/O控制的方法。

5.1GPIO原理〖1〗5.1.1GPIO功能GPIO是嵌入式开发里面最基本也最常用的硬件端口,STM32L1xx系列处理器可提供多达128个I/O,实现输入输出功能,并将其分为A~H 8组,每组称为一个端口(PORT),每个端口有16个I/O引脚(PIN),每个I/O的速度可单独配置,最快可在2个时钟周期进行I/O翻转,支持I/O锁定功能、I/O复选功能,每个引脚最多可有16个复选功能,最大程度的提供了灵活的I/O配置和使用。

I/O的使用由GPIO控制器管理,每个GPIO端口有四个32位配置寄存器(GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR 和 GPIOx_PUPDR),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个32位锁定寄存器(GPIOx_LCKR)和两个32位的复选功能选择寄存器(GPIOx_AFRH 和 GPIOx_AFRL)。

一个I/O端口引脚的结构如图51所示,主要由输入驱动器、输出驱动器、输入数据寄存器、输出数据寄存器和位设置/清除寄存器进行输入输出控制。

图51I/O引脚内部电路结构

GPIO端口的每个位可以由软件分别配置成多种模式: 输入、输出、复用和模拟四种模式,每种模式下,可以通过寄存器对输入输出方式进行配置,由输入驱动器和输出驱动器的开关电路控制,每个I/O端口位可以自由编程,以32位字访问I/O端口寄存器。

在每个AHB总线时钟周期,GPIO控制器采样I/O引脚的输入电平,并将输入数据存储到输入寄存器中。所有GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时,它们可以被激活也可以被断开;端口配置为输出模式时,GPIO输出寄存器中的值输出到对应的I/O引脚上。

为便于程序对I/O口的输出数据寄存器控制,GPIO控制器提供了单个或多个位的原子读写操作,通过对“置位/复位寄存器”(GPIOx_BSRR)中想要更改的位写1实现同时操作,无需软件进行开关中断的保护操作。

为保护I/O引脚配置的安全性,GPIO控制器提供了锁定机制允许冻结I/O配置。当在一个端口位上执行了锁定(LOCK)程序,在下一次复位之前,将不能再更改端口位的配置。

第5章通用输入输出微机原理与接口技术——嵌入式系统描述所有的I/O端口及其引脚都具有复用功能,复用功能是将GPIO端口映射到某个外围控制器上,作为外围控制器的专用I/O通道,这样,可以对不使用的外围控制器的引脚当作普通I/O使用,当需要时配置成为专用I/O使用。当外围控制器功能不能满足时,我们通常使用I/O模拟专用控制器的时序用软件实现专用控制器的功能。每个I/O端口最多可以有16个复选功能AF0AF15,但只能使用一个复用功能。CPU上电复位后,所有的I/O都默认使用AF0功能。除了特殊I/O引脚外(比如JTAG调试口(PA15、PA14、PA13、PB4、PB3)对应的I/O引脚AF0功能为JTAG调试端口功能,因此每个引脚被置为输入上拉或下拉模式),I/O引脚的AF0功能都是GPIO,复位后的默认配置为浮空输入。为了使不同器件封装的外设I/O功能的数量达到最优,STM32L1xx系列处理器支持复用功能重映射,可以把一些复用功能的引脚重新映射到其他一些引脚上。

所有的GPIO端口都有外部中断能力,将端口配置为输入模式后,可以把引脚作为中断源的输入,例如按键、事件触发等,具体在中断控制器部分进行阐述。

5.1.2I/O模式配置1. 输入配置当I/O端口配置为输入时: 图51中的输出缓冲器被禁止,施密特触发输入被激活。根据输入引脚配置(上拉、下拉或浮空)的不同,弱上拉或下拉电阻被连接。出现在I/O引脚上的数据被采样到输入数据寄存器,对输入数据寄存器的读访问可得到I/O引脚的状态。

浮空输入: 浮空输入一般多用于外部按键输入,浮空输入状态下,I/O的电平状态是不确定的,完全由外部输入决定。

上拉输入和下拉输入分别对应图51中的上拉电阻开关和下拉电阻开关,将输入信号的默认值保持在高电平或者低电平。

2. 输出配置

当I/O端口被配置为输出时,图51中的输出缓冲器被激活,施密特触发输入被激活,弱上拉或下拉电阻被禁止。输出到I/O引脚上的数据在每个时钟周期同时被采样到输入数据寄存器,在开漏模式时,对输入数据寄存器的读访问可得到输出I/O状态。在推挽式模式时,对输出数据寄存器的读访问得到当前的输出状态。

输出类型可配置为两种方式: 开漏模式和推挽模式。开漏模式下,图51中的输出寄存器上的0激活NMOS,而输出寄存器上的1将端口置于高阻状态(PMOS从不被激活)。推挽模式下,图51中的输出寄存器上的0激活NMOS,而输出寄存器上的1将激活PMOS。 

推挽输出: 可以输出高、低电平,连接数字器件;推挽一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止,形成推拉结构,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度,高低电平由电源决定。

开漏输出: 输出端相当于三极管的集电极,适合于做电流型的驱动,其吸收电流的能力相对强(20mA以内)。开漏电路利用外部电路的驱动能力,可以减少芯片内部的驱动电流,一般用来连接不同电平的器件。由于开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,上升沿的时延由上拉电阻的阻值决定,电阻小时延时就小,功耗大;反之延时大功耗小。在多个I/O口形成“线与”功能时,需要设置为开漏输出。 

3. 复用功能配置

当I/O端口被配置为复用功能时,图51中,在开漏或推挽输出配置中,输出缓冲器被打开,输出缓冲器由内置外设的信号驱动输出(复用功能输出); 施密特触发输入被激活,弱上拉和下拉电阻由GPIOx_PUPDR寄存器确定,每个时钟周期采样I/O引脚上的数据,读输入数据寄存器时可得到I/O口状态。复用功能下I/O口的输入输出配置以及开漏、推挽由复用功能引脚规定。

对于复用的输入功能,端口必须配置成输入模式(浮空、上拉或下拉)且输入引脚必须由外部驱动。对于复用输出功能,端口必须配置成复用功能输出模式(推挽或开漏)。对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)。这时,输入驱动器被配置成浮空输入模式,引脚和输出寄存器断开,并和片上外设的输出信号连接。 如果软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。

4. 模拟配置

当I/O端口被配置为模拟时,图51中的输出缓冲器被禁止,施密特触发输入被禁止,I/O信号直接连接到处理器的模拟外围控制器电路,不经过GPIO控制器,施密特触发输出值被强置为0,弱上拉和下拉电阻被禁止,此时读取输入数据寄存器时数值为0。在低功耗休眠时,可将I/O设置为模拟输入状态,以降低功耗。

对于I/O引脚在不同应用情况下的配置如表51所示。表51I/O配置的典型配置应 用 场 景配置普通GPIO输入配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,不使能该引脚对应的所有复用功能模块普通GPIO输出根据需要配置该引脚为推挽输出或开漏输出,不使能该引脚对应的所有复用功能模块普通模拟输入配置该引脚为模拟输入模式,不使能该引脚对应的所有复用功能模块内置外设的输入根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,使能该引脚对应的复用功能模块内置外设的输出根据需要配置该引脚为复用推挽输出或复用开漏输出,使能该引脚对应的复用功能模块。5.2GPIO寄存器

GPIO控制器的寄存器如表52所示。续表表52GPIO控制器寄存器寄存器名称偏移量功能复位值端口模式寄存器(GPIOx_MODER)0x00配置端口的输入输出方向端口A: 0xA800 000

端口B: 0x0000 0280

其他: 0x0000 0000端口输出类型寄存器(GPIOx_OTYPER)0x04配置端口输出类型0x0000 0000端口输出速度寄存器(GPIOx_OSPEEDR)0x08配置端口输出输速率端口B: 0x0000 00C0 

其他: Ox0000 0000端口上拉下拉寄存器(GPIOx_PUPDR)0x0C配置端口上拉和下拉电阻端口A: 0x6400 0000

端口B: 0x0000 0100 

其他: 0x0000 0000GPIO 端口输入数据寄存器(GPIOx_IDR)0x10端口输入数据0x0000 XXXX (X表示不定态) GPIO端口输出寄存器(GPIOx_ODR) 0x14端口输出数据0x0000 0000端口位设置/清除寄存器(GPIOx_BSRR) 0x18端口输出寄存器设置为1或清为00x0000 0000GPIO端口配置锁定寄存器(GPIOx_LCKR) 0x1C锁定引脚的配置信息0x0000 0000复用功能低寄存器(GPIOx_AFRL) 0x20复用功能选择0~70x0000 0000复用功能高寄存器(GPIOx_AFRH)0x28复用功能选择8~150x0000 00001. GPIO端口模式寄存器(GPIOx_MODER) (x=A,…,H)

端口模式寄存器用于配置I/O的输入输出状态,其有效域定义如图52所示。


展开
目录

第1章 微型计算机与嵌入式系统概论
1.1 微型计算机概述
1.1.1 微型计算机系统的组成
1.1.2 微处理器的发展
1.2 微型计算机的基本原理
1.2.1 冯·诺依曼体系结构
1.2.2 微机的总线
1.2.3 哈佛体系结构
1.2.4 微处理器的内部结构
1.2.5 I/O接口技术
1.2.6 存储器
1.2.7 程序的执行过程
1.3 嵌入式系统概述
1.4 嵌人式系统架构
1.5 嵌入式系统的典型应用
1.6 典型嵌入式开源硬件和软件系统
1.6.1 开源硬件平台
1.6.2 嵌入式开源操作系统

第2章 Cortex-M3微处理器的体系结构
2.1 ARM微处理器系列介绍
2.2 ARM Cortex-M3体系结构
2.2.1 总体架构
2.2.2 操作模式
2.2.3 寄存器
2.2.4 总线
2.2.5 存储器
2.2.6 中断
2.3 STM32L152RET6微处理器介绍
2.4 STM32L152RET6微处理器的系统结构
2.5 STM32L152RET6微处理器的引脚说明
2.6 STM32L152RET6微处理器的复位和时钟控制
2.7 STM32L152RET6微处理器的存储映射

第3章 Cortex-M3处理器的指令系统
3.1 Cortex-M3处理器的指令系统概述
3.1.1 指令系统基本概念
3.1.2 指令格式
3.1.3 寻址方式
3.1.4 数据传送指令
3.1.5 存储器访问指令
3.1.6 算术运算指令
3.1.7 逻辑运算指令
3.1.8 移位和循环指令
3.1.9 比较指令
3.1.10 分支控制指令
3.1.11 其他指令
3.2 ARM汇编器中的伪指令
3.2.1 Thumb伪指令
3.2.2 符号定义伪指令
3.2.3 数据定义伪指令
3.2.4 汇编控制伪指令
3.2.5 其他常用的伪指令
3.3 汇编语言的程序结构

第4章 开发板硬件系统及开发环境
4.1 最小系统设计
4.2 开发板电路原理图
4.2.1 电源
4.2.2 复位和启动电路
4.2.3 时钟
4.2.4 调试接口
4.2.5 按键
4.2.6 LED灯
4.2.7 显示屏
4.2.8 扩展I/O口
4.3 软件开发环境
4.3.1 嵌入式软件开发流程
4.3.2 程序开发库CMSIS
4.3.3 STM32L52嵌入式程序开发预备知识

第5章 通用输入输出
5.1 GPIO原理
5.1.1 GPIO功能
5.1.2 I/O模式配置
5.2 GPIO寄存器
5.3 GPIO操作函数库
5.4 GPIO实例
5.4.1 GPIO寄存器基本操作
5.4.2 GPIO LED灯控制
5.4.3 GPIO按键输入

第6章 异常和中断处理技术
6.1 中断的基本概念
6.2 中断向量表
6.3 中断的执行过程
6.3.1 中断响应基本流程
6.3.2 中断优化技术
6.3.3 系统异常
6.4 嵌套向量中断控制器NVIC
6.4.1 STM32L152 NVIC
6.4.2 NVIC寄存器
6.4.3 系统异常处理
6.4.4 全局中断管理
6.4.5 NVIC库函数
6.5 外部中断/事件控制器EXTI
6.6 寄存器说明
6.7 EXTI函数库
6.8 中断案例

第7章 定时器
7.1 定时器原理概述
7.2 内部定时器SysTick
7.2.1 SysTick寄存器
7.2.2 SysTick定时器库函数
7.2.3 SysTick定时器应用例程
7.3 外围定时器基本概念
7.4 基本定时器TIM6、TIM7
7.5 通用定时器TIM2~TIM4、TIM9~TIM11
7.5.1 通用定时器时基单元
7.5.2 通用定时器输入捕获和输出比较单元
7.5.3 TIMx的外部触发同步模式
7.6 定时器寄存器
7.7 外围定时器库函数
7.8 定时器应用例程
7.8.1 定时器寄存器操作案例
7.8.2 基本计时中断示例
7.8.3 比较输出示例
7.8.4 输入捕获示例
7.8.5 PWM输出和输入示例

第8章 USART串口控制器
8.1 串行输入输出接口的基本概念
8.2 串行通信协议
8.2.1 异步串行通信协议
8.2.2 同步串行通信协议
8.2.3 串行通信基本概念
8.3 STM32L152 USART内部结构与原理
8.3.1 发送器
8.3.2 接收器
8.3.3 校验控制
8.3.4 硬件流控制
8.3.5 USART中断请求
8.4 USART寄存器
8.5 USART数据传输配置
8.5.1 波特率计算
8.5.2 异步双向通信模式配置
8.6 USART帧传输协议
8.6.1 串行链路帧格式设计
8.6.2 MODBUS帧格式
8.7 USART函数库
8.7.1 寄存器定义
8.7.2 USART库函数
8.8 USART案例
8.8.1 串口寄存器操作案例
8.8.2 串口配置基本流程
8.8.3 PC串口通信案例
8.8.4 状态机多字节数据帧发送和接收案例

第9章 IIC总线
9.1 IIC总线概述
9.2 I2C总线的基本操作
9.3 STM32L152 I2C总线控制器
9.4 I2C寄存器描述
9.5 I2C数据通信流程
9.5.1 I2C从模式通信
9.5.2 I2C主模式通信
9.5.3 总线通信错误
9.5.4 中断请求
9.6 函数库
9.6.1 I2C寄存器结构
9.6.2 I2C库函数
9.7 I2C案例
9.7.1 I2C寄存器操作案例
9.7.2 I2C基本配置
9.7.3 模拟I2C实现
9.7.4 串行Flash通信
9.7.5 ADT742O温度传感器通信

第10章 SPI
10.1 SPI总线概述
10.2 SPI总线控制器架构
10.2.1 接口信号和连接方式
10.2.2 传输模式和时序
10.2.3 STM32L15x SPI总线控制器
10.3 SPI寄存器说明
10.4 SPI通信流程
10.4.1 SPI双工通信模式配置
10.4.2 SPI单工/半双工通信
10.5 函数库
10.5.1 SPI寄存器结构
10.5.2 SPI库函数
10.6 SPI案例
10.6.1 SPI寄存器操作案例
10.6.2 SPI函数库案例
10.6.3 温度传感器ADT732O案例

第11章 模拟/数字转换
11.1 ADC简介
11.2 STM32L152 ADC
11.2.1 STM32L152 ADC功能
11.2.2 温度和电压转换
11.3 ADC寄存器
11.4 ADC寄存器结构及ADC库函数
11.4.1 ADC寄存器结构
11.4.2 ADC库函数
11.5 ADC案例
11.5.1 ADC寄存器操作案例
11.5.2 ADC库函数操作案例

第12章 低功耗技术
12.1 处理器功耗的构成/类型
12.1.1 动态功耗
12.1.2 静态功耗
12.2 STM32L1系列处理器低功耗设计
12.2.1 STM32的电源系统
12.2.2 动态电压调节管理
12.2.3 电源检测
12.2.4 低功耗模式
12.3 功耗控制寄存器
12.4 PWR寄存器结构及库函数
12.4.1 PWR寄存器结构
12.4.2 PWR库函数
12.5 PWR案例
参考文献

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用浙江图书馆的读者帐号和密码进行登录

点击获取验证码
登录