Files
TencentOS-tiny/board/HC32L136_K8TA/BSP/Src/usart.c
supowang edb2879617 first commit for opensource
first commit for opensource
2019-09-16 13:19:50 +08:00

114 lines
2.7 KiB
C

/******************************************************************************
* Include files
******************************************************************************/
#include "usart.h"
#define SLAVEADDR 0xc0
uint8_t u8TxData[2] = {0xaa,0x55};
uint8_t u8RxData[2] = {0x00};
uint8_t u8TxCnt=0,u8RxCnt=0;
void TxIntCallback(void)
{
}
void RxIntCallback(void)
{
Uart_DisableIrq(UARTCH1,UartRxIrq);
}
void ErrIntCallback(void)
{
}
void PErrIntCallBack(void)
{
}
void CtsIntCallBack(void)
{
}
void Uart_PortInit(void)
{
stc_gpio_config_t stcGpioCfg;
DDL_ZERO_STRUCT(stcGpioCfg);
stcGpioCfg.enDir = GpioDirOut;
Gpio_Init(GpioPortA,GpioPin2,&stcGpioCfg);
Gpio_SetAfMode(GpioPortA,GpioPin2,GpioAf1);//TX
stcGpioCfg.enDir = GpioDirIn;
Gpio_Init(GpioPortA,GpioPin3,&stcGpioCfg);
Gpio_SetAfMode(GpioPortA,GpioPin3,GpioAf1);//RX
}
void usart_init(void)
{
uint16_t u16Scnt = 0;
stc_uart_config_t stcConfig;
stc_uart_irq_cb_t stcUartIrqCb;
stc_uart_multimode_t stcMulti;
stc_uart_baud_t stcBaud;
en_uart_mmdorck_t enTb8;
DDL_ZERO_STRUCT(stcConfig);
DDL_ZERO_STRUCT(stcUartIrqCb);
DDL_ZERO_STRUCT(stcMulti);
DDL_ZERO_STRUCT(stcBaud);
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);
Sysctrl_SetPeripheralGate(SysctrlPeripheralDma,TRUE);
Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1,TRUE);
Uart_PortInit();
stcUartIrqCb.pfnRxIrqCb = RxIntCallback;
stcUartIrqCb.pfnTxIrqCb = TxIntCallback;
stcUartIrqCb.pfnRxFEIrqCb = ErrIntCallback;
stcUartIrqCb.pfnPEIrqCb = PErrIntCallBack;
stcUartIrqCb.pfnCtsIrqCb = CtsIntCallBack;
stcConfig.pstcIrqCb = &stcUartIrqCb;
stcConfig.bTouchNvic = TRUE;
stcConfig.enRunMode = UartMode3;
stcConfig.enStopBit = Uart1bit;
Uart_Init(UARTCH1, &stcConfig);
Uart_SetClkDiv(UARTCH1,Uart8Or16Div);
stcBaud.u32Pclk = Sysctrl_GetPClkFreq();
stcBaud.enRunMode = UartMode3;
stcBaud.u32Baud = 9600;
u16Scnt = Uart_CalScnt(UARTCH1,&stcBaud);
Uart_SetBaud(UARTCH1,u16Scnt);
Uart_ClrIsr(UARTCH1);
//Uart_EnableIrq(UARTCH1,UartTxIrq);
//Uart_EnableIrq(UARTCH1,UartRxIrq);
Uart_EnableFunc(UARTCH1,UartTx);
Uart_DisableIrq(UARTCH1,UartRxIrq);
enTb8 = UartDataOrAddr;
Uart_SetMMDOrCk(UARTCH1,enTb8);
//Uart_ClrStatus(UARTCH1,UartTC);
}
void Debug_UartWrite(uint8_t u8Data)
{
Uart_SendData(UARTCH1,u8Data);
}
int fputc(int ch, FILE *f)
{
if (((uint8_t)ch) == '\n')
{
Debug_UartWrite('\r');
}
Debug_UartWrite(ch);
return ch;
}
/******************************************************************************
* EOF (not truncated)
******************************************************************************/