买了三星公司的 S3C44B0 很久,一直都没有时间去学习,最近兴趣来了,开始调试ARM S3C44b0 首先从IO口开始调试,程序写好了 ,通过超级终端,由串口把程序烧进flash中去,但是开发板复位之后 IO口输出的电压并不是理想的结果,而且一次复位 还没有效果,还得复位几次,IO口输出电压才会有变化,也不知道是什么原因?感觉自己一个人学习,周围都没有人交流,学习起来进步非常的慢。而且会走很多的弯路! 各位高手帮忙看看下面的程序,用过44B0的 朋友 希望你能给我一些你们调试板子的经验和 意见,非常感谢了~~~~
#include "inc\44b.h" #include "inc\option.h" #include <stdio.h>
#define U32 unsigned int #define U16 unsigned short #define S32 int #define S16 short int #define U8 unsigned char #define S8 char
/**************************************************************************** 【功能说明】通用延时函数,延时time个100us ****************************************************************************/ static int delayLoopCount = 400; void Delay(int time) { int i,adjust=0; if(time==0) { time=200; adjust=1; delayLoopCount=400; rWTCON=((MCLK/1000000-1)<<8)|(2<<3); rWTDAT=0xffff; rWTCNT=0xffff; rWTCON=((MCLK/1000000-1)<<8)|(2<<3)|(1<<5); } for(;time>0;time--) for(i=0;i<delayLoopCount;i++); if(adjust==1) { rWTCON=((MCLK/1000000-1)<<8)|(2<<3); i=0xffff-rWTCNT; delayLoopCount=8000000/(i*64); } } //*************************************************************************** /**************************************************************************** 【功能说明】IO端口功能、方向设定 PA做输出-段控制 DD1-DD10 高电平有效 PD做输出-位控制 W1-W5 低电平选通 ****************************************************************************/
/***********************IO口线初始化****************************************/ void port_ini() { rPCONA=0x000;//PA全部作为输出用 rPDATA=0x2ff; //0011 1111 1111 rPCOND=0x5555;//PD全部作为输出用 // 0101 0101 0101 0101 // rPDATA=0x00; //全部选通 rPUPD=0x00; //允许接到上拉电阻 //0101 0101 0101 0101 0101 0101 0101 0101 rPCONC=0x55555555; //PC全部作为输出 rPDATC=0xffff; rPUPC=0x0000; //接上拉电阻 }
/***************彩灯开始闪烁**************************************************/ void bianhua() { U32 i; for(i=0;i<10;i++) { rPDATA=0x2ff; rPDATD=0x80; Delay(20000); } for(i=0;i<10;i++) { rPDATA=(rPDATA|0x2ff)>>1; rPDATD=0x40; Delay(20000);Delay(20000); } for(i=0;i<10;i++) { rPDATA=(rPDATA|0x2ff)>>1; rPDATD=0x20; Delay(20000);Delay(20000); } for(i=0;i<10;i++) { rPDATA=(rPDATA|0x2ff)>>1; rPDATD=0x10; Delay(20000); Delay(20000); } for(i=0;i<10;i++) { rPDATA=(rPDATA|0x2ff)>>1; rPDATD=0x08; Delay(20000);Delay(20000); }
}
void Main() { rSYSCFG=0x0e; //使用8K字节的指令缓存 port_ini(); while(1) { bianhua(); } }
|