stm32f0: usart: generalise initialisation
This commit is contained in:
parent
652a90aab8
commit
eaa61e50af
1 changed files with 31 additions and 16 deletions
|
@ -130,28 +130,43 @@ static ssize_t usart_write(void *cookie, const char *buf, size_t n)
|
|||
return i;
|
||||
}
|
||||
|
||||
static void usart_init(void)
|
||||
static int usart_get_irq_no(unsigned *irq_no, unsigned dev)
|
||||
{
|
||||
if (irq_no)
|
||||
return -1;
|
||||
|
||||
switch (dev) {
|
||||
case USART1: *irq_no = NVIC_USART1_IRQ; break;
|
||||
case USART2: *irq_no = NVIC_USART2_IRQ; break;
|
||||
default: return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int usart_init(struct usart_console *console)
|
||||
{
|
||||
unsigned irq_no;
|
||||
|
||||
if (usart_get_irq_no(&irq_no, console->dev) < 0)
|
||||
return -1;
|
||||
|
||||
/* Set up clocks for USART 1 */
|
||||
rcc_periph_clock_enable(RCC_GPIOA);
|
||||
rcc_periph_clock_enable(RCC_USART1);
|
||||
|
||||
/* Set up GPIOs for USART 1 */
|
||||
gpio_mode_setup(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO9 | GPIO10);
|
||||
gpio_set_af(GPIOA, GPIO_AF1, GPIO9 | GPIO10);
|
||||
gpio_set_af(GPIOA, GPIO_AF1, GPIO10);
|
||||
usart_set_baudrate(console->dev, 115200);
|
||||
usart_set_databits(console->dev, 8);
|
||||
usart_set_parity(console->dev, USART_PARITY_NONE);
|
||||
usart_set_stopbits(console->dev, USART_CR2_STOP_1_0BIT);
|
||||
usart_set_mode(console->dev, USART_MODE_TX_RX);
|
||||
usart_set_flow_control(console->dev, USART_FLOWCONTROL_NONE);
|
||||
|
||||
usart_set_baudrate(USART1, 115200);
|
||||
usart_set_databits(USART1, 8);
|
||||
usart_set_parity(USART1, USART_PARITY_NONE);
|
||||
usart_set_stopbits(USART1, USART_CR2_STOP_1_0BIT);
|
||||
usart_set_mode(USART1, USART_MODE_TX_RX);
|
||||
usart_set_flow_control(USART1, USART_FLOWCONTROL_NONE);
|
||||
nvic_enable_irq(irq_no);
|
||||
usart_enable(console->dev);
|
||||
usart_enable_rx_interrupt(console->dev);
|
||||
|
||||
nvic_enable_irq(NVIC_USART1_IRQ);
|
||||
|
||||
usart_enable(USART1);
|
||||
usart_enable_rx_interrupt(USART1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void console_init(void)
|
||||
|
@ -173,7 +188,7 @@ void console_init(void)
|
|||
user_console.cur = 0;
|
||||
user_console.next = 0;
|
||||
usart1 = &user_console;
|
||||
usart_init();
|
||||
usart_init(&user_console);
|
||||
|
||||
stdin = fopencookie(&user_console, "r", console_in);
|
||||
stdout = fopencookie(&user_console, "w", console_out);
|
||||
|
|
Loading…
Add table
Reference in a new issue