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

📄 serial.c

📁 一个基于ARM平台的触摸屏程序。
💻 C
字号:
#include "system.h"
#include "types.h"
#include "serial.h"

//init the first series port
void serial_init()
{   
    UINT32 intm;
    UINT32 status;    //set bandrate under 38400
    HAL_WRITE_UINT32(SERIAL_BASE+BAUD_REG_LO,BAUD_RATE_2400_LO);
    HAL_WRITE_UINT32(SERIAL_BASE+BAUD_REG_HI,BAUD_RATE_2400_HI);
    
    //clear interrupt state
    //intm = STAT_XMIT_EMPT | ~(STAT_REV_AVAIL) ;
    //HAL_WRITE_UINT32(SERIAL_BASE+INT_STAT_REG,intm);
    /*
    //enable UART interrupt
    HAL_READ_UINT32(BASE_SYSTEM+INT_Unmask, status);
    status &= (~UART_BIT);
    HAL_WRITE_UINT32(BASE_SYSTEM+INT_Unmask, status);
     
    //enable Serial interrupt
    intm = EN_XMIT_EMPT | EN_REV_AVAIL ;
    HAL_WRITE_UINT32(SERIAL_BASE+INT_ENB_REG,intm);
   */
    return;    
}

//output a char whit first serial
void serial_putc( char c)
{
    UINT32   status;    //wait untile the Transmit fifo not full    unsigned long      addr;
    
    //wait for trasmitter is free
    do {
    	HAL_READ_UINT32(SERIAL_BASE+STAT_REG, status);
    } while (!(status & XMIT_EMPT));
    /*
      do {
    	HAL_READ_UINT32(SERIAL_BASE+INT_STAT_REG, status);
    } while ((status & STAT_XMIT_EMPT) == 0);
    */
    //send this char
    HAL_WRITE_UINT32(SERIAL_BASE+XMIT_DAT_REG,c);
 //   HAL_WRITE_UINT32(SERIAL_BASE+XMIT_DAT_REG,c);
          
   //wait  untill Transmit over
   /*
    do {
    	HAL_READ_UINT32(SERIAL_BASE+STAT_REG, status);
    } while (!(status & XMIT_EMPT));
  */
}

void serial_print(char * string)
{
	int len = strlen(string);
	while ((len--) >0)
		serial_putc(*string++);
}
//get char from serial port
int serial_getc(char* ch)
{
    UINT32   status; 
    char    c;
    
    ////wait for getting a new byte
   /* 
    do {
    	HAL_READ_UINT32(SERIAL_BASE+INT_STAT_REG, status);
    } while ((status & STAT_REV_AVAIL)== 0);
   */
    do {
    	HAL_READ_UINT32(SERIAL_BASE+0x0c, status);
    } while ((status & 0x02)== 0);
  
    HAL_READ_UINT32(SERIAL_BASE+REC_DAT_REG, c);
    *ch = c;
    
    //status &= ~(STAT_REV_AVAIL);
    
    //HAL_WRITE_UINT32(SERIAL_BASE+INT_STAT_REG, status);
    
    return 1;
}

int serial_get(char * buf, int len)
{
	int i;
	for (i =0 ; i < len; i++)
		serial_getc(&buf[i]);	
}

⌨️ 快捷键说明

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