教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

北航ARM9实验报告

来源:网络收集 时间:2026-08-05
导读: 1 ARM9嵌入式系统实验 实验报告 院(系)名称 自动化科学与电气工程学院 学生姓名 学 号 任课老师 2013年 11 月 15 日 北京航空航天大学研究生实验报告 实验一 ARM基础知识和开发环境 一、实验目的 1.掌握ARM的串行口工作原理。 2.学习编程实现ARM的UART通

1

ARM9嵌入式系统实验

实验报告

院(系)名称 自动化科学与电气工程学院 学生姓名 学

任课老师

2013年 11 月 15 日

北京航空航天大学研究生实验报告

实验一

ARM基础知识和开发环境

一、实验目的

1.掌握ARM的串行口工作原理。 2.学习编程实现ARM的UART通讯。 3.掌握S3C2410寄存器配置方法。

二、实验内容

1.熟悉打开已有工程的步骤,掌握仿真调试的方法。

2.建立一个新工程,熟练掌握编译器和链接器的设置方法。

3.从串口输入字符串,将0~9数字在超级终端上连续显示,―Enter‖键换行。 4.将第三步得到的字符转换成BCD码,限制在0~1023,用于控制直流电机。

三、预备知识

1. 了解EWARM集成开发环境的基本功能 2. 学习串口通讯的基本知识

3. 熟悉S3C2410串口有关的寄存器

四、实验设备及工具

1. 2410s教学实验箱

2. S3C2410的JTAG仿真器

3. ARM EWARM5.3集成开发环境 4. 串口连接线

五、实验原理及说明

1. 异步串行I/O

异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。

- 1 -

北京航空航天大学研究生实验报告

2. RS-232C接口通信的两种基本连接方式

这是美国电子工业协会推荐的一种标准(Electronic industries Association

Recoil-mended Standard)。它在一种25针接插件(DB—25)上定义了串行通信的有关信号。这个标准后来被世界各国所接受并使用到计算机的I/O接口中。两种连接方式如下图:

3. 信号电平规定

1) EIA电平:双极性信号逻辑电平, 它是一套负逻辑定义

? -3V到-25V之间的电平表示逻辑―1‖。 ? +3V到+25V之间的电平表示逻辑―0‖。

2) TTL电平:计算机内部(S3C2410)使用LVTTL电平 3) 电平转换电路:常用专门的RS-232接口芯片,如SP3232、SP3220等,在LVTTL

电平和EIA电平之间实现相互转换。

4. 异步串行口接口电路

六、实验方法

1. 以实验一为模板,完成实验的1和2。

2. 将接收串口数据的数组cl[1]改为cl[256],用cl[i]==0x0d 回车字符作为一帧结束的

条件。

3. 将―Exp4 电机转动控制实验‖ inc目录下的MotorCtrl.H 和src目录下的MotorCtrl.C

拷到该工程相应目录,将MotorCtrl.C 添加到工程中。

4. 在main函数里包含以下头文件 #include ―../inc/MotorCtrl.h‖

5. 在main函数里包含以下头文件 #include ―inc/macro.h―,#define

MOTOR_COUNT 12657。

6. 在Main函数里执行init_MotorPort()。

7. 直流电机调试的函数是 SetPWM((setspeed -512)*MOTOR_COUNT/1024),

setspeed是速度指令,取值范围0~1023。

七、程序源代码

#include \#include \

- 2 -

北京航空航天大学研究生实验报告

#define U8 unsigned char #include #include #define TRUE 1 #define FALSE 0

#define MOTOR_COUNT 12657

//#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting

#define rUTRSTAT0 (*(volatile unsigned *)0x50000010) #define rUTRSTAT1 (*(volatile unsigned *)0x50004010)

#define WrUTXH0(ch) (*(volatile unsigned char *)0x50000020)=(unsigned char)(ch) #define WrUTXH1(ch) (*(volatile unsigned char *)0x50004020)=(unsigned char)(ch) #define RdURXH0() (*(volatile unsigned char *)0x50000024) #define RdURXH1() (*(volatile unsigned char *)0x50004024) //void Uart_SendByten(int Uartnum, U8 data); void Uart_SendByten(int,U8);

char Uart_Getchn(char* Revdata, int Uartnum, int timeout);

unsigned int num;

void ARMTargetInit(void); void hudelay(int time); int main(void) { //int ndev; char c[2];

char err; ARMTargetInit(); // do target (uHAL based ARM system) initialisation // init_MotorPort(); Uart_SendByten(0,0xa);//换行 Uart_SendByten(0,0xd);//回车

printf(\ while(1) { err=Uart_Getchn(c,0,0); //从串口采集数据

if (err==TRUE) {

if(c[0] == '\\r') {

Uart_SendByten(0,0xa);//换行

- 3 -

北京航空航天大学研究生实验报告

Uart_SendByten(0,0xd);//回车 if(num < 1024) {

printf(\ SetPWM((num -512)*MOTOR_COUNT/1024); } else {

printf(\ }

num = 0;

Uart_SendByten(0,0xa);//换行 Uart_SendByten(0,0xd);//回车

printf(\ } else {

Uart_SendByten(0,c[0]); //显示采集的数据 if(c[0] > '9' || c[0] < '0') {

Uart_SendByten(0,0xa);//换行 Uart_SendByten(0,0xd);//回车

printf(\ Uart_SendByten(0,0xa);//换行 Uart_SendByten(0,0xd);//回车

printf(\ num = 0; } else {

c[1] = c[0] - '0';

num = num * 10 + c[1]; } } } } }

void Uart_SendByten(int Uartnum, U8 data)//ok eric rong { //int i; if(Uartnum==0) { while(!(rUTRSTAT0 & 0x4)); //Wait until THR is empty.

- 4 -

…… 此处隐藏:1372字,全部文档内容请下载后查看。喜欢就下载吧 ……
北航ARM9实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/443262.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)