diff --git a/examples/stm32/nucleo-f429zi-freertos-mip/mcu.h b/examples/stm32/nucleo-f429zi-freertos-mip/mcu.h index 66ea999c..a5939362 100644 --- a/examples/stm32/nucleo-f429zi-freertos-mip/mcu.h +++ b/examples/stm32/nucleo-f429zi-freertos-mip/mcu.h @@ -87,7 +87,7 @@ static inline void gpio_set_af(uint16_t pin, uint8_t af) { static inline void gpio_write(uint16_t pin, bool val) { GPIO_TypeDef *gpio = GPIO(PINBANK(pin)); - gpio->BSRR |= (1U << PINNO(pin)) << (val ? 0 : 16); + gpio->BSRR = (1U << PINNO(pin)) << (val ? 0 : 16); } static inline void gpio_toggle(uint16_t pin) { @@ -102,16 +102,16 @@ static inline void gpio_toggle(uint16_t pin) { static inline void uart_init(USART_TypeDef *uart, unsigned long baud) { // https://www.st.com/resource/en/datasheet/stm32f429zi.pdf - uint8_t af = 0; // Alternate function + uint8_t af = 7; // Alternate function uint16_t rx = 0, tx = 0; // pins if (uart == UART1) RCC->APB2ENR |= BIT(4); if (uart == UART2) RCC->APB1ENR |= BIT(17); if (uart == UART3) RCC->APB1ENR |= BIT(18); - if (uart == UART1) af = 4, tx = PIN('A', 9), rx = PIN('A', 10); - if (uart == UART2) af = 4, tx = PIN('A', 2), rx = PIN('A', 3); - if (uart == UART3) af = 7, tx = PIN('D', 8), rx = PIN('D', 9); + if (uart == UART1) tx = PIN('A', 9), rx = PIN('A', 10); + if (uart == UART2) tx = PIN('A', 2), rx = PIN('A', 3); + if (uart == UART3) tx = PIN('D', 8), rx = PIN('D', 9); gpio_init(tx, GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, 0, af); gpio_init(rx, GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, 0, af); diff --git a/examples/stm32/nucleo-f429zi-usb-rndis/mcu.h b/examples/stm32/nucleo-f429zi-usb-rndis/mcu.h index 3b10e9ea..d10aadc1 100644 --- a/examples/stm32/nucleo-f429zi-usb-rndis/mcu.h +++ b/examples/stm32/nucleo-f429zi-usb-rndis/mcu.h @@ -70,7 +70,7 @@ static inline void gpio_write(uint16_t pin, bool val) { static inline void gpio_toggle(uint16_t pin) { GPIO_TypeDef *gpio = GPIO(PINBANK(pin)); uint32_t mask = BIT(PINNO(pin)); - gpio->BSRR |= mask << (gpio->ODR & mask ? 16 : 0); + gpio->BSRR = mask << (gpio->ODR & mask ? 16 : 0); } static inline void gpio_init(uint16_t pin, uint8_t mode, uint8_t type, @@ -91,16 +91,16 @@ static inline void gpio_init(uint16_t pin, uint8_t mode, uint8_t type, #define UART3 USART3 static inline void uart_init(USART_TypeDef *uart, unsigned long baud) { - uint8_t af = 0; // Alternate function + uint8_t af = 7; // Alternate function uint16_t rx = 0, tx = 0; // pins if (uart == UART1) RCC->APB2ENR |= BIT(4); if (uart == UART2) RCC->APB1ENR |= BIT(17); if (uart == UART3) RCC->APB1ENR |= BIT(18); - if (uart == UART1) af = 4, tx = PIN('A', 9), rx = PIN('A', 10); - if (uart == UART2) af = 4, tx = PIN('A', 2), rx = PIN('A', 3); - if (uart == UART3) af = 7, tx = PIN('D', 8), rx = PIN('D', 9); + if (uart == UART1) tx = PIN('A', 9), rx = PIN('A', 10); + if (uart == UART2) tx = PIN('A', 2), rx = PIN('A', 3); + if (uart == UART3) tx = PIN('D', 8), rx = PIN('D', 9); gpio_set_mode(tx, GPIO_MODE_AF); gpio_set_af(tx, af); diff --git a/examples/stm32/nucleo-f746zg-baremetal/mcu.h b/examples/stm32/nucleo-f746zg-baremetal/mcu.h index 7df5a769..37317828 100644 --- a/examples/stm32/nucleo-f746zg-baremetal/mcu.h +++ b/examples/stm32/nucleo-f746zg-baremetal/mcu.h @@ -107,7 +107,7 @@ static inline int gpio_read(uint16_t pin) { } static inline void gpio_write(uint16_t pin, bool val) { struct gpio *gpio = gpio_bank(pin); - gpio->BSRR |= BIT(PINNO(pin)) << (val ? 0 : 16); + gpio->BSRR = BIT(PINNO(pin)) << (val ? 0 : 16); } static inline void gpio_init(uint16_t pin, uint8_t mode, uint8_t type, uint8_t speed, uint8_t pull, uint8_t af) { @@ -162,16 +162,16 @@ struct uart { static inline void uart_init(struct uart *uart, unsigned long baud) { // https://www.st.com/resource/en/datasheet/stm32f746zg.pdf - uint8_t af = 0; // Alternate function + uint8_t af = 7; // Alternate function uint16_t rx = 0, tx = 0; // pins if (uart == UART1) RCC->APB2ENR |= BIT(4); if (uart == UART2) RCC->APB1ENR |= BIT(17); if (uart == UART3) RCC->APB1ENR |= BIT(18); - if (uart == UART1) af = 4, tx = PIN('A', 9), rx = PIN('A', 10); - if (uart == UART2) af = 4, tx = PIN('A', 2), rx = PIN('A', 3); - if (uart == UART3) af = 7, tx = PIN('D', 8), rx = PIN('D', 9); + if (uart == UART1) tx = PIN('A', 9), rx = PIN('A', 10); + if (uart == UART2) tx = PIN('A', 2), rx = PIN('A', 3); + if (uart == UART3) tx = PIN('D', 8), rx = PIN('D', 9); gpio_init(tx, GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, 0, af); gpio_init(rx, GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, 0, af); diff --git a/examples/stm32/nucleo-f746zg-freertos-mip/mcu.h b/examples/stm32/nucleo-f746zg-freertos-mip/mcu.h index 7df5a769..37317828 100644 --- a/examples/stm32/nucleo-f746zg-freertos-mip/mcu.h +++ b/examples/stm32/nucleo-f746zg-freertos-mip/mcu.h @@ -107,7 +107,7 @@ static inline int gpio_read(uint16_t pin) { } static inline void gpio_write(uint16_t pin, bool val) { struct gpio *gpio = gpio_bank(pin); - gpio->BSRR |= BIT(PINNO(pin)) << (val ? 0 : 16); + gpio->BSRR = BIT(PINNO(pin)) << (val ? 0 : 16); } static inline void gpio_init(uint16_t pin, uint8_t mode, uint8_t type, uint8_t speed, uint8_t pull, uint8_t af) { @@ -162,16 +162,16 @@ struct uart { static inline void uart_init(struct uart *uart, unsigned long baud) { // https://www.st.com/resource/en/datasheet/stm32f746zg.pdf - uint8_t af = 0; // Alternate function + uint8_t af = 7; // Alternate function uint16_t rx = 0, tx = 0; // pins if (uart == UART1) RCC->APB2ENR |= BIT(4); if (uart == UART2) RCC->APB1ENR |= BIT(17); if (uart == UART3) RCC->APB1ENR |= BIT(18); - if (uart == UART1) af = 4, tx = PIN('A', 9), rx = PIN('A', 10); - if (uart == UART2) af = 4, tx = PIN('A', 2), rx = PIN('A', 3); - if (uart == UART3) af = 7, tx = PIN('D', 8), rx = PIN('D', 9); + if (uart == UART1) tx = PIN('A', 9), rx = PIN('A', 10); + if (uart == UART2) tx = PIN('A', 2), rx = PIN('A', 3); + if (uart == UART3) tx = PIN('D', 8), rx = PIN('D', 9); gpio_init(tx, GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, 0, af); gpio_init(rx, GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, 0, af); diff --git a/examples/stm32/nucleo-f746zg-usb-rndis/mcu.h b/examples/stm32/nucleo-f746zg-usb-rndis/mcu.h index 521cfb11..3069208a 100644 --- a/examples/stm32/nucleo-f746zg-usb-rndis/mcu.h +++ b/examples/stm32/nucleo-f746zg-usb-rndis/mcu.h @@ -54,7 +54,7 @@ static inline void gpio_toggle(uint16_t pin) { static inline void gpio_write(uint16_t pin, bool val) { GPIO_TypeDef *gpio = GPIO(PINBANK(pin)); - gpio->BSRR |= (1U << PINNO(pin)) << (val ? 0 : 16); + gpio->BSRR = (1U << PINNO(pin)) << (val ? 0 : 16); } static inline void gpio_set_mode(uint16_t pin, uint8_t mode) { @@ -91,16 +91,16 @@ static inline void gpio_init(uint16_t pin, uint8_t mode, uint8_t type, static inline void uart_init(USART_TypeDef *uart, unsigned long baud) { // https://www.st.com/resource/en/datasheet/stm32f746zg.pdf - uint8_t af = 0; // Alternate function + uint8_t af = 7; // Alternate function uint16_t rx = 0, tx = 0; // pins if (uart == UART1) RCC->APB2ENR |= BIT(4); if (uart == UART2) RCC->APB1ENR |= BIT(17); if (uart == UART3) RCC->APB1ENR |= BIT(18); - if (uart == UART1) af = 4, tx = PIN('A', 9), rx = PIN('A', 10); - if (uart == UART2) af = 4, tx = PIN('A', 2), rx = PIN('A', 3); - if (uart == UART3) af = 7, tx = PIN('D', 8), rx = PIN('D', 9); + if (uart == UART1) tx = PIN('A', 9), rx = PIN('A', 10); + if (uart == UART2) tx = PIN('A', 2), rx = PIN('A', 3); + if (uart == UART3) tx = PIN('D', 8), rx = PIN('D', 9); gpio_set_mode(tx, GPIO_MODE_AF); gpio_set_af(tx, af);