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

📄 uart.c

📁 基于AT91R40008开发的UART程序。以包装为函数
💻 C
字号:
/*******************************************************************************
该文件是Space OS源代码的一部分,欢迎提供意见和反馈。
版权所有 (C) 2002-2003 中国科学院空间科学与应用总体部,保留所有权利。
*******************************************************************************/
/*******************************************************************************
文件: UART.C
作者: sam
创建: 2003-06-20
版本: 1.0.0
功能: 
    与串口相关的函数定义.
相关文件:
    UART.H
*******************************************************************************/

#include "eb40a.h"
#include "uart.h"

void HalUartInit( DWORD dwBps )
{
    // First, enable the clock of the PIOB
    AT91C_BASE_PS->PS_PCER = 1 << AT91C_PS_US1;
    
	//* Define RXD and TXD as peripheral
	AT91C_BASE_PIO->PIO_PDR = AT91C_P22_RXD1 | AT91C_P21_TXD1;

    //* Disable interrupts
    AT91C_BASE_US1->US_IDR = 0xFFFFFFFF;

    //* Reset receiver and transmitter
    AT91C_BASE_US1->US_CR = AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RXDIS | AT91C_US_TXDIS;

	//* Define the baud rate divisor register
	AT91C_BASE_US1->US_BRGR = ((MCK * 10) / (dwBps * 16) + 5) / 10;
	
	//* Write the Timeguard Register
	AT91C_BASE_US1->US_TTGR = 0;

    //* Define the USART mode
	AT91C_BASE_US1->US_MR = AT91C_US_CHMODE_NORMAL 
		          | AT91C_US_NBSTOP_1_BIT
				  | AT91C_US_PAR_NONE
				  | AT91C_US_CHRL_8_BITS
				  | AT91C_US_CLKS_CLOCK;

	// Enable usart 
	AT91C_BASE_US1->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;
}

void HalUartSendByte( BYTE byData )
{
	while( (AT91C_BASE_US1->US_CSR & AT91C_US_TXRDY) == 0 )
		KeDelay( 1 );
	AT91C_BASE_US1->US_THR = byData;
}

void HalUartSendString( void* szString )
{
	CHAR* szPos;

	szPos = szString;

	while ( *szPos )
	{
		HalUartSendByte( (BYTE)*szPos );
		szPos++;
	}
}

BOOL HalUartGetByte( BYTE* pbyData )
{
	if ( (AT91C_BASE_US1->US_CSR & AT91C_US_RXRDY) != 0 )
    {
        *pbyData = (BYTE)AT91C_BASE_US1->US_RHR;
        return TRUE;
    }
    else
    {
        *pbyData = 0x00;
        return FALSE;
    }

	return FALSE;
}

⌨️ 快捷键说明

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