mirror of https://github.com/ARMmbed/mbed-os.git
Added support for FDCAN3
parent
9bc2deb9aa
commit
9886532029
|
@ -76,6 +76,11 @@ static void _can_init_freq_direct(can_t *obj, const can_pinmap_t *pinmap, int hz
|
||||||
else if (pinmap->peripheral == CAN_2) {
|
else if (pinmap->peripheral == CAN_2) {
|
||||||
obj->index = 1;
|
obj->index = 1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#if defined(FDCAN3_BASE)
|
||||||
|
else if (pinmap->peripheral == CAN_3) {
|
||||||
|
obj->index = 2;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
else {
|
else {
|
||||||
error("can_init wrong instance\n");
|
error("can_init wrong instance\n");
|
||||||
|
@ -199,6 +204,12 @@ void can_irq_free(can_t *obj)
|
||||||
HAL_NVIC_DisableIRQ(FDCAN2_IT0_IRQn);
|
HAL_NVIC_DisableIRQ(FDCAN2_IT0_IRQn);
|
||||||
HAL_NVIC_DisableIRQ(FDCAN2_IT1_IRQn);
|
HAL_NVIC_DisableIRQ(FDCAN2_IT1_IRQn);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#if defined(FDCAN3_BASE)
|
||||||
|
else if (can == CAN_3) {
|
||||||
|
HAL_NVIC_DisableIRQ(FDCAN3_IT0_IRQn);
|
||||||
|
HAL_NVIC_DisableIRQ(FDCAN3_IT1_IRQn);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
else {
|
else {
|
||||||
return;
|
return;
|
||||||
|
@ -505,6 +516,17 @@ void FDCAN2_IT1_IRQHandler(void)
|
||||||
can_irq(CAN_2, 1);
|
can_irq(CAN_2, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FDCAN3_IT0_IRQHandler(void)
|
||||||
|
{
|
||||||
|
can_irq(CAN_3, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FDCAN3_IT1_IRQHandler(void)
|
||||||
|
{
|
||||||
|
can_irq(CAN_3, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO Add other interrupts ?
|
// TODO Add other interrupts ?
|
||||||
void can_irq_set(can_t *obj, CanIrqType type, uint32_t enable)
|
void can_irq_set(can_t *obj, CanIrqType type, uint32_t enable)
|
||||||
{
|
{
|
||||||
|
@ -549,6 +571,12 @@ void can_irq_set(can_t *obj, CanIrqType type, uint32_t enable)
|
||||||
NVIC_SetVector(FDCAN2_IT1_IRQn, (uint32_t)&FDCAN2_IT1_IRQHandler);
|
NVIC_SetVector(FDCAN2_IT1_IRQn, (uint32_t)&FDCAN2_IT1_IRQHandler);
|
||||||
NVIC_EnableIRQ(FDCAN2_IT1_IRQn);
|
NVIC_EnableIRQ(FDCAN2_IT1_IRQn);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(FDCAN3_BASE)
|
||||||
|
NVIC_SetVector(FDCAN3_IT0_IRQn, (uint32_t)&FDCAN3_IT0_IRQHandler);
|
||||||
|
NVIC_EnableIRQ(FDCAN3_IT0_IRQn);
|
||||||
|
NVIC_SetVector(FDCAN3_IT1_IRQn, (uint32_t)&FDCAN3_IT1_IRQHandler);
|
||||||
|
NVIC_EnableIRQ(FDCAN3_IT1_IRQn);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* FDCAN1 */
|
#else /* FDCAN1 */
|
||||||
|
|
Loading…
Reference in New Issue