Skip to content

Commit 37b8aca

Browse files
committed
[NUCLEO_F103RB] Code cleanup
1 parent 340d88b commit 37b8aca

File tree

2 files changed

+36
-67
lines changed

2 files changed

+36
-67
lines changed

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/pwmout_api.c

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,24 +22,17 @@
2222
// Only TIM2 and TIM3 can be used (TIM1 and TIM4 are used by the us_ticker)
2323
static const PinMap PinMap_PWM[] = {
2424
// TIM2
25-
{PA_2, PWM_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)}, // TIM2_CH3 OK
26-
{PA_3, PWM_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)}, // TIM2_CH4 OK
25+
{PA_2, PWM_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)}, // TIM2_CH3 - ARDUINO D1 (extra)
26+
{PA_3, PWM_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)}, // TIM2_CH4 - ARDUINO D0 (extra)
2727
// TIM2 remap
28-
{PA_15, PWM_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 5)}, // TIM2r_CH1 FAIL
29-
{PB_3, PWM_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 5)}, // TIM2r_CH2 FAIL - ARDUINO D3
30-
{PB_10, PWM_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 5)}, // TIM2r_CH3 OK - ARDUINO D6
31-
{PB_11, PWM_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 5)}, // TIM2r_CH4 OK
28+
{PB_3, PWM_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 5)}, // TIM2r_CH2 - ARDUINO D3
29+
{PB_10, PWM_2, STM_PIN_DATA(GPIO_Mode_AF_PP, 5)}, // TIM2r_CH3 - ARDUINO D6
3230
// TIM3
33-
{PA_6, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)}, // TIM3_CH1 OK
34-
{PA_7, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)}, // TIM3_CH2 OK - ARDUINO D11
35-
{PB_1, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)}, // TIM3_CH4 OK
31+
{PA_6, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)}, // TIM3_CH1 - ARDUINO D12 (extra)
32+
{PA_7, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 0)}, // TIM3_CH2 - ARDUINO D11
3633
// TIM3 remap
37-
{PB_4, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 6)}, // TIM3r_CH1 FAIL - ARDUINO D5
38-
{PC_6, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 6)}, // TIM3r_CH1 OK
39-
{PC_7, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 6)}, // TIM3r_CH2 OK - ARDUINO D9
40-
{PB_5, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 6)}, // TIM3r_CH2 FAIL - Bug confirmed in ES
41-
{PC_8, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 6)}, // TIM3r_CH3 OK
42-
{PC_9, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 6)}, // TIM3r_CH4 OK
34+
{PB_4, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 6)}, // TIM3r_CH1 - ARDUINO D5
35+
{PC_7, PWM_3, STM_PIN_DATA(GPIO_Mode_AF_PP, 6)}, // TIM3r_CH2 - ARDUINO D9
4336
{NC, NC, 0}
4437
};
4538

