static void uart_setup(void) { u32 pins; /* Enable GPIOA in run mode. */ periph_clock_enable(RCC_GPIOA); /* Configure PA0 and PA1 as alternate function pins */ pins = GPIO0 | GPIO1; GPIO_AFSEL(GPIOA) |= pins; GPIO_DEN(GPIOA) |= pins; /* PA0 and PA1 are muxed to UART0 during power on, by default */ /* Enable the UART clock */ periph_clock_enable(RCC_UART0); /* We need a brief delay before we can access UART config registers */ __asm__("nop"); /* Disable the UART while we mess with its setings */ uart_disable(UART0); /* Configure the UART clock source as precision internal oscillator */ uart_clock_from_piosc(UART0); /* Set communication parameters */ uart_set_baudrate(UART0, 921600); uart_set_databits(UART0, 8); uart_set_parity(UART0, UART_PARITY_NONE); uart_set_stopbits(UART0, 1); /* Now that we're done messing with the settings, enable the UART */ uart_enable(UART0); }
void usbuart_init(void) { UART_PIN_SETUP(); periph_clock_enable(USBUART_CLK); __asm__("nop"); __asm__("nop"); __asm__("nop"); uart_disable(USBUART); /* Setup UART parameters. */ uart_clock_from_sysclk(USBUART); uart_set_baudrate(USBUART, 38400); uart_set_databits(USBUART, 8); uart_set_stopbits(USBUART, 1); uart_set_parity(USBUART, UART_PARITY_NONE); // Enable FIFO uart_enable_fifo(USBUART); // Set FIFO interrupt trigger levels to 1/8 full for RX buffer and // 7/8 empty (1/8 full) for TX buffer uart_set_fifo_trigger_levels(USBUART, UART_FIFO_RX_TRIG_1_8, UART_FIFO_TX_TRIG_7_8); uart_clear_interrupt_flag(USBUART, UART_INT_RX | UART_INT_RT); /* Enable interrupts */ uart_enable_interrupts(UART0, UART_INT_RX| UART_INT_RT); /* Finally enable the USART. */ uart_enable(USBUART); //nvic_set_priority(USBUSART_IRQ, IRQ_PRI_USBUSART); nvic_enable_irq(USBUART_IRQ); }
/* * GPIO setup: * Enable the pins driving the RGB LED as outputs. */ static void gpio_setup(void) { /* * Configure GPIOF * This port is used to control the RGB LED */ periph_clock_enable(RCC_GPIOF); const u32 outpins = (LED_R | LED_G | LED_B); GPIO_DIR(RGB_PORT) |= outpins; /* Configure outputs. */ GPIO_DEN(RGB_PORT) |= outpins; /* Enable digital function on outputs. */ /* * Now take care of our buttons */ const u32 btnpins = USR_SW1 | USR_SW2; /* * PF0 is locked by default. We need to unlock the GPIO_CR register, * then enable PF0 commit. After we do this, we can setup PF0. If we * don't do this, any configuration done to PF0 is lost, and we will not * have a PF0 interrupt. */ GPIO_LOCK(GPIOF) = 0x4C4F434B; GPIO_CR(GPIOF) |= USR_SW2; /* Configure pins as inputs. */ GPIO_DIR(GPIOF) &= ~btnpins; /* Enable digital function on the pins. */ GPIO_DEN(GPIOF) |= btnpins; /* Pull-up the pins. We don't have an external pull-up */ GPIO_PUR(GPIOF) |= btnpins; }
/* * GPIO setup: * Enable the pins driving the RGB LED as outputs. */ static void gpio_setup(void) { /* * Configure GPIOF * This port is used to control the RGB LED */ periph_clock_enable(RCC_GPIOF); const uint32_t outpins = (LED_R | LED_G | LED_B); gpio_mode_setup(RGB_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, outpins); gpio_set_output_config(RGB_PORT, GPIO_OTYPE_PP, GPIO_DRIVE_2MA, outpins); /* * Now take care of our buttons */ const uint32_t btnpins = USR_SW1 | USR_SW2; /* * PF0 is a locked by default. We need to unlock it before we can * re-purpose it as a GPIO pin. */ gpio_unlock_commit(GPIOF, USR_SW2); /* Configure pins as inputs, with pull-up. */ gpio_mode_setup(GPIOF, GPIO_MODE_INPUT, GPIO_PUPD_PULLUP, btnpins); }
void traceswo_init(void) { periph_clock_enable(RCC_GPIOD); periph_clock_enable(TRACEUART_CLK); __asm__("nop"); __asm__("nop"); __asm__("nop"); gpio_mode_setup(SWO_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, SWO_PIN); gpio_set_af(SWO_PORT, 1, SWO_PIN); /* U2RX */ uart_disable(TRACEUART); /* Setup UART parameters. */ uart_clock_from_sysclk(TRACEUART); uart_set_baudrate(TRACEUART, 800000); uart_set_databits(TRACEUART, 8); uart_set_stopbits(TRACEUART, 1); uart_set_parity(TRACEUART, UART_PARITY_NONE); // Enable FIFO uart_enable_fifo(TRACEUART); // Set FIFO interrupt trigger levels to 4/8 full for RX buffer and // 7/8 empty (1/8 full) for TX buffer uart_set_fifo_trigger_levels(TRACEUART, UART_FIFO_RX_TRIG_1_2, UART_FIFO_TX_TRIG_7_8); uart_clear_interrupt_flag(TRACEUART, UART_INT_RX | UART_INT_RT); /* Enable interrupts */ uart_enable_interrupts(TRACEUART, UART_INT_RX | UART_INT_RT); /* Finally enable the USART. */ uart_enable(TRACEUART); nvic_set_priority(TRACEUART_IRQ, 0); nvic_enable_irq(TRACEUART_IRQ); /* Un-stall USB endpoint */ usbd_ep_stall_set(usbdev, 0x85, 0); gpio_mode_setup(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO3); }
/* * GPIO setup: * Enable the pins driving the RGB LED as outputs. */ static void gpio_setup(void) { /* * Configure GPIOF * This port is used to control the RGB LED */ periph_clock_enable(RCC_GPIOF); const uint32_t opins = (LED_R | LED_G | LED_B); gpio_mode_setup(RGB_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, opins); gpio_set_output_config(RGB_PORT, GPIO_OTYPE_PP, GPIO_DRIVE_2MA, opins); }
static void uart_setup(void) { /* Enable GPIOA in run mode. */ periph_clock_enable(RCC_GPIOA); /* Mux PA0 and PA1 to UART0 (alternate function 1) */ gpio_set_af(GPIOA, 1, GPIO0 | GPIO1); /* Enable the UART clock */ periph_clock_enable(RCC_UART0); /* We need a brief delay before we can access UART config registers */ __asm__("nop"); /* Disable the UART while we mess with its setings */ uart_disable(UART0); /* Configure the UART clock source as precision internal oscillator */ uart_clock_from_piosc(UART0); /* Set communication parameters */ uart_set_baudrate(UART0, 921600); uart_set_databits(UART0, 8); uart_set_parity(UART0, UART_PARITY_NONE); uart_set_stopbits(UART0, 1); /* Now that we're done messing with the settings, enable the UART */ uart_enable(UART0); }