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

📄 ha_print.c

📁 nandflash的烧录
💻 C
字号:
/*
********************************************************************************************
*file/function name: FILE NAME HA_PRINT.C
*function parameters type and requirement:NO 
*return type:NO
*description:PROGRAM THE FUNCTION: ER HA_PRINT( U32 ADD, U32 ERROR_CODE ),THE FUNCTION USED TO VERITIFY THE HARDWARE
*modify history:CREATED BY LC,2003-4-2 15:17
*misc
********************************************************************************************
*/
#include "HA_typedef.h"
#include "hardware_reg.h"
#include "hardware.h"


/*
********************************************************************************************
*file /functionname:FUNCTION NAME ER HA_PRINT( U32 ADD, U32 ERROR_CODE )
*function parameters type and requirement:
*return type:
*description:
*modify history:  LC CREATED 2003-4-2 15:43
*misc
********************************************************************************************
*/

extern ER print( U32 addr, U32 errsymb )
{
	
	
	#ifndef RELEASE_CODE
	if( ( addr < (U32)HA_ERRORBASE ) || (addr > (U32)HA_ERRORTOP)  )
		{
			return (ER)E_PAR;
		}
		else;
	#endif
	
	*(RP)addr = errsymb;
	
	return E_OK;
	
}


	
/*
*this function is esed to print the data(ascii code) to the UART
*/
extern ER print_num( U32 addr, U32 num )
{
	U32	D31_28, D27_24, D23_20, D19_16, D15_12, D11_8,D7_4, D3_0; 
	U32 i;
	U32 mask;
	
	mask = 	*(RP)(INTC_IMSK);	//remain  mask reg
	*(RP)(INTC_IMSK)=-1UL;		//mask all int

	for(i=0; i<10000; i++);
	//write_reg(UART1_THR, 0x45);	//SEND E
	//write_reg(UART1_THR, 0x52);	//SEND R
	write_reg(UART1_THR, 78);	//SEND n
	write_reg(UART1_THR, 117);	//SEND u
	write_reg(UART1_THR, 109);	//SEND m
	write_reg(UART1_THR, 98);	//SEND b
	write_reg(UART1_THR, 101);	//SEND e
	write_reg(UART1_THR, 114);	//SEND r
	
	write_reg(UART1_THR, 0x3A);  //SEND :

	for(i=0; i<10000; i++);
	D31_28 = (addr & 0XF0000000 ) >> 28;  //8
	D27_24 = (addr & 0X0F000000 ) >> 24;  //7
	D23_20 = (addr & 0X00F00000 ) >> 20;  //6
	D19_16 = (addr & 0X000F0000 ) >> 16;  //5
	D15_12 = (addr & 0X0000F000 ) >> 12;        //4
	D11_8   = (addr  &  0X00000F00 ) >> 8;  
	D7_4    =  (addr    & 0X000000F0)   >> 4;  
	D3_0    =  ( addr   & 0X0000000F ) ;  
	
	write_reg(UART1_THR, 0x30);
	write_reg(UART1_THR, 0x58); //send 0x
/////////////////////////////////////////////////8
	if( D31_28 <= 9 )   //IS NUMBER
		{
			D31_28= D31_28 + 0X30;
		}
	else     //IS ALPHA
		{
			D31_28 = D31_28 + 0X37;
		}
	write_reg(UART1_THR, D31_28);
//////////////////////////////////////////////7
	if( D27_24 <= 9 )   //IS NUMBER
		{
			D27_24= D27_24 + 0X30;
		}
	else     //IS ALPHA
		{
			D27_24 = D27_24 + 0X37;
		}
	write_reg(UART1_THR, D27_24);
///////////////////////////////////////////////6
	if( D23_20 <= 9 )   //IS NUMBER
		{
			D23_20= D23_20 + 0X30;
		}
	else     //IS ALPHA
		{
			D23_20 = D23_20 + 0X37;
		}
	write_reg(UART1_THR, D23_20);
	
///////////////////////////////////////////////5
	if( D19_16 <= 9 )   //IS NUMBER
		{
			D19_16= D19_16 + 0X30;
		}
	else     //IS ALPHA
		{
			D19_16 = D19_16 + 0X37;
		}
	write_reg(UART1_THR, D19_16);
	
/////////////////////////////////////////////
	write_reg(UART1_THR, 0x5F);

	
/////////////////////////////////////////4
	if( D15_12 <= 9 )   //IS NUMBER
		{
			D15_12= D15_12 + 0X30;
		}
	else     //IS ALPHA
		{
			D15_12 = D15_12 + 0X37;
		}
	write_reg(UART1_THR, D15_12);
	
////////////////////////////////////////////3
	if( D11_8 <= 9 )   //IS NUMBER
		{
			D11_8= D11_8 + 0X30;
		}
	else     //IS ALPHA
		{
			D11_8 = D11_8 + 0X37;
		}
	write_reg(UART1_THR, D11_8);
	
///////////////////////////////////////////2
	if( D7_4 <= 9 )   //IS NUMBER
		{
			D7_4= D7_4 + 0X30;
		}
	else     //IS ALPHA
		{
			D7_4 = D7_4 + 0X37;
		}
	write_reg(UART1_THR, D7_4);
	
///////////////////////////////////////////////////1
	if( D3_0 <= 9 )   //IS NUMBER
		{
			D3_0= D3_0 + 0X30;
		}
	else     //IS ALPHA
		{
			D3_0 = D3_0 + 0X37;
		}
	write_reg(UART1_THR, D3_0);
	
/////////////////////////////////////////////////////

	write_reg(UART1_THR, 0x1);   //SEND YANG
	write_reg(UART1_THR, 0x30);
	write_reg(UART1_THR, 0x58); //send 0x
	for(i=0; i<10000; i++);


//////////send the ERROR CODE
	D31_28 = (num & 0XF0000000 ) >> 28;  //8
	D27_24 = (num & 0X0F000000 ) >> 24;  //7
	D23_20 = (num & 0X00F00000 ) >> 20;  //6
	D19_16 = (num & 0X000F0000 ) >> 16;  //5
	D15_12 = (num & 0X0000F000 ) >> 12;        //4
	D11_8   = (num  &  0X00000F00 ) >> 8;  
	D7_4    =  (num    & 0X000000F0)   >> 4;  
	D3_0    =  ( num   & 0X0000000F ) ;  
	
/////////////////////////////////////////////////8

	if( D31_28 <= 9 )   //IS NUMBER
		{
			D31_28= D31_28 + 0X30;
		}
	else     //IS ALPHA
		{
			D31_28 = D31_28 + 0X37;
		}
	write_reg(UART1_THR, D31_28);
	
	
//////////////////////////////////////////////7
	if( D27_24 <= 9 )   //IS NUMBER
		{
			D27_24= D27_24 + 0X30;
		}
	else     //IS ALPHA
		{
			D27_24 = D27_24 + 0X37;
		}
	write_reg(UART1_THR, D27_24);
	
///////////////////////////////////////////////6
	if( D23_20 <= 9 )   //IS NUMBER
		{
			D23_20= D23_20 + 0X30;
		}
	else     //IS ALPHA
		{
			D23_20 = D23_20 + 0X37;
		}
	write_reg(UART1_THR, D23_20);
	
///////////////////////////////////////////5
	if( D19_16 <= 9 )   //IS NUMBER
		{
			D19_16= D19_16 + 0X30;
		}
	else     //IS ALPHA
		{
			D19_16 = D19_16 + 0X37;
		}
	write_reg(UART1_THR, D19_16);
	
	
/////////////////////////////
	write_reg(UART1_THR, 0x5f);
	
	
/////////////////////////////////////////4
	if( D15_12 <= 9 )   //IS NUMBER
		{
			D15_12= D15_12 + 0X30;
		}
	else     //IS ALPHA
		{
			D15_12 = D15_12 + 0X37;
		}
	write_reg(UART1_THR, D15_12);
	
////////////////////////////////////////////3
	if( D11_8 <= 9 )   //IS NUMBER
		{
			D11_8= D11_8 + 0X30;
		}
	else     //IS ALPHA
		{
			D11_8 = D11_8 + 0X37;
		}
	write_reg(UART1_THR, D11_8);
	
///////////////////////////////////////////2
	if( D7_4 <= 9 )   //IS NUMBER
		{
			D7_4= D7_4 + 0X30;
		}
	else     //IS ALPHA
		{
			D7_4 = D7_4 + 0X37;
		}
	write_reg(UART1_THR, D7_4);
	
///////////////////////////////////////////////////1
	if( D3_0 <= 9 )   //IS NUMBER
		{
			D3_0= D3_0 + 0X30;
		}
	else     //IS ALPHA
		{
			D3_0 = D3_0 + 0X37;
		}
	write_reg(UART1_THR, D3_0);
	
/////////////////////////////////////////////////////

	write_reg(UART1_THR, 0X0D);
	write_reg(UART1_THR, 0X0A);		//\n

	for(i=0; i<10000; i++);
	*(RP)(INTC_IMSK)= mask; 	//resume mask reg

	return E_OK;

	
}


//***********************************************************
//FPGA print function
//***********************************************************
		
extern ER prints(char *s)
{
	int i;
	//U32 mask;
	
	//mask = 	*(RP)(INTC_IMSK);	//remain  mask reg
	//*(RP)(INTC_IMSK)=-1UL;		//mask all int
	
	while(*s != '\0')
	{
		{
			*(RP)UART1_THR = *s++;
		}
		
		for(i=0; i<5000; i++);
	}
	*(RP)UART1_THR = '\n';
	
	//*(RP)(INTC_IMSK)= mask; 	//resume mask reg
	
	return E_OK;
}

⌨️ 快捷键说明

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