实验一 裸机开发环境搭建和汇编程序编程(LED灯)
.equ GPH3CON, 0XE0200C60.equ GPH3DAT, 0XE0200C64.section .text.globl _start_start:start: ldr r0,=GPH3CON ldr r1,=0x11110000 @set gpio gpg3 output mode str r1,[r0]loop: ldr r0,=GPH3DAT mov r1,#0xff str r1,[r0] ldr r0,=GPH3DAT mov r1,#0x0 str r1,[r0] ldr r0,=GPH3DAT mov r1,#0xff str r1,[r0] ldr r0,=GPH3DAT mov r1,#0xef str r1,[r0] ldr r0,=GPH3DAT mov r1,#0xdf str r1,[r0] ldr r0,=GPH3DAT mov r1,#0xbf str r1,[r0] ldr r0,=GPH3DAT mov r1,#0x7f str r1,[r0] b loop .end
实验二 GPIO控制实验(数码管)
#include "s5pc210.h"#include "uart.h"#define U8 unsigned charunsigned char seg7table[16] = { /* 0 1 2 3 4 5 6 7*/ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, /* 8 9 A B C D E F*/ 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,};/*****************************************************************************// Function name : delay// Description : 延时子程序// Return type : void// Argument : count,延时的数值*****************************************************************************/void delay( int count ){ int cnt; for( count = count; count>0; count--) for( cnt = 0; cnt < 1000; cnt++);}int main(){ uart_init(); printf("CVT S5PV210 Jtag Seg Test...\n"); int i; *((U8*) 0x88007000) = 0x00; for( ; ; ) { /* 数码管从0到F依次将字符显示出来 */ for(i=0;i<0x10;i++) { /* 查表并输出数据 */ *((U8*) 0x88009000) = seg7table[i]; delay (1000); } /* 数码管从F到0依次将字符显示出来 */ for(i=0xf;i>=0x0;i--) { /* 查表并输出数据 */ *((U8*) 0x88009000) = seg7table[i]; delay (1000); } } return 0;}
#include "s5pc210.h"#include "uart.h"#define U8 unsigned charunsigned char seg7table[16] = { /* 0 1 2 3 4 5 6 7*/ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, /* 8 9 A B C D E F*/ 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e,};/*****************************************************************************// Function name : delay// Description : 延时子程序// Return type : void// Argument : count,延时的数值*****************************************************************************/void delay( int count ){ int cnt; for( count = count; count>0; count--) for( cnt = 0; cnt < 1000; cnt++);}int main(){ uart_init(); printf("CVT S5PV210 Jtag Seg Test...\n"); int i,j=0; *((U8*) 0x88007000) = 0x00; for( ; ; ) { *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[8]; delay (1000); //delay (1); *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[7]; delay (1000); //delay (1); *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[0]; delay (1000); //delay (1); *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[9]; delay (1000); //delay (1); *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[8]; delay (1000); //delay (1); *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[4]; delay (1000); //delay (1); j=0; int k=0; for(;;){ *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[8]; //delay (1000); delay (1); *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[7]; //delay (1000); delay (1); *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[0]; //delay (1000); delay (1); *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[9]; //delay (1000); delay (1); *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[8]; //delay (1000); delay (1); *((U8*) 0x88007000) = ~(0x1<<j++); *((U8*) 0x88009000) = seg7table[4]; //delay (1500); delay (1); k++; j=0; if(k==500){ break; } } /* 数码管从0到F依次将字符显示出来 */ //for(i=0;i<0x10;i++) { /* 查表并输出数据 */ // *((U8*) 0x88009000) = seg7table[i]; // delay (1000); //} /* 数码管从F到0依次将字符显示出来 */ //for(i=0xf;i>=0x0;i--) { /* 查表并输出数据 */ // *((U8*) 0x88009000) = seg7table[i]; // delay (1000); //} } return 0;}
实验三 串口通讯实验(UART)
Main.c如下:#include "s5pc210.h"#include "uart.h"/*****************************************************************************// Function name : delay// Description : 延时子程序// Return type : void// Argument : count,延时的数值*****************************************************************************/void delay( int count ){ int cnt; for( count = count; count>0; count--) for( cnt = 0; cnt < 1000; cnt++);}int main(){ uart_init(115200); Uart_Select(2); printf("CVT S5PV210 Jtag Uart Test...\n"); while(1){ unsigned char ch = 'a'; ch = Uart_Getch(); Uart_SendByte(ch); if(ch == 0x0d) Uart_SendByte(0x0a); }}
GPA1.GPA1CON = 0X22; //enable GPA0 pin function mode UART2.UFCON2 = 0X00; //disable fifo UART2.UMCON2 = 0X00; //disable AFC UART2.ULCON2 = 0X03; //data length 8 bit UART2.UCON2 = 0X305; // UART2.UBRDIV2 = 0x23; // Baud rate divisior register 115200 UART2.UDIVSLOT2 = 0X3;
实验四 PWM实验(蜂鸣器)
#include "s5pc210.h"#include "uart.h"void delay( int count ){int cnt;for( count = count; count>0; count--) for( cnt = 0; cnt < 1000; cnt++);}int main(){uart_init();printf("CVT S5PV210 Jtag PWM Test...\n");GPD0.GPD0CON = (GPD0.GPD0CON & (~0xF000) | (0x2 << 12));//设置 Tout3 输出TIMER.TCFG0 = (TIMER.TCFG0 & ~0xFF ) | 0xFF; //配置预分频值为 256TIMER.TCFG1 = (TIMER.TCFG1 & ~0xF000) | 4 <<12;//配置分频的值为 1/16 分频TIMER.TCNTB3 = 1280;