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

📄 uart.c

📁 东南大学开发ARM7芯片sep4020的key+tft程序代码
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <stdio.h>
#include "hardware_reg.h"
#include "HA_typedef.h"
#include "uart.h"
#include <stdio.h>
#include "intc.h"


void Prints(char *s,U32 uart_add);
void Uart0IntEn(S8 recie, S8 thrie);


UartResetTest  ret_f;
UartRwTest     rwt_f;
UartResetTest  *ret_pt=&ret_f;
UartRwTest     *rwt_pt=&rwt_f;

void UartPcTest(U32 uart_add,U32 sysclk,U32 baudrate,U32 data_bit,U32 tri_level_t,U32 tri_level_r);

/*************************************************************************/
/*  FUNCTION                                                             */
/*                                                                       */
/*       TestUart                                                        */
/*                                                                       */
/*  DESCRIPTION                                                          */
/*                                                                       */
/*       该函数的作用是用来选择UART测试通道对其使能。                    */
/*                                                                       */
/*  AUTHOR                                                               */
/*                                                                       */
/*       QI Haochun, ASIC&Prochip.                                       */
/*                                                                       */
/*  INPUTS                                                               */
/*                                                                       */
/*       char uart_choise                                                */
/*                                                                       */
/*  OUTPUTS                                                              */
/*                                                                       */
/*       None                                                            */
/*                                                                       */
/*                                                                       */
/*************************************************************************/

void TestUart(char uart_choise,U32 *uart_name)    //1:为uart0,2:为uart1,3:为uart2,4:为uart3,

{
  U32 uart_add;
  char uart_int;


  switch (uart_choise)
  
  {
    case 1:
      uart_add = 0x10005000; 
      uart_int = 24;
      break;
    case 2:
      uart_add = 0x10006000;
      uart_int = 23;
      break;
    case 3:
      uart_add = 0x10007000;
      uart_int = 22;
      break;
    case 4:
      uart_add = 0x10008000;
      uart_int = 21;
      break;
    default:
      uart_add = 0x10005000;
      uart_int = 24;
      break;

  }
    *uart_name = uart_add;


  	MaskIrq(uart_int);
                          //中断使能
	IrqEnable(uart_int);
  	//UartLoopbackTest(4000000,9600,8,1);         //LOOPBACK模式

  	ReadReg((uart_add + 0x14));

  	ReadReg((uart_add + 0x08));

  	WriteReg((uart_add + 0x08), 0x6);

  	WriteReg((uart_add + 0x10), 0x0);
 
  	UartPcTest(uart_add,40000000,9600,8,0,8);     //普通模式

 
	//UartInit3(16000000, 9600, 8, 0, 8);          //硬件流控模式
						
  	
  	UnmaskIrq(uart_int);
  	

}



/*************************************************************************/
/*  FUNCTION                                                             */
/*                                                                       */
/*       Pmu                                                             */
/*                                                                       */
/*  DESCRIPTION                                                          */
/*                                                                       */
/*       该函数的作用是用来配置PMU。                                     */
/*                                                                       */
/*  AUTHOR                                                               */
/*                                                                       */
/*       QI Haochun, ASIC&Prochip.                                       */
/*                                                                       */
/*  INPUTS                                                               */
/*                                                                       */
/*       None                                                            */
/*                                                                       */
/*  OUTPUTS                                                              */
/*                                                                       */
/*       None                                                            */
/*                                                                       */
/*                                                                       */
/*************************************************************************/

void Pmu(void)

{
  int i;

  //*************************************************//
  //***************** set to normal *****************//
  //*************************************************//
  *(RP)PMU_PSCR = 0x1ffff;      //打开所有时钟
  *(RP)PMU_PLTR = 0X00FA00FA;
  
  *(RP)PMU_PMDR = 0X01;
  //*(RP)PMU_PMCR = 0x7A8;      // 7A8 -- 16M
  *(RP)PMU_PMCR = 0x00A;        // 00A -- 40M
  *(RP)PMU_PMDR = 0x01;         //设置为普通工作模式
  for (i = 0; i < 10; i++)
  ;

}



/*************************************************************************/
/*  FUNCTION                                                             */
/*                                                                       */
/*       WriteReg          ReadReg                                       */
/*                                                                       */
/*  DESCRIPTION                                                          */
/*                                                                       */
/*       该函数的作用是用来描述寄存器的读和写。                          */
/*                                                                       */
/*  AUTHOR                                                               */
/*                                                                       */
/*       QI Haochun, ASIC&Prochip.                                       */
/*                                                                       */
/*  INPUTS                                                               */
/*                                                                       */
/*       U32 reg,U32 data                                                */
/*                                                                       */
/*  OUTPUTS                                                              */
/*                                                                       */
/*       None                                                            */
/*                                                                       */
/*                                                                       */
/*************************************************************************/
/********************write and read registers*****************************/

void WriteReg(U32 reg,U32 data) 

{
	*(RP)reg = data;
}


U32 ReadReg(U32 reg) 

{
	return (*(RP)reg);
}




/*************************************************************************/
/*  FUNCTION                                                             */
/*                                                                       */
/*      UartReset                                                        */
/*                                                                       */
/*  DESCRIPTION                                                          */
/*                                                                       */
/*      该函数的作用是用来测试寄存器的复位值。                           */
/*                                                                       */
/*  AUTHOR                                                               */
/*                                                                       */
/*      QI Haochun, ASIC&Prochip.                                        */
/*                                                                       */
/*  INPUTS                                                               */
/*                                                                       */
/*      U32 DLBL,U32 RxFIFO,U32 TxFIFO,U32 DLBH,U32 IER,                 */
/*      U32 IIR,U32 FCR,U32 LCR,U32 MCR,U32 LSR,U32 MSR.                 */
/*                                                                       */
/*  OUTPUTS                                                              */
/*                                                                       */
/*      1                                                                */
/*      0                                                                */
/*                                                                       */
/*************************************************************************/
/********************test point 1:test reset values of all registers******/
/*************************************************************************/

U32 UartReset(UartResetTest *urt_pt)

{	
	
	 if	(  (ReadReg  (urt_pt->DLBL)==0) 
		
		 &&(ReadReg  (urt_pt->RxFIFO)==0)
		 &&(ReadReg  (urt_pt->TxFIFO)==0)
		 &&(ReadReg  (urt_pt->DLBH)==0)
		 &&(ReadReg  (urt_pt->IER)==0)
		 &&(ReadReg  (urt_pt->IIR)==0x01) 
	 	 &&(ReadReg  (urt_pt->LCR)==0)
		 &&(ReadReg  (urt_pt->MCR)==0)
		 &&(ReadReg  (urt_pt->LSR)==0x60) 
		
		)
	 	
	 	return 1;
	 else
	 	return 0;	 
}




/*************************************************************************/
/*  FUNCTION                                                             */
/*                                                                       */
/*       UartRw                                                          */
/*                                                                       */
/*  DESCRIPTION                                                          */
/*                                                                       */
/*       该函数的作用是用来测试寄存器的读和写的值。                      */
/*                                                                       */
/*                                                                       */
/*  AUTHOR                                                               */
/*                                                                       */
/*       QI Haochun, ASIC&Prochip.                                       */
/*                                                                       */
/*  INPUTS                                                               */

⌨️ 快捷键说明

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