Skip to content

Commit 7609eb4

Browse files
authored
Merge pull request #12113 from mprse/can_init_fix
Fix for issue #12104 (STM32 can_init_freq() ignores frequency)
2 parents c519967 + fffc30f commit 7609eb4

File tree

1 file changed

+8
-43
lines changed

1 file changed

+8
-43
lines changed

targets/TARGET_STM/can_api.c

Lines changed: 8 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -155,19 +155,13 @@ static void _can_init_freq_direct(can_t *obj, const can_pinmap_t *pinmap, int hz
155155
can_internal_init(obj);
156156
}
157157

158-
#if STATIC_PINMAP_READY
159-
#define CAN_INIT_DIRECT can_init_direct
160158
void can_init_direct(can_t *obj, const can_pinmap_t *pinmap)
161-
#else
162-
#define CAN_INIT_DIRECT _can_init_direct
163-
static void _can_init_direct(can_t *obj, const can_pinmap_t *pinmap)
164-
#endif
165159
{
166160
/* default frequency is 100 kHz */
167161
CAN_INIT_FREQ_DIRECT(obj, pinmap, 100000);
168162
}
169163

170-
void can_init(can_t *obj, PinName rd, PinName td)
164+
void can_init_freq(can_t *obj, PinName rd, PinName td, int hz)
171165
{
172166
CANName can_rd = (CANName)pinmap_peripheral(rd, PinMap_CAN_RD);
173167
CANName can_td = (CANName)pinmap_peripheral(td, PinMap_CAN_TD);
@@ -178,27 +172,14 @@ void can_init(can_t *obj, PinName rd, PinName td)
178172

179173
const can_pinmap_t static_pinmap = {peripheral, rd, function_rd, td, function_td};
180174

181-
/* default frequency is 100 kHz */
182-
CAN_INIT_DIRECT(obj, &static_pinmap);
175+
CAN_INIT_FREQ_DIRECT(obj, &static_pinmap, hz);
183176
}
184177

185-
186-
187-
void can_init_freq(can_t *obj, PinName rd, PinName td, int hz)
178+
void can_init(can_t *obj, PinName rd, PinName td)
188179
{
189-
CANName can_rd = (CANName)pinmap_peripheral(rd, PinMap_CAN_RD);
190-
CANName can_td = (CANName)pinmap_peripheral(td, PinMap_CAN_TD);
191-
int peripheral = (int) pinmap_merge(can_rd, can_td);
192-
193-
int function_rd = (int)pinmap_find_function(rd, PinMap_CAN_RD);
194-
int function_td = (int)pinmap_find_function(td, PinMap_CAN_TD);
195-
196-
const can_pinmap_t static_pinmap = {peripheral, rd, function_rd, td, function_td};
197-
198-
CAN_INIT_FREQ_DIRECT(obj, &static_pinmap, 100000);
180+
can_init_freq(obj, rd, td, 100000);
199181
}
200182

201-
202183
void can_irq_init(can_t *obj, can_irq_handler handler, uint32_t id)
203184
{
204185
irq_handler = handler;
@@ -654,19 +635,13 @@ static void _can_init_freq_direct(can_t *obj, const can_pinmap_t *pinmap, int hz
654635
can_filter(obj, 0, 0, CANStandard, filter_number);
655636
}
656637

657-
#if STATIC_PINMAP_READY
658-
#define CAN_INIT_DIRECT can_init_direct
659638
void can_init_direct(can_t *obj, const can_pinmap_t *pinmap)
660-
#else
661-
#define CAN_INIT_DIRECT _can_init_direct
662-
static void _can_init_direct(can_t *obj, const can_pinmap_t *pinmap)
663-
#endif
664639
{
665640
/* default frequency is 100 kHz */
666641
CAN_INIT_FREQ_DIRECT(obj, pinmap, 100000);
667642
}
668643

669-
void can_init(can_t *obj, PinName rd, PinName td)
644+
void can_init_freq(can_t *obj, PinName rd, PinName td, int hz)
670645
{
671646
CANName can_rd = (CANName)pinmap_peripheral(rd, PinMap_CAN_RD);
672647
CANName can_td = (CANName)pinmap_peripheral(td, PinMap_CAN_TD);
@@ -677,22 +652,12 @@ void can_init(can_t *obj, PinName rd, PinName td)
677652

678653
const can_pinmap_t static_pinmap = {peripheral, rd, function_rd, td, function_td};
679654

680-
/* default frequency is 100 kHz */
681-
CAN_INIT_DIRECT(obj, &static_pinmap);
655+
CAN_INIT_FREQ_DIRECT(obj, &static_pinmap, hz);
682656
}
683657

684-
void can_init_freq(can_t *obj, PinName rd, PinName td, int hz)
658+
void can_init(can_t *obj, PinName rd, PinName td)
685659
{
686-
CANName can_rd = (CANName)pinmap_peripheral(rd, PinMap_CAN_RD);
687-
CANName can_td = (CANName)pinmap_peripheral(td, PinMap_CAN_TD);
688-
int peripheral = (int) pinmap_merge(can_rd, can_td);
689-
690-
int function_rd = (int)pinmap_find_function(rd, PinMap_CAN_RD);
691-
int function_td = (int)pinmap_find_function(td, PinMap_CAN_TD);
692-
693-
const can_pinmap_t static_pinmap = {peripheral, rd, function_rd, td, function_td};
694-
695-
CAN_INIT_FREQ_DIRECT(obj, &static_pinmap, 100000);
660+
can_init_freq(obj, rd, td, 100000);
696661
}
697662

698663
void can_irq_init(can_t *obj, can_irq_handler handler, uint32_t id)

0 commit comments

Comments
 (0)