refactor: main.cpp中UART全面改用C++ UartBus类
This commit is contained in:
+30
-87
@@ -35,62 +35,6 @@ static void led_pattern(uint8_t p)
|
||||
lm.led(3).on();
|
||||
}
|
||||
|
||||
static void init_usart0(void)
|
||||
{
|
||||
rcu_periph_clock_enable(RCU_GPIOA);
|
||||
rcu_periph_clock_enable(RCU_USART0);
|
||||
|
||||
gpio_af_set(GPIOA, GPIO_AF_7, GPIO_PIN_9 | GPIO_PIN_10);
|
||||
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_9 | GPIO_PIN_10);
|
||||
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
|
||||
|
||||
usart_deinit(USART0);
|
||||
usart_baudrate_set(USART0, 9600U);
|
||||
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
|
||||
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
|
||||
usart_enable(USART0);
|
||||
}
|
||||
|
||||
static void uart_putchar(char c)
|
||||
{
|
||||
usart_data_transmit(USART0, (uint8_t)c);
|
||||
while (RESET == usart_flag_get(USART0, USART_FLAG_TBE))
|
||||
;
|
||||
}
|
||||
|
||||
static void uart_puts(const char *s)
|
||||
{
|
||||
while (*s)
|
||||
uart_putchar(*s++);
|
||||
}
|
||||
|
||||
static void uart_putdec(uint32_t val)
|
||||
{
|
||||
char buf[16];
|
||||
int idx = 0;
|
||||
if (val == 0)
|
||||
{
|
||||
uart_puts("0");
|
||||
return;
|
||||
}
|
||||
while (val > 0)
|
||||
{
|
||||
buf[idx++] = '0' + (val % 10);
|
||||
val /= 10;
|
||||
}
|
||||
while (idx > 0)
|
||||
uart_putchar(buf[--idx]);
|
||||
}
|
||||
|
||||
static void reinit_usart0_168m(void)
|
||||
{
|
||||
usart_deinit(USART0);
|
||||
usart_baudrate_set(USART0, 9600U);
|
||||
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
|
||||
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
|
||||
usart_enable(USART0);
|
||||
}
|
||||
|
||||
static void test_sdram_driver(void)
|
||||
{
|
||||
printf("SDRAM 驱动测试开始...\r\n");
|
||||
@@ -492,25 +436,27 @@ int main(void)
|
||||
LedManager::instance().init_all();
|
||||
led_pattern(0x01);
|
||||
|
||||
init_usart0();
|
||||
{
|
||||
UartConfig cfg;
|
||||
cfg.baudrate = 9600;
|
||||
UartBus::default_instance().init(cfg);
|
||||
}
|
||||
led_pattern(0x03);
|
||||
|
||||
uart_puts("\r\n===== LSPi Board Bring-Up =====\r\n");
|
||||
uart_puts("Early boot: LED + UART at 16MHz\r\n");
|
||||
printf("\r\n===== LSPi Board Bring-Up =====\r\n");
|
||||
printf("Early boot: LED + UART at 16MHz\r\n");
|
||||
|
||||
uint32_t cs = RCU_CFG0 & RCU_CFG0_SCS;
|
||||
uart_puts("Clock source: ");
|
||||
printf("Clock source: ");
|
||||
if (cs == RCU_SCSS_IRC16M)
|
||||
uart_puts("IRC16M (16MHz)\r\n");
|
||||
printf("IRC16M (16MHz)\r\n");
|
||||
else if (cs == RCU_SCSS_HXTAL)
|
||||
uart_puts("HXTAL (25MHz)\r\n");
|
||||
printf("HXTAL (25MHz)\r\n");
|
||||
else if (cs == RCU_SCSS_PLLP)
|
||||
uart_puts("PLL (168MHz)\r\n");
|
||||
printf("PLL (168MHz)\r\n");
|
||||
else
|
||||
uart_puts("UNKNOWN\r\n");
|
||||
uart_puts("SystemCoreClock: ");
|
||||
uart_putdec(SystemCoreClock);
|
||||
uart_puts(" Hz\r\n");
|
||||
printf("UNKNOWN\r\n");
|
||||
printf("SystemCoreClock: %lu Hz\r\n", SystemCoreClock);
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
@@ -519,40 +465,37 @@ int main(void)
|
||||
LedManager::instance().led(1).off();
|
||||
delay_16m(200);
|
||||
}
|
||||
uart_puts("LED blink OK\r\n");
|
||||
printf("LED blink OK\r\n");
|
||||
|
||||
uart_puts("Initializing hardware...\r\n");
|
||||
printf("Initializing hardware...\r\n");
|
||||
led_pattern(0x05);
|
||||
|
||||
HardwareInit::init();
|
||||
|
||||
reinit_usart0_168m();
|
||||
|
||||
cs = RCU_CFG0 & RCU_CFG0_SCS;
|
||||
uart_puts("Clock after init: ");
|
||||
if (cs == RCU_SCSS_PLLP)
|
||||
uart_puts("PLL (168MHz)\r\n");
|
||||
else
|
||||
uart_puts("UNKNOWN\r\n");
|
||||
uart_puts("SystemCoreClock: ");
|
||||
uart_putdec(SystemCoreClock);
|
||||
uart_puts(" Hz\r\n");
|
||||
|
||||
led_pattern(0x07);
|
||||
uart_puts("LedManager OK\r\n");
|
||||
|
||||
led_pattern(0x09);
|
||||
{
|
||||
UartConfig cfg;
|
||||
cfg.baudrate = 9600;
|
||||
UartBus::default_instance().init(cfg);
|
||||
}
|
||||
uart_puts("UartBus init OK\r\n");
|
||||
|
||||
cs = RCU_CFG0 & RCU_CFG0_SCS;
|
||||
printf("Clock after init: ");
|
||||
if (cs == RCU_SCSS_PLLP)
|
||||
printf("PLL (168MHz)\r\n");
|
||||
else
|
||||
printf("UNKNOWN\r\n");
|
||||
printf("SystemCoreClock: %lu Hz\r\n", SystemCoreClock);
|
||||
|
||||
led_pattern(0x07);
|
||||
printf("LedManager OK\r\n");
|
||||
|
||||
led_pattern(0x09);
|
||||
printf("UartBus init OK\r\n");
|
||||
|
||||
led_pattern(0x0B);
|
||||
systick_config();
|
||||
delay_1ms(500);
|
||||
uart_puts("SysTick OK, delay_1ms available\r\n");
|
||||
printf("SysTick OK, delay_1ms available\r\n");
|
||||
|
||||
led_pattern(0x0C);
|
||||
printf("\r\n========================================\r\n");
|
||||
|
||||
Reference in New Issue
Block a user