Skip to content

Commit 81efb78

Browse files
committed
update stm32 to use better uart id
1 parent 3ed9d65 commit 81efb78

File tree

70 files changed

+481
-341
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+481
-341
lines changed

hw/bsp/stm32c0/boards/stm32c071nucleo/board.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@
5454
#define BUTTON_STATE_ACTIVE 0
5555

5656
// Enable UART serial communication with the ST-Link
57-
#define UART_DEV USART2
58-
#define UART_CLK_EN __HAL_RCC_USART2_CLK_ENABLE
57+
#define UART_ID 2
5958
#define UART_GPIO_PORT GPIOA
6059
#define UART_GPIO_AF GPIO_AF1_USART2
6160
#define UART_TX_PIN GPIO_PIN_2

hw/bsp/stm32c0/family.c

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@
3333
#include "bsp/board_api.h"
3434
#include "board.h"
3535

36+
#ifdef UART_ID
37+
#if UART_ID == 1
38+
#define USARTn USART1
39+
#define UARTn_CLK_ENABLE __HAL_RCC_USART1_CLK_ENABLE
40+
#elif UART_ID == 2
41+
#define USARTn USART2
42+
#define UARTn_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE
43+
#endif
44+
#endif
45+
3646
//--------------------------------------------------------------------+
3747
// Forward USB interrupt events to TinyUSB IRQ Handler
3848
//--------------------------------------------------------------------+
@@ -49,7 +59,9 @@ void USB_IRQHandler(void) {
4959
//--------------------------------------------------------------------+
5060
// MACRO TYPEDEF CONSTANT ENUM
5161
//--------------------------------------------------------------------+
62+
#ifdef UART_ID
5263
UART_HandleTypeDef UartHandle;
64+
#endif
5365

5466
void board_init(void) {
5567
HAL_Init();
@@ -93,8 +105,8 @@ void board_init(void) {
93105
HAL_GPIO_Init(BUTTON_PORT, &gpio_init);
94106
}
95107

96-
#ifdef UART_DEV
97-
UART_CLK_EN();
108+
#ifdef UART_ID
109+
UARTn_CLK_ENABLE();
98110
// UART
99111
{
100112
GPIO_InitTypeDef gpio_init = { 0 };
@@ -107,7 +119,7 @@ void board_init(void) {
107119
}
108120

109121
UartHandle = (UART_HandleTypeDef){
110-
.Instance = UART_DEV,
122+
.Instance = USARTn,
111123
.Init.BaudRate = CFG_BOARD_UART_BAUDRATE,
112124
.Init.WordLength = UART_WORDLENGTH_8B,
113125
.Init.StopBits = UART_STOPBITS_1,
@@ -149,7 +161,7 @@ size_t board_get_unique_id(uint8_t id[], size_t max_len) {
149161
}
150162

151163
int board_uart_read(uint8_t *buf, int len) {
152-
#ifdef UART_DEV
164+
#ifdef UART_ID
153165
int count = 0;
154166
while (count < len) {
155167
if (__HAL_UART_GET_FLAG(&UartHandle, UART_FLAG_RXNE)) {
@@ -167,7 +179,7 @@ int board_uart_read(uint8_t *buf, int len) {
167179
}
168180

169181
int board_uart_write(void const *buf, int len) {
170-
#ifdef UART_DEV
182+
#ifdef UART_ID
171183
const uint8_t *p = (const uint8_t *) buf;
172184
int count = 0;
173185
while (count < len) {

hw/bsp/stm32f0/boards/stm32f070rbnucleo/board.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@
4747
#define BUTTON_STATE_ACTIVE 0
4848

4949
// UART
50-
#define UART_DEV USART2
51-
#define UART_CLK_EN __HAL_RCC_USART2_CLK_ENABLE
50+
#define UART_ID 2
5251
#define UART_GPIO_PORT GPIOA
5352
#define UART_GPIO_AF GPIO_AF1_USART2
5453
#define UART_TX_PIN GPIO_PIN_2

hw/bsp/stm32f0/boards/stm32f072disco/board.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@
4747
#define BUTTON_STATE_ACTIVE 1
4848

4949
// UART
50-
#define UART_DEV USART1
51-
#define UART_CLK_EN __HAL_RCC_USART1_CLK_ENABLE
50+
#define UART_ID 1
5251
#define UART_GPIO_PORT GPIOA
5352
#define UART_GPIO_AF GPIO_AF1_USART1
5453
#define UART_TX_PIN GPIO_PIN_9

hw/bsp/stm32f0/boards/stm32f072eval/board.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@
5050
#define BUTTON_STATE_ACTIVE 1
5151

5252
// UART
53-
#define UART_DEV USART2
54-
#define UART_CLK_EN __HAL_RCC_USART2_CLK_ENABLE
53+
#define UART_ID 2
5554
#define UART_GPIO_PORT GPIOD
5655
#define UART_GPIO_AF GPIO_AF0_USART2
5756
#define UART_TX_PIN GPIO_PIN_5

hw/bsp/stm32f0/family.c

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,20 @@
3333
#include "common/tusb_fifo.h"
3434
#include "board.h"
3535

36+
#ifdef UART_ID
37+
#if UART_ID == 1
38+
#define USARTn USART1
39+
#define USARTn_IRQn USART1_IRQn
40+
#define USARTn_IRQHandler USART1_IRQHandler
41+
#define UARTn_CLK_ENABLE __HAL_RCC_USART1_CLK_ENABLE
42+
#elif UART_ID == 2
43+
#define USARTn USART2
44+
#define USARTn_IRQn USART2_IRQn
45+
#define USARTn_IRQHandler USART2_IRQHandler
46+
#define UARTn_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE
47+
#endif
48+
#endif
49+
3650
//--------------------------------------------------------------------+
3751
// Forward USB interrupt events to TinyUSB IRQ Handler
3852
//--------------------------------------------------------------------+
@@ -43,9 +57,9 @@ void USB_IRQHandler(void) {
4357
//--------------------------------------------------------------------+
4458
// MACRO TYPEDEF CONSTANT ENUM
4559
//--------------------------------------------------------------------+
46-
#ifdef UART_DEV
60+
#ifdef UART_ID
4761
static UART_HandleTypeDef UartHandle = {
48-
.Instance = UART_DEV,
62+
.Instance = USARTn,
4963
.Init = {
5064
.BaudRate = CFG_BOARD_UART_BAUDRATE,
5165
.WordLength = UART_WORDLENGTH_8B,
@@ -62,23 +76,16 @@ static uint8_t uart_rx_ff_buf[32];
6276
static tu_fifo_t uart_rx_ff;
6377

6478
// F0 uses new USART IP (ISR/RDR/TDR/ICR) — same as F7
65-
static void uart_rx_isr(void) {
66-
uint32_t isr = UART_DEV->ISR;
79+
void USARTn_IRQHandler(void) {
80+
uint32_t isr = USARTn->ISR;
6781
if (isr & USART_ISR_RXNE) {
68-
uint8_t byte = (uint8_t) UART_DEV->RDR;
82+
uint8_t byte = (uint8_t) USARTn->RDR;
6983
tu_fifo_write(&uart_rx_ff, &byte);
7084
}
7185
if (isr & (USART_ISR_ORE | USART_ISR_FE | USART_ISR_NE | USART_ISR_PE)) {
72-
UART_DEV->ICR = USART_ICR_ORECF | USART_ICR_FECF | USART_ICR_NCF | USART_ICR_PECF;
86+
USARTn->ICR = USART_ICR_ORECF | USART_ICR_FECF | USART_ICR_NCF | USART_ICR_PECF;
7387
}
7488
}
75-
76-
void USART1_IRQHandler(void) {
77-
uart_rx_isr();
78-
}
79-
void USART2_IRQHandler(void) {
80-
uart_rx_isr();
81-
}
8289
#endif
8390

8491
void board_init(void) {
@@ -118,9 +125,9 @@ void board_init(void) {
118125
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
119126
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
120127

121-
#ifdef UART_DEV
128+
#ifdef UART_ID
122129
// Enable UART Clock
123-
UART_CLK_EN();
130+
UARTn_CLK_ENABLE();
124131

125132
// Uart
126133
GPIO_InitStruct.Pin = UART_TX_PIN | UART_RX_PIN;
@@ -132,10 +139,9 @@ void board_init(void) {
132139

133140
HAL_UART_Init(&UartHandle);
134141
tu_fifo_config(&uart_rx_ff, uart_rx_ff_buf, sizeof(uart_rx_ff_buf), false);
135-
UART_DEV->CR1 |= USART_CR1_RXNEIE;
136-
const IRQn_Type uart_irqn = (UART_DEV == USART1) ? USART1_IRQn : USART2_IRQn;
137-
NVIC_SetPriority(uart_irqn, (1 << __NVIC_PRIO_BITS) - 1);
138-
NVIC_EnableIRQ(uart_irqn);
142+
USARTn->CR1 |= USART_CR1_RXNEIE;
143+
NVIC_SetPriority(USARTn_IRQn, (1 << __NVIC_PRIO_BITS) - 1);
144+
NVIC_EnableIRQ(USARTn_IRQn);
139145
#endif
140146

141147
// USB Pins
@@ -177,7 +183,7 @@ size_t board_get_unique_id(uint8_t id[], size_t max_len) {
177183
}
178184

179185
int board_uart_read(uint8_t *buf, int len) {
180-
#ifdef UART_DEV
186+
#ifdef UART_ID
181187
return (int) tu_fifo_read_n(&uart_rx_ff, buf, (uint16_t) len);
182188
#else
183189
(void) buf; (void) len;
@@ -186,7 +192,7 @@ int board_uart_read(uint8_t *buf, int len) {
186192
}
187193

188194
int board_uart_write(void const *buf, int len) {
189-
#ifdef UART_DEV
195+
#ifdef UART_ID
190196
const uint8_t *p = (const uint8_t *) buf;
191197
int count = 0;
192198
while (count < len) {

hw/bsp/stm32f1/boards/stm32f103_bluepill/board.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@
4747
#define BUTTON_STATE_ACTIVE 1
4848

4949
// UART
50-
#define UART_DEV USART1
51-
#define UART_CLK_EN __HAL_RCC_USART1_CLK_ENABLE
50+
#define UART_ID 1
5251
#define UART_GPIO_PORT GPIOA
5352
//#define UART_GPIO_AF GPIO_AF1_USART1
5453
#define UART_TX_PIN GPIO_PIN_9

hw/bsp/stm32f1/family.c

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,25 @@
3333
#include "common/tusb_fifo.h"
3434
#include "board.h"
3535

36+
#ifdef UART_ID
37+
#if UART_ID == 1
38+
#define USARTn USART1
39+
#define USARTn_IRQn USART1_IRQn
40+
#define USARTn_IRQHandler USART1_IRQHandler
41+
#define UARTn_CLK_ENABLE __HAL_RCC_USART1_CLK_ENABLE
42+
#elif UART_ID == 2
43+
#define USARTn USART2
44+
#define USARTn_IRQn USART2_IRQn
45+
#define USARTn_IRQHandler USART2_IRQHandler
46+
#define UARTn_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE
47+
#elif UART_ID == 3
48+
#define USARTn USART3
49+
#define USARTn_IRQn USART3_IRQn
50+
#define USARTn_IRQHandler USART3_IRQHandler
51+
#define UARTn_CLK_ENABLE __HAL_RCC_USART3_CLK_ENABLE
52+
#endif
53+
#endif
54+
3655
//--------------------------------------------------------------------+
3756
// Forward USB interrupt events to TinyUSB IRQ Handler
3857
//--------------------------------------------------------------------+
@@ -51,9 +70,9 @@ void USBWakeUp_IRQHandler(void) {
5170
//--------------------------------------------------------------------+
5271
// MACRO TYPEDEF CONSTANT ENUM
5372
//--------------------------------------------------------------------+
54-
#ifdef UART_DEV
73+
#ifdef UART_ID
5574
static UART_HandleTypeDef UartHandle = {
56-
.Instance = UART_DEV,
75+
.Instance = USARTn,
5776
.Init.BaudRate = CFG_BOARD_UART_BAUDRATE,
5877
.Init.WordLength = UART_WORDLENGTH_8B,
5978
.Init.StopBits = UART_STOPBITS_1,
@@ -68,24 +87,14 @@ static uint8_t uart_rx_ff_buf[32];
6887
static tu_fifo_t uart_rx_ff;
6988

7089
// F1 uses old USART IP (SR/DR)
71-
static void uart_rx_isr(void) {
72-
uint32_t sr = UART_DEV->SR;
90+
void USARTn_IRQHandler(void) {
91+
uint32_t sr = USARTn->SR;
7392
if (sr & USART_SR_RXNE) {
74-
uint8_t byte = (uint8_t) UART_DEV->DR;
93+
uint8_t byte = (uint8_t) USARTn->DR;
7594
tu_fifo_write(&uart_rx_ff, &byte);
7695
}
7796
// Reading DR clears RXNE. OR is cleared by reading SR then DR (already done).
7897
}
79-
80-
void USART1_IRQHandler(void) {
81-
uart_rx_isr();
82-
}
83-
void USART2_IRQHandler(void) {
84-
uart_rx_isr();
85-
}
86-
void USART3_IRQHandler(void) {
87-
uart_rx_isr();
88-
}
8998
#endif
9099

91100
void board_init(void) {
@@ -137,9 +146,9 @@ void board_init(void) {
137146
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
138147
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
139148

140-
#ifdef UART_DEV
149+
#ifdef UART_ID
141150
// UART
142-
UART_CLK_EN();
151+
UARTn_CLK_ENABLE();
143152

144153
GPIO_InitStruct.Pin = UART_TX_PIN | UART_RX_PIN;
145154
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
@@ -150,12 +159,9 @@ void board_init(void) {
150159

151160
HAL_UART_Init(&UartHandle);
152161
tu_fifo_config(&uart_rx_ff, uart_rx_ff_buf, sizeof(uart_rx_ff_buf), false);
153-
UART_DEV->CR1 |= USART_CR1_RXNEIE;
154-
const IRQn_Type uart_irqn = (UART_DEV == USART1) ? USART1_IRQn
155-
: (UART_DEV == USART2) ? USART2_IRQn
156-
: USART3_IRQn;
157-
NVIC_SetPriority(uart_irqn, (1 << __NVIC_PRIO_BITS) - 1);
158-
NVIC_EnableIRQ(uart_irqn);
162+
USARTn->CR1 |= USART_CR1_RXNEIE;
163+
NVIC_SetPriority(USARTn_IRQn, (1 << __NVIC_PRIO_BITS) - 1);
164+
NVIC_EnableIRQ(USARTn_IRQn);
159165
#endif
160166

161167
#ifdef USB_CONNECT_PIN
@@ -217,7 +223,7 @@ size_t board_get_unique_id(uint8_t id[], size_t max_len) {
217223
}
218224

219225
int board_uart_read(uint8_t *buf, int len) {
220-
#ifdef UART_DEV
226+
#ifdef UART_ID
221227
return (int) tu_fifo_read_n(&uart_rx_ff, buf, (uint16_t) len);
222228
#else
223229
(void) buf; (void) len;
@@ -226,7 +232,7 @@ int board_uart_read(uint8_t *buf, int len) {
226232
}
227233

228234
int board_uart_write(void const *buf, int len) {
229-
#ifdef UART_DEV
235+
#ifdef UART_ID
230236
const uint8_t *p = (const uint8_t *) buf;
231237
int count = 0;
232238
while (count < len) {

0 commit comments

Comments
 (0)