⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 ucos移植在S3C44BOX上的源码
💻 C
字号:
/**************************************************************************************************
*
* 作者: 胡翌博,浙江大学信电系电路与系统2001研
*
* 文件名:test.c 
*
* 版本: 5.41
*
* 功能描述:该C语言模块提供了底层硬件的测试功能
*
* 被本文件引用的文件列表:typDef.h, funcDeclare.h, <string.h>
*
* 引用本文件的文件列表:no
*
* 版本更迭:
*         日期         版本号      作者      备注
*      07-15-2003       1.0       胡翌博     --实验成功
*      07-20-2003       2.0       胡翌博     --修改了文本用户界面
*      07-27-2003       3.0       胡翌博     --进一步修改了文本用户界面
*      08-06-2003       4.0       胡翌博     --增加了模块说明文件名由boot.c更名为test.c
*      08-15-2003       5.0       胡翌博     --从SDT移植到ADS
*                                            --将C入口由C_Entry()改为main()
*                                            --去除了未使用的C库头文件stdio.h
*      08-26-2003       5.1       胡翌博     --从SDT移植到ADS
*                                            --将C入口由C_Entry()改为main()
*                                            --去除了未使用的C库头文件stdio.h
*                                            --head.h更名为funcDeclare.h,修改相应的include语句
*                                            --int boot(void)函数更名为int test(void)
*      08-28-2003       5.2       胡翌博     --将C程序入口由int C_Entry(void)改为int main(void)
*                                            --改版本未取得成功
*      08-28-2003       5.3       胡翌博     --仍然采用C_Entry作为C程序入口
*      08-29-2003       5.4       胡翌博     --增加了软复位测试
*      08-30-2003       5.41      胡翌博     --用户菜单由原来的单位十进制数改为采用双位十进制数,
*                                              这样潜在的可选项从0~9扩展到00~99
*                                            --改进了显示方式,用户每个输入都增加了回显
*                               
**************************************************************************************************/



#include "typDef.h"
#include "funcDeclare.h"
#include <string.h>

extern int test(void);

int C_Entry(void)
{
	test();
	while(1);
}



/**************************************************************************************************
函数名称:       test()
函数功能:       这是一个test程序,用于测试外设端口是否可以正常工作
		测试LED;
		测试串口;
		测试ROM
		测试软件复位
		
				
入口参数:       number    指定位置的led.(0-7)
返 回 值:       无.
备    注:       
**************************************************************************************************/
int test(void)
{
    UINT16  i;                 //UINT16 means unsigned short(16 bits)
    char *pBuff = NULL;        //送给串口的字符串指针
    char datBuf[1024];         //接收大片数据的缓存,用于缓存从串口或其他存储块接收到的大片数据
    char whS[4];               //用户选择测试项缓存,字符形式   
    UINT16 *pFlash;
    UINT16 *pTmp;
    int secNum;                //段号,数值形式
    int testNum;               //测试选项号,数值形式

//测试LED
    ledAllOn();                //点亮GPIO上所有的led.
    delayMs(300);
    ledAllOff();               //熄灭GPIO上所有的led.
    ledRun(1);                 //循环点亮1次led.
    ledAllOff();               //熄灭GPIO上所有的led.
    
//测试串口
    if(uartDevInit(0) == ERROR) 
    {
    	ledAllOn();
    	return  ERROR;
    }
    pBuff = "\r\n\r\n\r\nLED 正常!\r\n";           
    armUartWrite(0, pBuff, strlen(pBuff));   		//从串口0打印信息.
    pBuff = "UART0 正常!\r\n";           
    armUartWrite(0, pBuff, strlen(pBuff));   		//从串口0打印信息.
    ledShine(0);                                    //LED0亮表明UART0自检通过

/*
    if(uartDevInit(1) == ERROR) 
    {
      ledAllOn();
      return  ERROR;
    }
    pBuff = "UART1 正常!\r\n";           
    armUartWrite(0, pBuff, strlen(pBuff));   		//从串口1打印信息.
    ledShine(0);                                    //LED1亮表明UART1自检通过
*/  


//测试服务菜单
    while(1)
    {   //请求用户选择测试项
    	pBuff="\r\n请选择您要测试的项目:\r\n";
    	armUartWrite(0, pBuff, strlen(pBuff));
    	pBuff="00:退出初始化测试引导程序\r\n";
    	armUartWrite(0, pBuff, strlen(pBuff));
    	pBuff="01:片擦除Flash\r\n";
    	armUartWrite(0, pBuff, strlen(pBuff));
    	pBuff="02:段擦除Flash\r\n";
    	armUartWrite(0, pBuff, strlen(pBuff));
    	pBuff="03:编程Flash\r\n";
    	armUartWrite(0, pBuff, strlen(pBuff));
    	pBuff="04:软复位\r\n";
    	armUartWrite(0, pBuff, strlen(pBuff));
    	armUartRead(0,whS, 1);                     //读入十位数字
    	armUartWrite(0, whS, 1);                   //回显十位数字
    	testNum=(whS[0]-'0')*10;                    //计算十位数字的数值
    	armUartRead(0,whS, 1);                     //读入个位数字
    	whS[1]='\r';
    	whS[2]='\n';
    	armUartWrite(0, whS, 3);                   //回显个位数字,然后回车换行
    	testNum=testNum+(whS[0]-'0');                //计算个位数字的数值,并与十位数字的数值相加,得到测试选项的数值
    	switch(testNum)
    	{
    		case 0: //退出boot
    		  pBuff="\r\n有空一定要来喝茶呀!\r\n";
    		  armUartWrite(0, pBuff,strlen(pBuff));
    		  ledAllOff();                            //退出boot之前,LED全部熄灭
    		  return OK;
    		case 1: //片擦除Flash
    		  pBuff="\r\n正在片擦除,这可能需要较长时间...\r\n";
    		  armUartWrite(0, pBuff, strlen(pBuff));
    		  if(amChipErase() != OK)                           //擦除整片flash.
    		  {
    		  	pBuff="片擦除失败!\r\n别伤心,这也是常有的事:)\r\n";
    		  	armUartWrite(0, pBuff, strlen(pBuff));
    		  	break;
    		  }
    		  ledShine(1);                                  //LED1亮,片擦除Flash成功                    
    		  pBuff="片擦除成功!\r\n";
    		  armUartWrite(0, pBuff, strlen(pBuff));   			//从串口0打印信息.
    		  break;
    		case 2://段擦除Flash
    		  pBuff="\r\n请选择要擦除的段

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -