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

📄 main.c

📁 这是arm上面串口的驱动程序
💻 C
字号:
/*
  描  述:COM0测试程序,参考原理图中“COM/Serial”部分
  说  明:1. 测试程序接收来自串口的数据并反显给串口;
          2. 串口设置:8位长度、无校验、1位停止位、波特率为38400
          3. 系统时钟48MHZ
  记  录:1. changyj 创建工程 2007-8-29
*/

#include "../Startup/Board.h"

//  波特率
#define USART_BAUD_RATE 		38400

void  UsartInitlize();                  //  串口初始化
void  UsartTest();                      //  串口COM0测试程序

void Delay(unsigned long lDelayNum);  //  延时函数(需改善)



int main()
{
  UsartInitlize();
  UsartTest();
  return 0;
}

void Delay(unsigned long lDelayNum)
{
    while(--lDelayNum!=0);
}

void UsartInitlize()
{
  //  配置PIO控制器,定义RXD,TXD引脚
  AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, AT91C_PA5_RXD0|AT91C_PA6_TXD0, 0);

  //  允许US0(COM0)时钟频率
  AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1<<AT91C_ID_US0) ;

  //  配置COM0为:异步正常模式、MCK时钟、8位长度、无校验、1位停止位、波特率为38400
  AT91F_US_Configure (AT91C_BASE_US0, MCK,AT91C_US_ASYNC_MODE,USART_BAUD_RATE , 0);

  //  使能TX,RX
  AT91F_US_EnableTx(AT91C_BASE_US0);
  AT91F_US_EnableRx(AT91C_BASE_US0);
}


void UsartTest()
{
  int i;

  for( i=0; i<100; i++)
  {
    //  循环等待接收数据
    while(!AT91F_US_RxReady(AT91C_BASE_US0));

    //  从COM0接收数据,并重新发送给COM0
    *AT91C_US0_THR = AT91F_US_GetChar(AT91C_BASE_US0);
  }
}


⌨️ 快捷键说明

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