嵌入式系统原理与实验
Cortex M3
实验教程(上)
上海交通大学 嵌入式系统原理与实验课程组
2012. 3
目
第一章
1.1
1.2
1.3
1.4
1.5
1.6
1.7
第二章
2.1
2.2
2.3
2.4
2.5
2.6
2.7
第三章
3.1
3.2
3.3
3.4
3.5
3.6
第四章
4.1
4.2
4.3
4.4
4.5
4.6
第五章
5.1
5.2
5.3
5.4
5.5
第六章
6.1
6.2
6.3
½
通用输入/输出接口
....................................................................... 1
GPIO
模块基本特性
.............................................................................. 1
GPIO
寄存器映射
.................................................................................. 1
GPIO
初始化和配½
.............................................................................. 3
板上
GPIO
资源及特性
......................................................................... 4
Stellaris
库½数
...................................................................................... 6
实验一
GPIO
操½编程
...................................................................... 9
思考与练习题
...................................................................................... 16
系统控制单元:时钟控制模块
........................................................ 17
概述
...................................................................................................... 17
功率控制
.............................................................................................. 17
时钟控制
.............................................................................................. 17
Stellaris
库½数
.................................................................................... 19
自编封装½数介绍
.............................................................................. 22
实验二 时钟控制编程
...................................................................... 22
思考与练习题
...................................................................................... 29
SysTick
及通用定时器模块
............................................................. 30
概述
...................................................................................................... 30
系统定时器(SysTick)
..................................................................... 30
Timer
模块
........................................................................................... 31
Stellaris
库½数
.................................................................................... 32
实验三
SysTick
及
Timer
编程
........................................................ 35
思考与练习题
...................................................................................... 41
中 断
.............................................................................................. 42
中断基本概念
...................................................................................... 42
Cortex-M3
内核异常与
NVIC
............................................................ 43
外部中断/事件控制器
......................................................................... 45
Stellaris
中断基本编程方法
................................................................ 46
实验四 中断编程
.............................................................................. 50
思考与练习题
...................................................................................... 57
看门狗定时器
.................................................................................. 58
看门狗(Watchdog)简介
....................................................................... 58
WatchDog
功½概述
............................................................................ 58
Stellaris
库½数
.................................................................................... 59
实验五
Watchdog Timer
编程
.......................................................... 61
思考与练习题
...................................................................................... 67
通用异步收发传输器
....................................................................... 68
UART
简介
.......................................................................................... 68
UART
功½概述
.................................................................................. 68
Stellaris
½数库
................................................................................... 72
I
6.4
实验六
UART
................................................................................... 76
6.5
思考与练习题
...................................................................................... 84
附½
A Keil
建立工程文件步骤
.................................................................. 85
附½
B S700
实验板硬件电路½用说明
....................................................... 95
II
第一章
通用输入/输出接口
1.1 GPIO
模块基本特性
Stellaris LM3S9B96微控制器的通用输入/输入端口(General-Purpose Input
Outputs,
简称为GPIOs)模块由9 个物理GPIO 模块组成,
每一个物理GPIO 模
块对应一个端口(Port
A½J)。GPIO
模块支持高达65 个可编程的输入/输出引
脚,具½取决于正在½用的外设。GPIO 模块基本特性包括:
所有的GPIO 引脚½可以用½GPIO 或是一种或多种的外设功½,½
配½为输入模式可承受5V 电压,配½为数字输入的引脚均为½密特触发。
通过编程,可½GPIO端口具备中断功½:屏½中断发生;中断触发
方式可配½为上升沿、下降沿、双边沿、
(高或½)电平触发。
读写操½时可通过地址线进行½屏½的操½。
通过编程可控制的GPIO 引脚配½方式:弱上拉或下拉电阻、2mA,
4mA
或8mA 驱动电流,对于需要大电流的应用最多可以有四个引脚可以配
½为18mA;8mA 驱动的斜率控制;开漏½½、数字输入½½。
1.2 GPIO
寄存器映射
为了利用GPIO端口达到所需的功½,
首先应对GPIO端口进行配½
(编程)
。
配½方法就是对与某一GPIO端口相关的寄存器进行读写编程。可以通过两种
方法来访问GPIO模块,一种称为先进外设总线(APB),向后兼容以前的
Stellaris®产品,这是一种较陈旧的方法。另外一种是先进高端总线(AHB),
它和APB一样拥有相同的寄存器映射,½是提供了比APB更½的访问性½。
½是这两种访问方式只½选择一种½用。
可以通过GPIOHBCTL寄存器来确定
½用哪种方式访问。
与GPIO端口对应的基本地址如下:
表1.1
GPIO
端口
基本地址
(APB)
基本地址
(AHB)
0x4000.4000
0x4005.8000
A
0x4000.5000
0x4005.9000
B
0x4000.6000
0x4005.A000
C
0x4000.7000
0x4005.B000
D
0x4002.4000
0x4005.C000
E
0x4002.5000
0x4005.D000
F
0x4002.6000
0x4005.E000
G
0x4002.7000
0x4005.F000
H
0x4003.D000
0x4006.0000
J
与GPIO端口相关的寄存器的地址、名称、读写类型、复½值及其含义如
表1.2所示。这里寄存器的地址是通过对基本地址的偏移量给出的。例如,端
口A的GPIODIR寄存器的地址为0x4000.4400(APB访问方式)或0x4005.8400
1
(AHB访问方式)
。
表1.2
偏移量
0x000
0x400
0x404
0x408
0x40C
0x410
0x414
0x418
0x41C
0x420
0x500
0x504
0x508
0x50C
0x510
0x514
0x518
0x51C
0x520
0x524
0x528
0x52C
0xFD0
0xFD4
0xFD8
0xFDC
0xFE0
0xFE4
0xFE8
0xFEC
0xFF0
0xFF4
0xFF8
0xFFC
名称
GPIODATA
GPIODIR
GPIOIS
GPIOIBE
GPIOIEV
GPIOIM
GPIORIS
GPIOMIS
GPIOICR
GPIOAFSEL
GPIODR2R
GPIODR4R
GPIODR8R
GPIOODR
GPIOPUR
GPIOPDR
GPIOSLR
GPIODEN
GPIOLOCK
GPIOCR
GPIOAMSEL
GPIOPCTL
GPIOPeriphID4
GPIOPeriphID5
GPIOPeriphID6
GPIOPeriphID7
GPIOPeriphID0
GPIOPeriphID1
GPIOPeriphID2
GPIOPeriphID3
GPIOPCellID0
GPIOPCellID1
GPIOPCellID2
GPIOPCellID3
读写类型
R/W
R/W
R/W
R/W
R/W
R/W
RO
RO
W1C
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
-
R/W
R/W
RO
RO
RO
RO
RO
RO
RO
RO
RO
RO
RO
RO
复½值
0x0000.0000
0x0000.0000
0x0000.0000
0x0000.0000
0x0000.0000
0x0000.0000
0x0000.0000
0x0000.0000
0x0000.0000
-
0x0000.00FF
0x0000.0000
0x0000.0000
0x0000.0000
-
0x0000.0000
0x0000.0000
-
0x0000.0001
-
0x0000.0000
-
0x0000.0000
0x0000.0000
0x0000.0000
0x0000.0000
0x0000.0061
0x0000.0000
0x0000.0018
0x0000.0001
0x0000.000D
0x0000.00F0
0x0000.0005
0x0000.00B1
功½
GPIO数据
GPIO方向
GPIO
中断检测
GPIO
中断双边沿检测
GPIO
中断事件
GPIO
中断屏½
GPIO
原始中断状态
GPIO
屏½后的中断状态
GPIO
中断清除
GPIO
备用功½选择
GPIO 2mA
驱动选择
GPIO 4mA
驱动选择
GPIO 8mA
驱动选择
GPIO
开漏选择
GPIO
上拉选择
GPIO
下拉选择
GPIO
斜率控制选择
GPIO
数字½½
GPIO
锁定
GPIO
确认
GPIO
模拟模块选择
GPIOGPIO
端口控制
GPIO
外设标识
4
GPIO
外设标识
5
GPIO
外设标识
6
GPIO
外设标识
7
GPIO
外设标识
0
GPIO
外设标识
1
GPIO
外设标识
2
GPIO
外设标识
3
GPIO PrimeCell
标识
0
GPIO PrimeCell
标识
1
GPIO PrimeCell
标识
2
GPIO PrimeCell
标识
3
注:R/W表示½件可以读或写此域;RO表示½件可以读取此域,写入此域无效;
W1C表示½件可以写此域,向W1C½写入0不½响寄存器中的½值,写入1
清零寄
存器中½的值,剩½的½保持变,读寄存器返回的数据没有意义。
注意:GPIODATA寄存器是数据寄存器,在½件控制模式时,在通过将方
向寄存器设½为输出的情况下,写入GPIODATA 寄存器的数据将会传送到
GPIO
的引脚上。为了对GPIODATA 寄存器执行写操½,由地址总线½[9:2]
2
评论