@@ -90,22 +83,26 @@ void pwmout_write(pwmout_t* obj, float value) {
9083
TIM_OCInitStructure.TIM_Pulse = obj->pulse;
9184
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
9285

93-
if ((obj->pin == PA_6) || (obj->pin == PA_15) || (obj->pin == PB_4) || (obj->pin == PC_6)) { // TIM Channel 1
86+
// TIM Channel 1
87+
if ((obj->pin == PA_6) || (obj->pin == PB_4)) {
9488
TIM_OC1PreloadConfig(tim, TIM_OCPreload_Enable);
9589
TIM_OC1Init(tim, &TIM_OCInitStructure);
9690
}
9791

98-
if ((obj->pin == PA_7) || (obj->pin == PB_3) || (obj->pin == PB_5) || (obj->pin == PC_7)) { // TIM Channel 2
92+
// TIM Channel 2
93+
if ((obj->pin == PA_7) || (obj->pin == PB_3) || (obj->pin == PC_7)) {
9994
TIM_OC2PreloadConfig(tim, TIM_OCPreload_Enable);
10095
TIM_OC2Init(tim, &TIM_OCInitStructure);
10196
}
10297

103-
if ((obj->pin == PA_2) || (obj->pin == PB_10) || (obj->pin == PC_8)) { // TIM Channel 3
98+
// TIM Channel 3
99+
if ((obj->pin == PA_2) || (obj->pin == PB_10)) {
104100
TIM_OC3PreloadConfig(tim, TIM_OCPreload_Enable);
105101
TIM_OC3Init(tim, &TIM_OCInitStructure);
106102
}
107103

108-
if ((obj->pin == PA_3) || (obj->pin == PB_1) || (obj->pin == PB_11) || (obj->pin == PC_9)) { // TIM Channel 4
104+
// TIM Channel 4
105+
if (obj->pin == PA_3) {
109106
TIM_OC4PreloadConfig(tim, TIM_OCPreload_Enable);
110107
TIM_OC4Init(tim, &TIM_OCInitStructure);
111108
}

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/serial_api.c

Lines changed: 20 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,24 @@ static uart_irq_handler irq_handler;
4747
int stdio_uart_inited = 0;
4848
serial_t stdio_uart;
4949

50-
void serial_init(serial_t *obj, PinName tx, PinName rx) {
51-
52-
USART_TypeDef *usart;
50+
static void init_usart(serial_t *obj) {
51+
USART_TypeDef *usart = (USART_TypeDef *)(obj->uart);
5352
USART_InitTypeDef USART_InitStructure;
5453

54+
USART_Cmd(usart, DISABLE);
55+
56+
USART_InitStructure.USART_BaudRate = obj->baudrate;
57+
USART_InitStructure.USART_WordLength = obj->databits;
58+
USART_InitStructure.USART_StopBits = obj->stopbits;
59+
USART_InitStructure.USART_Parity = obj->parity;
60+
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
61+
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
62+
USART_Init(usart, &USART_InitStructure);
63+
64+
USART_Cmd(usart, ENABLE);
65+
}
66+
67+
void serial_init(serial_t *obj, PinName tx, PinName rx) {
5568
// Determine the UART to use (UART_1, UART_2, ...)
5669
UARTName uart_tx = (UARTName)pinmap_peripheral(tx, PinMap_UART_TX);
5770
UARTName uart_rx = (UARTName)pinmap_peripheral(rx, PinMap_UART_RX);
@@ -62,10 +75,7 @@ void serial_init(serial_t *obj, PinName tx, PinName rx) {
6275
if (obj->uart == (UARTName)NC) {
6376
error("Serial pinout mapping failed");
6477
}
65-
66-
// Get UART registers structure address
67-
usart = (USART_TypeDef *)(obj->uart);
68-
78+
6979
// Enable USART clock
7080
if (obj->uart == UART_1) {
7181
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
@@ -84,15 +94,7 @@ void serial_init(serial_t *obj, PinName tx, PinName rx) {
8494
obj->stopbits = USART_StopBits_1;
8595
obj->parity = USART_Parity_No;
8696

87-
USART_InitStructure.USART_BaudRate = obj->baudrate;
88-
USART_InitStructure.USART_WordLength = obj->databits;
89-
USART_InitStructure.USART_StopBits = obj->stopbits;
90-
USART_InitStructure.USART_Parity = obj->parity;
91-
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
92-
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
93-
USART_Init(usart, &USART_InitStructure);
94-
95-
USART_Cmd(usart, ENABLE);
97+
init_usart(obj);
9698

9799
// The index is used by irq
98100
if (obj->uart == UART_1) obj->index = 0;
@@ -111,31 +113,11 @@ void serial_free(serial_t *obj) {
111113
}
112114

113115
void serial_baud(serial_t *obj, int baudrate) {
114-
USART_TypeDef *usart = (USART_TypeDef *)(obj->uart);
115-
USART_InitTypeDef USART_InitStructure;
116-
117-
// Save new value
118116
obj->baudrate = baudrate;
119-
120-
USART_Cmd(usart, DISABLE);
121-
122-
USART_InitStructure.USART_BaudRate = obj->baudrate;
123-
USART_InitStructure.USART_WordLength = obj->databits;
124-
USART_InitStructure.USART_StopBits = obj->stopbits;
125-
USART_InitStructure.USART_Parity = obj->parity;
126-
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
127-
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
128-
USART_Init(usart, &USART_InitStructure);
129-
130-
USART_Cmd(usart, ENABLE);
117+
init_usart(obj);
131118
}
132119

133120
void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
134-
USART_TypeDef *usart = (USART_TypeDef *)(obj->uart);
135-
USART_InitTypeDef USART_InitStructure;
136-
137-
// Save new values
138-
139121
if (data_bits == 8) {
140122
obj->databits = USART_WordLength_8b;
141123
}
@@ -164,17 +146,7 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b
164146
obj->stopbits = USART_StopBits_1;
165147
}
166148

167-
USART_Cmd(usart, DISABLE);
168-
169-
USART_InitStructure.USART_BaudRate = obj->baudrate;
170-
USART_InitStructure.USART_WordLength = obj->databits;
171-
USART_InitStructure.USART_StopBits = obj->stopbits;
172-
USART_InitStructure.USART_Parity = obj->parity;
173-
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
174-
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
175-
USART_Init(usart, &USART_InitStructure);
176-
177-
USART_Cmd(usart, ENABLE);
149+
init_usart(obj);
178150
}
179151

180152
/******************************************************************************

0 commit comments

Comments
 (0)