HI3531串口测试程序(arm)

时间:2023-03-10 00:36:37
HI3531串口测试程序(arm)

#include<stdio.h>

unsigned int UART0_ADDR = 0x20080000;

unsigned int retu=0;

int i=0;

void delay_x(unsigned short cycles)

{    

    unsigned short t;

    t = cycles;

    while ( --t != 0 );

}

int  main()

{

///////////初始化部分////////////////////////////////////////////////////

    retu = *(unsigned int *)(UART0_ADDR  + 0X30);//uart_cr

    *(unsigned int *)(UART0_ADDR  + 0X30) = 0x300;

  //  retu = *(unsigned int *)(UART0_ADDR  + 0X24);//ibrd

  //  retu = *(unsigned int *)(UART0_ADDR  + 0X28);//fbrd

   *(unsigned int *)(UART0_ADDR  + 0X24) = 1;

   *(unsigned int *)(UART0_ADDR  + 0X28) = 40;

   *(unsigned int *)(UART0_ADDR  + 0X30) = 0x300;

  

   *(unsigned int *)(UART0_ADDR  + 0X2c) = 0x60;//UART_LCR_H

   *(unsigned int *)(UART0_ADDR  + 0X34) = 0x12; //UART_IFLS

   *(unsigned int *)(UART0_ADDR  + 0X38) = 0x0;//UART_IMSC

  

  

    retu = *(unsigned int *)(UART0_ADDR  + 0X30);//uart_cr

   

    *(unsigned int *)(UART0_ADDR  + 0X30) = retu | 0x01;//使能串口

//////////////////////////////////////////////////////////   

    while(1)

    {

   // retu = *(unsigned int *)(UART0_ADDR  + 0X18);

  //  retu = retu&0x40;

    if(((*(unsigned int *)(UART0_ADDR  + 0X18))&0x40)==0x40)

    {

        retu = *(unsigned int *)(UART0_ADDR  + 0X00);

        retu = retu&0xff;

        *(unsigned int *)(UART0_ADDR  + 0X00) = retu;

    }

    retu = 0;

    delay_x(0X7000);

    }

    return 0;

}