对L110/F003/F005,Uart的通信时钟来自TIM。已内部完成连接。
Demo中的例程可直接使用。建议配置好后先从TXD输出信号试试。
void Uart_Ini( void )
{
M0P_SystemCtrl->PERI_CLKEN = 0XFFFFFFFF; //ENABLE ALL PERI CLOCK
//将p35 / p36 设为uart0
M0P_GPIO->P35_SEL = 0X03;
M0P_GPIO->P36_SEL = 0X03;
P35_SetOutput();
P36_SetInput();
//CONFIG uart0
M0P_UART0->SCON_f.SM01 = 0x01; //mode1
M0P_UART0->SCON_f.DBAUD = 1; //双倍波特率
M0P_UART0->SCON_f.TB8 = 0; //8bit
M0P_UART0->SCON_f.REN = 1; //tx rx enable
//ocnfig Timer0
M0P_TIM0->ARR = 65536 - 13; //115200->13
M0P_TIM0->CNT = 65536 - 13;
M0P_TIM0->CR = 0x02; //timer0 mode2
M0P_TIM0->CR |= 0x01; //timer0 start run
}
void Uart_SendByte( uint8 TxByte )
{
M0P_UART0->ICR = 0x05;
M0P_UART0->SBUF = TxByte;
while( M0P_UART0->ISR_f.TI==0 );
}
uint8 Uart_RecvByte( uint8 *pRxByte )
{
if( M0P_UART0->ISR_f.RI == 0X00 )
{
return( 0X00 );
}
else
{
M0P_UART0->ICR = 0x06; //CLEAR RI
*pRxByte = M0P_UART0->SBUF;
return( 0X01 );
}
}
|