You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
2.6 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "SWM221.h"
void SerialInit(void);
int main(void)
{
uint32_t res, i;
UART_InitStructure UART_initStruct;
SystemInit();
SerialInit();
PORT_Init(PORTA, PIN4, PORTA_PIN4_UART1_TX, 0); //GPIOA.4配置为UART0 TXD
PORT_Init(PORTA, PIN5, PORTA_PIN5_UART1_RX, 1); //GPIOA.5配置为UART0 RXD
UART_initStruct.Baudrate = 9600;
UART_initStruct.DataBits = UART_DATA_8BIT;
UART_initStruct.Parity = UART_PARITY_NONE;
UART_initStruct.StopBits = UART_STOP_1BIT;
UART_initStruct.RXThreshold = 3;
UART_initStruct.RXThresholdIEn = 0;
UART_initStruct.TXThreshold = 3;
UART_initStruct.TXThresholdIEn = 0;
UART_initStruct.TimeoutTime = 10;
UART_initStruct.TimeoutIEn = 0;
UART_Init(UART1, &UART_initStruct);
UART_Open(UART1);
/* 测试说明
* 将UART0_TX脚连接到UART1_RXUART0波特率57600UART1波特率9600
* 让UART0发送0xF8UART1通过测量0xF8自动计算出波特率将自己的波特率设为57600
****************************************************************************/
while(1==1)
{
UART_ABRStart(UART1, 0xF8);
while((res = UART_ABRIsDone(UART1)) == 0)
{
UART_WriteByte(UART0, 0xF8);
while(UART_IsTXBusy(UART0));
}
if(res == UART_ABR_RES_OK) printf("AutoBaud OK\r\n");
else printf("AutoBaud Error\r\n");
printf("UART0 Baud Reg: %d\r\n", UART_GetBaudrate(UART0));
printf("UART1 Baud Reg: %d\r\n", UART_GetBaudrate(UART1));
for(i = 0; i < 1000000; i++);
}
}
void SerialInit(void)
{
UART_InitStructure UART_initStruct;
PORT_Init(PORTA, PIN0, PORTA_PIN0_UART0_RX, 1); //GPIOA.0配置为UART0 RXD
PORT_Init(PORTA, PIN1, PORTA_PIN1_UART0_TX, 0); //GPIOA.1配置为UART0 TXD
UART_initStruct.Baudrate = 57600;
UART_initStruct.DataBits = UART_DATA_8BIT;
UART_initStruct.Parity = UART_PARITY_NONE;
UART_initStruct.StopBits = UART_STOP_1BIT;
UART_initStruct.RXThreshold = 3;
UART_initStruct.RXThresholdIEn = 0;
UART_initStruct.TXThreshold = 3;
UART_initStruct.TXThresholdIEn = 0;
UART_initStruct.TimeoutTime = 10;
UART_initStruct.TimeoutIEn = 0;
UART_Init(UART0, &UART_initStruct);
UART_Open(UART0);
}
/******************************************************************************************************************************************
* 函数名称: fputc()
* 功能说明: printf()使用此函数完成实际的串口打印动作
* 输 入: int ch 要打印的字符
* FILE *f 文件句柄
* 输 出: 无
* 注意事项: 无
******************************************************************************************************************************************/
int fputc(int ch, FILE *f)
{
UART_WriteByte(UART0, ch);
while(UART_IsTXBusy(UART0));
return ch;
}