没有合适的资源?快使用搜索试试~ 我知道了~
S3C2410基础实验教程.pdf
需积分: 10 24 下载量 67 浏览量
2009-09-29
11:00:40
上传
评论
收藏 2.93MB PDF 举报
温馨提示
试读
119页
S3C2410基础实验教程 void UsbdInit(U8 fun) { isUsbdSetConfiguration = 0; rUPLLCON = (40<<12) | (4<<4) | 1; //UCLK=48Mhz InitDescriptorTable(fun); //初始化设备的描述符列表 ReconfigUsbd(); //重新配置USB设备 UsbState = 0; }
资源推荐
资源详情
资源评论
实验 1 ARM 汇编指令实验
1、实验目的:
z 熟悉 ADS 开发环境和 wiggler 调试环境。
z 掌握简单的 ARM 汇编指令的使用方法。
2、实验设备
z PC 机、JTAG 调试板、S3C2410 开发板。
3、实验内容
z 熟悉 ARM 开发环境的建立。
z 使用 ARM 汇编指令设置 GPIO 口的相应寄存器,控制 LED 灯的亮灭。
4、实验原理
下面介绍本实验用到的一些汇编指令。
1).LDR/STR 指令
说明:LDR/STR 指令用于加载/存储寄存器。举例说明:
示例:
LDR r3,[r0],#4 //从 r0 表示的地址中读取数据分别存放到 r3 中,然后将 r0 加 4。
STR r3, [r1],#4 //将 r3 中的数据保存到 r1 表示的地址中,然后将 r1 加 4。
LDMIA/STMIA 指令
说明:LDM/STM 指令用于加载/存储多个寄存器,举例
示例:
LDMIA r0!,{r4---r11}//从 r0 表示的地址中顺利取出 8 个字数据分别存放到 r4-r11
中。
2).程序分支指令
B 指令
说明:B 指令为 ARM 的分支指令,将引起处理器转移到制定标号处执行。
示例:
B Label //处理器转移到 Label 标号处执行
BEQ stop//Z 标记置位,则跳转到 stop 标号处执行;否则继续下一条指令
BNE octcopy//Z 标记清 0,则跳转到 octcopy 标号处执行;否则继续下一条指令
3).其他指令
SUBS
说明:该指令有 SUB 指令加上 S 后缀组成,S 后缀标志根据执行结果更新条件标志码。
示例:
SUBS r3,r3,#1//如果 r3 等于 0,则 Z 位清 0
MOVS 指令
说明:该指令由 MOV 指令加上后缀 S 组成,S 后缀标志根据执行结果更新条件标志码。
1
示例:
MOVS r3,r2,LSB#3//将 r2 右移 3 位即除以 8,然后赋值给 r3。
5、实验相应寄存器说明
GPFCON-端口配置寄存器。
GPFDAT-端口数据寄存器
GPFUP-端口上拉电阻使能寄存器
6、实验电路图
2
7.实验程序实现
利用 ARM 汇编语言实现跑马灯程序
/* asm.s */
GPFCON EQU 0x56000050
GPFDAT EQU 0x56000054
GPFUP EQU 0x56000058
EXPORT LEDTEST
AREA LEDTESTASM,CODE,READONLY ;该伪指令定义了一个代码段,段名为LEDTESTASM,属性只读
LEDTEST
;设置GPF4-GPF7为output
ldr r0,=GPFCON
ldr r1,=0x5500
str r1,[r0]
;禁止GPF4-GPF7端口的上拉电阻
ldr r0,=GPFUP
ldr r1,=0xff00
str r1,[r0]
;将数据端口F的数据寄存器的地址赋值给寄存器r2
ldr r2,=GPFDAT
;跑马灯循环
ledloop1
ldr r1,=0xf0
str r1,[r2] ;使GPF7输出高电平,D9-D12灯会灭
bl delay1 ;调用延迟子程序
ledloop2
ldr r1,=0x0
str r1,[r2] ;使GPE7输出低电平 D9-D12灯亮
3
bl delay2 ;调用延迟
;延迟程序
delay1
ldr r3,=0x1ffff ;设置延迟的时间
delay3
sub r3,r3,#1 ;r3=r3-1
cmp r3,#0x0 ;将r3的值与0相比较
bne delay3 ;比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句
b ledloop2
mov pc,lr ;返回
;延迟程序
delay2
ldr r3,=0x2ffff ;设置延迟的时间
delay4
sub r3,r3,#1 ;r3=r3-1
cmp r3,#0x0 ;将r3的值与0相比较
bne delay4 ;比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句
b ledloop1
mov pc,lr ;返回
END ;程序结束符
4
实验 2 C 和汇编语言的混合编程实验
1、实验目的
z 学习在 C 程序中使用嵌入式汇编编写程序
z 了解嵌入式汇编的格式、语言特点
2、实验设备
z S3C2410 开发板
z ADS1.2 集成开发环境,JTAG 调试器
z 串口连接线
3、实验原理
在 ARM 的应用开发中,C 语言功能强大且容易编写程序,但是汇编程序在底层的操作
仍然具有 C 程序无法替代的功能,有时候我们需要在 C 程序中嵌入汇编程序来完成一些直
接对底层的诸如寄存器的操作。
在 ARM C 语言中,使用关键词__asm 来标志一段汇编指令程序:其格式如下,
__asm
{
汇编程序
}
嵌入式汇编语言不同的地方有:
z 如果一行中有多个汇编指令,指令之间用分号(;)隔离
z 如果一天指令占多行,要使用续行符号(\)
z 在汇编指令段中可以使用 C 语言的注释语句
4、实验电路图
5、程序实现
5.1 创建 GPFC.c 源文件,应用 C 语言实现嵌入式编程
/* 这是一个利用 GPIO 做跑马灯的程序 */
1
剩余118页未读,继续阅读
资源评论
qzgui
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功