ARM开发实践实验报告册s3c2440Word文件下载.docx
- 文档编号:18218916
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:24
- 大小:21.14KB
ARM开发实践实验报告册s3c2440Word文件下载.docx
《ARM开发实践实验报告册s3c2440Word文件下载.docx》由会员分享,可在线阅读,更多相关《ARM开发实践实验报告册s3c2440Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
10.观察开发板上的LED亮灭情况。
四、实验数据和结果:
4个LED灯同时亮和灭。
5、实验总结:
通过此次试验我掌握S3C2440I/O寄存器的配制方法。
并且灵活运用I/O寄存器。
基本熟悉ADS的使用。
六、程序代码
#include"
2440addr.h"
voidDelay(unsignedintx)//延时函数
{
inti,j;
for(i=0;
i<
x;
i++)
for(j=0;
j<
j++)
;
}
voidMain()
rGPBCON=0x15400;
//GPB寄存器配置
rGPBDAT=0X1e0;
rGPBUP=0x7ff;
while
(1)
{
rGPBDAT=0X0;
Delay(10000);
}
实验二:
S3C2440定时器中断控制
一、实验目的:
用S3C2440的定时器4来精确定时1s,让开发板的蜂鸣器每隔2s响一次,持续时间是0.5s,蜂鸣器响的同时伴随着LED亮。
2、实验原理和内容:
1.时钟源设置:
由开发板原理图可知,OM3和OM2都为低,外部晶振为12MHZ,所以该开发板的时钟源和USB时钟源都是12MHZ的晶振。
2.锁相环(PLL):
Mpll=(2*m*Fin)/(p*2s)
m=M(分频器M的值)+8,p=P(分频器P的值)+2
3.FCLK,HCLK和PCLK:
FCLK:
内和时钟。
HCLK:
AHB。
PCLK:
APB。
4.时钟发生器和电源管理特殊寄存器:
1.首先在ADS上建立一个工程,工程名为timer_buzzer_led,然后选择一个和适的路径存放。
3.新建一个源文件,命名为timer_buzzer_led.c,存放到工程名为timer_buzzer_led的文件夹下。
4.在timer_buzzer_led.mcp下创建一个分组,取名为startcode,然后将前面拷贝的3个文件夹2440init.s,2440slib.s,nand.c依次添加到以startcode命名的文件夹下。
5.将timer_buzzer_led.c添加到工程里面去。
7.在timer_buzzer_led.c里面进行程序的书写。
10.观察开发板上的led亮灭情况及蜂鸣器的发声。
蜂鸣器每隔2S响一次,持续时间是0.5S,蜂鸣器响的同时伴随着LED亮。
五、实验总结:
通过此次试验我掌握S3C2440I/O寄存器的配制方法,中断寄存器的配置,定时器中断控制I/O寄存器。
#include"
voidLed_Init(void)//led初始化
{rGPBCON&
=~(3<
<
10);
rGPBCON|=(1<
10);
rGPBUP&
=~(1<
5);
rGPBDAT|=(1<
5);
voidTimer4_Init(void)
rTCFG0&
=0x0;
rTCFG0|=99;
rTCFG1&
=~(0xf);
rTCFG1|=0x02;
rTCNTB04=125000;
//2s中断一次
rTCON|=(1<
1);
rTCON=0x09;
voidBeep_Init(void)//蜂鸣器初始化
rGPBCON&
0);
0);
rGPBDAT&
0);
voidTimer0_Interrupt_Init(void)//中断服务函数
rINTMSK&
10);
实验三PWM
1、实验目的:
用PWM来驱动蜂鸣器,并通过改变脉宽来改变蜂鸣器的发生频率,脉宽从低到高,再从高到低,周而复始。
并利用4个LED来指示脉宽的高低,最高时全亮,最低时全灭。
S3C2440一共有5个16位的定时器,其中4个定时器具有脉宽调制功能因此用S3C2440可以很容易的实现PWM功能。
1.首先在ADS上建立一个工程,工程名为PWM,然后选择一个和适的路径存放。
3.新建一个源文件,命名为PWM.c,存放到工程名为PWM的文件夹下。
4.在PWM.mcp下创建一个分组,取名为startcode,然后将前面拷贝的3个文件夹2440init.s,2440slib.s,nand.c依次添加到以startcode命名的文件夹下。
5.将PWM.c添加到工程里面去。
7.在PWM.c里面进行程序的书写。
依次亮到全亮,再依次灭,到全灭。
通过此次试验我掌握S3C2440外部中断的工作原理,熟练掌握了外部中断来控制其他资源。
voidclk_div()//配置时钟分频
rMPLLCON=(127<
12)|(2<
4)|1;
rCLKDIVN=(2<
1)|1;
voidDelay(unsignedintdata)//定义延时函数
unsignedinti,j;
for(i=0;
i<
data;
for(j=0;
j<
j++);
voidTimer0_Init()//定时器0初始化
=0xffff00;
rTCFG0|=249;
=0xfffff0;
rTCFG1|=2;
rTCNTB0=25000;
rTCON&
=~0xf;
rTCON|=0xf;
=~0x2;
{
intfreq;
freq=0;
clk_div();
Timer0_Init();
rGPBCON=0x15400;
//LED初始化
rGPBDAT=(1<
5)|(1<
6)|(1<
7)|(1<
8);
rGPBUP=0x7ff;
rTCMPB0=freq;
while
(1)//while
(1)死循环
for(;
freq<
24000;
)
{
freq=freq+1000;
rTCMPB0=freq;
Delay(500);
if(freq==3000)//依次判断,并操作LED灯
{
rGPBDAT=0x0;
//Delay(500);
}
elseif(freq==9000)
rGPBDAT=~((1<
7));
elseif(freq==15000)
6));
elseif(freq==20000)
rGPBDAT=~(1<
elseif(freq==23000)
rGPBDAT=~(0x0);
}//曾
freq>
1000;
freq=freq-1000;
if(freq==3000)
}//减
实验四:
S3C2440外部中断控制
2、实验目的:
用S3C2440的外部中断来控制led灯的亮灭。
开发板上共有4个按键,分别连接到了EINT0,EINT1,EINT2,EINT4。
用这四个按键控制连接到GPB5~GPB8上面的4个led灯,按一下按键,对应的led灯被点亮,再按下按键,对应的led灯灭。
3、实验原理和内容:
8个外部中断可以由多种信号触发方式所请求。
EXTINT寄存器为外部中断配置信号触发方式为电平触发方式或边沿触发,同时还需配置信号触发性。
1.首先在ADS上建立一个工程,工程名为interrupt,然后选择一个和适的路径存放。
3.新建一个源文件,命名为interrupt.c,存放到工程名为interrupt的文件夹下。
4.在interrupt.mcp下创建一个分组,取名为startcode,然后将前面拷贝的3个文件夹2440init.s,2440slib.s,nand.c依次添加到以startcode命名的文件夹下。
5.将interrupt.c添加到工程里面去。
7.在interrupt.c里面进行程序的书写。
按一下按键,对应的led灯被点亮,再按下按键,对应的led灯灭。
voidDelay(unsignedintdata)//延时函数
volatileintvariable0;
voidTimer0_Init()//定时器初始换函数
void__irqTimer0_1s(void)//定时器0中断服务函数
rSRCPND=0x400;
rINTPND=0x400;
rGPBDAT=~rGPBDAT;
variable0++;
void__irqkey4_LED(void)//按键4中断函数
rSRCPND|=0x1;
rINTPND|=0x1;
rGPBDAT=rGPBDAT|(0x1<
while(variable0==0);
variable0=0;
void__irqkey1_LED(void)//按键1中断函数
rSRCPND=0x2;
rINTPND=0x2;
6);
void__irqkey3_LED(void)//按键3中断服务函数
rSRCPND=0x4;
rINTPND=0x4;
pISR_TIMER0=(int)Timer0_1s;
7);
void__irqkey2_LED(void)//按键2中断服务函数
rSRCPND=0x10;
rINTPND=0x10;
rEINTPEND=0x10;
//定时中断函数
//LED初始化
rGPBDAT=0x1e0;
rGPFCON=0x22a;
rINTMSK=~(0x417);
//中断使能,开中断
rSRCPND=0x417;
rINTPND=0x417;
rEXTINT0=0x0;
rEINTMASK=~(1<
4);
rEINTPEND=0x10;
pISR_EINT0=(unsignedint)key4_LED;
pISR_EINT1=(unsignedint)key1_LED;
pISR_EINT2=(unsignedint)key3_LED;
pISR_EINT4_7=(unsignedint)key2_LED;
while
(1);
实验五:
S3C2440看门狗控制
使用看门狗定时器定时,当看门狗计数器减到0时,开发板开始复位。
S3C2440的看门狗定时器是用于当其噪声和系统错误引起的故障干扰时恢复控制器的工作。
它可以被用作通用16位内部定时器来请求中断服务。
看门狗定时器产生128个PCLK周期的复位信号。
1.首先在ADS上建立一个工程,工程名为watchdog,然后选择一个和适的路径存放。
3.新建一个源文件,命名为watchdog.c,存放到工程名为watchdog的文件夹下。
4.在watchdog.mcp下创建一个分组,取名为startcode,然后将前面拷贝的3个文件夹2440init.s,2440slib.s,nand.c依次添加到以startcode命名的文件夹下。
5.将watchdog.c添加到工程里面去。
当看门狗计数器减到0时,开发板开始复位。
通过此次试验我掌握S3C2440看门狗的工作原理,熟练掌握了看门狗来控制其他资源。
voidclk_div()
//FCLK=400MHz
//FCLK:
HCLK:
PCLK=1:
4:
8
voidDelay(unsignedintx)
void__irqwtdog_ISR()
rSRCPND=(1<
9);
rINTPND=(1<
rSUBSRCPND=(1<
13);
rGPBDAT=~(1<
intMain()
inti,light;
light=0x20;
rWTCON=(249<
/*|(~(3<
3));
//定时器的值*/
rWTDAT=50000;
//4s
rWTCNT=50000;
rWTCON|=(1<
2);
//使能定时器和中断
rINTMSK=~(1<
rINTSUBMSK=~(1<
//打开子中断,看门狗中断有两个子中断,INT_WDT(13bit),INT_AC97(14bit)
rSUBSRCPND=(1<
pISR_WDT_AC97=(unsignedint)wtdog_ISR;
while
(1)//跑马灯
for(i=0;
2;
rGPBDAT=~light;
light=light<
1;
Delay(5000);
}
light=light>
>
实验六:
S3C2440UART控制
通过查询方式,在主程序内不断的查询UART端口,当有数据来时,就接受数据,并再通过UART发送数据,然后根据接受的数据的不同,分别执行不同的内容,如点亮,熄灭led,控制蜂鸣器响或不响。
SPI,IIC和UART是最常见的三种串行总线,这三种总线都在S3C2440中被集成了。
UART用于异步通讯,可以实现全双工发送和接收。
它不仅可以实现不同嵌入式系统之间的通讯,还可以实现与PC之间的通信。
S3C2440的通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ARM 开发 实践 实验 报告 s3c2440