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();
|
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)
|
static void test_sdram_driver(void)
|
||||||
{
|
{
|
||||||
printf("SDRAM 驱动测试开始...\r\n");
|
printf("SDRAM 驱动测试开始...\r\n");
|
||||||
@@ -492,25 +436,27 @@ int main(void)
|
|||||||
LedManager::instance().init_all();
|
LedManager::instance().init_all();
|
||||||
led_pattern(0x01);
|
led_pattern(0x01);
|
||||||
|
|
||||||
init_usart0();
|
{
|
||||||
|
UartConfig cfg;
|
||||||
|
cfg.baudrate = 9600;
|
||||||
|
UartBus::default_instance().init(cfg);
|
||||||
|
}
|
||||||
led_pattern(0x03);
|
led_pattern(0x03);
|
||||||
|
|
||||||
uart_puts("\r\n===== LSPi Board Bring-Up =====\r\n");
|
printf("\r\n===== LSPi Board Bring-Up =====\r\n");
|
||||||
uart_puts("Early boot: LED + UART at 16MHz\r\n");
|
printf("Early boot: LED + UART at 16MHz\r\n");
|
||||||
|
|
||||||
uint32_t cs = RCU_CFG0 & RCU_CFG0_SCS;
|
uint32_t cs = RCU_CFG0 & RCU_CFG0_SCS;
|
||||||
uart_puts("Clock source: ");
|
printf("Clock source: ");
|
||||||
if (cs == RCU_SCSS_IRC16M)
|
if (cs == RCU_SCSS_IRC16M)
|
||||||
uart_puts("IRC16M (16MHz)\r\n");
|
printf("IRC16M (16MHz)\r\n");
|
||||||
else if (cs == RCU_SCSS_HXTAL)
|
else if (cs == RCU_SCSS_HXTAL)
|
||||||
uart_puts("HXTAL (25MHz)\r\n");
|
printf("HXTAL (25MHz)\r\n");
|
||||||
else if (cs == RCU_SCSS_PLLP)
|
else if (cs == RCU_SCSS_PLLP)
|
||||||
uart_puts("PLL (168MHz)\r\n");
|
printf("PLL (168MHz)\r\n");
|
||||||
else
|
else
|
||||||
uart_puts("UNKNOWN\r\n");
|
printf("UNKNOWN\r\n");
|
||||||
uart_puts("SystemCoreClock: ");
|
printf("SystemCoreClock: %lu Hz\r\n", SystemCoreClock);
|
||||||
uart_putdec(SystemCoreClock);
|
|
||||||
uart_puts(" Hz\r\n");
|
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
@@ -519,40 +465,37 @@ int main(void)
|
|||||||
LedManager::instance().led(1).off();
|
LedManager::instance().led(1).off();
|
||||||
delay_16m(200);
|
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);
|
led_pattern(0x05);
|
||||||
|
|
||||||
HardwareInit::init();
|
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;
|
UartConfig cfg;
|
||||||
cfg.baudrate = 9600;
|
cfg.baudrate = 9600;
|
||||||
UartBus::default_instance().init(cfg);
|
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);
|
led_pattern(0x0B);
|
||||||
systick_config();
|
systick_config();
|
||||||
delay_1ms(500);
|
delay_1ms(500);
|
||||||
uart_puts("SysTick OK, delay_1ms available\r\n");
|
printf("SysTick OK, delay_1ms available\r\n");
|
||||||
|
|
||||||
led_pattern(0x0C);
|
led_pattern(0x0C);
|
||||||
printf("\r\n========================================\r\n");
|
printf("\r\n========================================\r\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user