ARM9基础教程
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BEoFXoRLTt AMSMEHM
0x0000 0000 Boot MEM
10
保留
®
内容
• 目的
• STR71x设备
➢ STR71x系列产品 ➢ 功能框图 ➢ APB总线 ➢ 内存映射和启动模式
• STR71x程序库
➢ 程序库的结构 ➢ 使用例程
• STR71x外设
➢ 特色 ➢ 程序库 ➢ 编程实例
APB 2
- 1个12位的AD转换器 - 增强型中断控制器 - 4个16位定时器 - 实时时钟 - 外部中断 - 看门狗 - 3个16位的通用I/O口
PRCCU
JTAG
ADC12 EIC TIM0 TIM1 TIM2 TIM3 RTC XTI WDG
GPIO0 GPIO1 GPIO2
ARM7TDMI CPU
• 目的
• STR71x设备
➢ STR71x系列产品 ➢ 功能框图 ➢ APB总线 ➢ 内存映射和启动模式
• STR71x程序库
➢ 程序库的结构 ➢ 使用例程
• STR71x外设
➢ 特色 ➢ 程序库 ➢ 编程实例
18
®
STR71x 外 设
电源,复位和时钟控制单元 (PRCCU)
19
®
电源,复位和时钟控制单元 (PRCCU)
20
®
电源,复位和时钟控制单元
• 具有增强型节电特色的独立电源功能块 • 具有硬件和软件复位源的复位管理功能块 • 具有宽广的时钟频率和时钟源的时钟控制单元
21
®
复位单元
• 硬件复位:
➢ 具有提高EMC的模拟过滤器的复位(只有输入功能) ➢ 内部看门狗复位 ➢ 低电压检测复位 ➢ 仅仅从STANDBY模式唤醒的实时时钟警告和的唤醒引脚的复位
➢ 71x_vect.s: 其他的向量表 ➢ retarget.c: retarget层 ➢ scat.scf: 为Linker设定内存映射
application.c
软件层
71x_it.c 71x_lib.h 71x_map.h
71x_conf.h 71x_type.h
71x_it.h
gpio.h gpio.c
#endif
u16 PC1; u16 EMPTY2; u16 PC2; u16 EMPTY3;
• main.c
#include "71x_lib.h"
用户的文件
u16 PD;} GPIO_TypeDef;
在DEBUG模式小外设的结构指针
#define GPIO0_BASE (APB2_BASE + 0x3000)
#ifdef DEBUG
#ifdef _GPIO0
EXT GPIO_TypeDef *GPIO0;
非DEBUG模式下使用的内容
#endif /* _GPIO0 */
int main {
仅仅包含71x_lib.h
#ifdef DEBUG
debug(); #endif
在DEBUG模式下,初始 化外设的指针
STR71x 培训教程
MCU Competence Centre Asia-Pacific
v3.0 – Oct. 2005
STMicroelectronics
内容
• 目的
• STR71x设备
➢ STR71x 系列产品 ➢ 功能框图 ➢ APB总线 ➢ 内存映射和启动模式
• STR71x程序库
➢ 程序库的结构 ➢ 使用例程
• 71x_conf.h
#define DEBUG
用户根据需求进行修改
• 71x_lib.h
#include "71x_type.h"
不可修改此文件
#define _GPIO /* include gpio.h file */
#define _GPIO0 /* use GPIO0 peripheral */
mainprogram用训根据需求训行修改不可修改此文件不可修改此文件用训的文件训训包含71xlibh在debug模式下初debug模式下使用的加入用训的训目中17由于arm的精训指令集训于存或者被分解成基本的指令两个?目的?str71x训训str71x系列训品apb训训存映射和训模式?str71x程序训使用例程?str71xjtagprccuemiflashramapb2apb1arm7nativebusarm7tdmicpuadc12eictim0tim1tim2tim3rtcxtiwdggpio0gpio1gpio2i2c0i2c1bspi0bspi1uart0uart1scuart2uart3usbcanhdlcstr71xprccu21具有增强型训训特色的立训源功能训具有训的训训训率和训训源的训训控制训元具有提高emc的模训训训器的训位只有训入功能训训从standby模式训醒的训训训训警告和的训醒引脚的训位rccuccrsresen50mhz两个独pll具有121620和24倍训的pll1具有121620和28倍训的pll2外训提供立的训训hdlcusbusbclkrtcpll2hclk48mhz12pll1116div248ckclk2clk3rclkckafrtcxirtcxoosc32khzdiv248div248mclkpclk1pclk2prccuapb1上的快速外训apb2上的慢速外训ckoutpll1pll2mclk24训训信号描述最小最大ck训训训入16mhzusbclkusb训入训训48mhz48mhzckafrtc训训32khz32khzpll1ref训入pll1的训训15mhzmhzpll2ref训入pll2的训训15mhzmhzpllckpll训出的训训200mhzrclk训训控制训元的训出50mhzmclk主系训训训50mhzpclkapb1训训上的高速外训训训33mhzfclkapb2训训上的外训训训33mhz25?外部33v训训训供训io18v训训训训器standbymairegulatorlowpowerregulatorcorelowpowerlogirtcioioring8vbackup8vlowpowerlogi3vmairegulatorlowpowerregulator8vbackupio26run50mhz60mawfi1mhzmawfi32khz200sto
STR715FR 0
64+16 16
32 I/Os
Bank0: 10,000次擦写次数 Bank1: 100,000次擦写次数
针对内嵌的内存和闪 存的无等待状态
外部供电3.3V和I/O口电压为3.3V 内嵌向内核供电的1.8V电压调节器
6
®
STR71x功能框图
• ARM7TDMI 16/32位RISC的微处理器 • 内嵌内存
EMI FLASH
RAM
I2C0 I2C1 BSPI0 BSPI1 UART0 UART1/SC UART2 UART3 USB CAN HDLC
®
STR71x APB总线
作用:
➢ 连接内部总线到外设 ➢ 为外设开启时钟 ➢ 将4K字节内存映射到外设和专用寄存器
APB 1
- 2个I²C - 2个BSPI - 4个UART - 1个USB - 1个CAN - 1个HDLC
PRCCU JTAG
ARM7TDMI CPU
ARM7 native bus
EMI FLASH
RAM
ADC12 EIC TIM0 TIM1 TIM2 TIM3 RTC XTI WDG
GPIO0 GPIO1 GPIO2
APB bus APB bus
APB2 APB1
STR71x
I2C0 I2C1 BSPI0 BSPI1 UART0 UART1/SC UART2 UART3 USB CAN HDLC
STR711FR
0
1
2
64+16 128+16 256+16
16
32
64
USB, 30 I/Os
STR712FR
0
1
2
64+16 128+16 256+16
16
32
64
CAN, 32 I/Os
3.0V~3.6V (内核的工作电压:1.8V) -40°C~+85°C
TQFP64 10×10/H = LFBGA64 8 × 8 × 1.7
11
®
程序库的结构(1)
➢ 标准的C语言 (只有系统部分是汇编语言编写的) ➢ 方便读写外设的函数 ➢ 对于每一个外设,定义一套函数去实现其功能 ➢ 习惯的命名一致性使得维护更加容易 ➢ 减少了新的的应用开发的时间
应用层
开发人员应用
软件层
驱动1
硬件层
12
外设1
接口
函数 1 函数 2
… 函数 m
外设 i
GPIO_Config(GPIO0,0xFFFF,GPIO_OUT_PP);
// main program
#else /* NON DEBUG */
}
#define GPIO0 ((GPIO_TypeDef *)GPIO0_BASE)
#endif /* DEBUG */
16
®
! 关于使用库文件进行编程的警告
EN B1 B0 x01 x1 x10
10x
0x4000 0000 0x2000 0000
FLASH RAM
内存重新映射
内存重新映射可以通过软件 修改BOOTCR寄存器的boot位 来实现
APB1
RCCU
0x6000 0000
EXTMEM
0x4000 0000
FLASH
0x2000 0000
RAM
00xx00000000 00000000
和 lr_irq
执行位于IVR内的指令
清除相应的标志位
恢复 r[0:12],spsr_irq 和 lr_irq
lr_irq赋予PC spsr_irq恢复给 cpsr
71x_vect.s
TIMIRQHandler 切换到SYS mode,
打开IRQ中断 跳转到
TIM_IRQHandler
切换到 IRQ mode
0xFFFF FFFF
0xFFFF F800
EIC
EIC APB2
0xE000 0000 0xC000 0000
APB2 APB1
启动模式
可将内存、闪存或扩展内 存映射到地址0x0
通过BOOTEN、BOOT0和 BOOT1的引脚决定:
0xA000 0000
RCCU
0x6000 0000 EXTMEM
➢ Flash:256K字节 + 16K字节 ➢ RAM:64K字节
• EMI(TQFP144):支持多达4个bank的
扩展SRAM和闪存
• 带低功耗模式的电源供给:
➢ I/O:3.0V~3.6V ➢ ADC:0 V~2.5V ➢ 内核和外设:1.8V
• 通过PRCCU和PLL实现0~48MHz主频
驱动 n 外设 n
函数 1 函数 2
… 函数 k
®
➢ 外设的驱动源代码 ➢ 外设的函数头文件 ➢ 外设的寄存器地址 ➢ 共用变量类型和常数 ➢ 外设指针的初始化
应用层
程序库的结构(2)
➢ 全局的头文件(所有的) ➢ 中断函数的的头文件 ➢ 中断函数的源代码
➢ 设置文件 ➢ 用户应用的源代码
➢ 71x_init.s: 初始化各个模式并跳 转到main主函数
71x_lib.c
硬件层
gpioX
13
®
Interrupt Handling Example
main / 71x_it.c
用户的程序 “USER mode”
IRQ 请求
指令 指令
指令
0x18 跳到IRQHandler子程序
IRQHandler “IRQ mode”
lr_irq减去4 保存 r[0:12],spsr_irq
• 软件复位:
➢ RCCU_CCR ->SRESEN =‘1’ ➢ RCCU_CCR->EN_HALT=‘1’ ➢ RCCU_SMR->HALT =‘1’
ARM7 native bus
APB2
APB1
STR71x
9
APB bus APB bus
EMI FLASH
RAM
I2C0 I2C1 BSPI0 BSPI1 UART0 UART1/SC UART2 UART3 USB CAN HDLC
®
内存映射和启动模式
➢ 可设定4G字节的内存的地址 ➢ RAM:64K字节 ➢ FLASH:256K字节代码区 + 16K字节数据区 ➢ EXTMEN:64M字节(4个bank合计)
• 由于ARM的精简指令集,对于内存或者I/O口的边读边写的操
作是可以被打断的(被分解成两个基本的指令), 因此在以下 几种可能存在数据被破坏危险的代码段,用户必须进行临界 保存:
➢ 在可能发生的代码处关闭中断 ➢ 临界部分的起始处 ➢ 进行读写操作时 ➢ 临界部分的结束时 ➢ 重新开启中断
17
®
内容
71x_it.c
TIMI_RQHandler TIM IRQ Handler
的C代码
14
IRQ Disabled
IRQ
• 共同的文件必须拷贝到工作的目录里
• 使用某个外设:PPPx
➢ 项目需要指向源文件:“ppp.c”和“include\ppp.h”
➢ 编辑71x_conf.h文件,设定如下:
• 2 APB桥:
➢ APB1: 通讯类外设 ➢ APB2: 通用的外设
PRCCU
JTAG
ADC EIC TIM0 TIM1 TIM2 TIM3 RTC XTI WDG GPIO0 GPIO1 GPIO2
ARM7TDMI CPU
ARM7 native bus
APB2
APB1
STR71x
8
APB bus APB bus
• STR71x外设
➢ 特色 ➢ 程序库 ➢ 编程实例
2
®
内容
• 目的
• STR71x设备
➢ STR71x系列产品 ➢ 功能框图 ➢ APB总线 ➢ 内存映射和启动模式
• STR71x程序库
➢ 程序库的结构 ➢ 使用例程
• STR71x外设
➢ 特色 ➢ 程序库 ➢ 编程实例
3
®
目的
• 介绍STR71x系列产品 • 提高对STR71x外设的认知度 • 介绍STR71x的程序库 • 培训结束时,能做到如下几点:
▪ #define _PPP
(必须的)
▪ #define _PPPx
(可选的,根据外设决定)
• 如果用户希望调试应用,必须在71x_conf.h文件中定义DEBUG:
➢ #define DEBUG
• 在用户的应用中需包含以下行:
➢ #include “71x_lib.h”
15
®
软件库的使用例程(2)
• 71x_map.h
typedef volatile struct
不可修改此文件
#include "71x_conf.h" #include "71x_map.h" #ifdef _GPIO
#include "gpio.h“
在71x_conf.h定义_GPIO,将gpio.h 加入用户的项目中