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) {
|
||||
obj->index = 1;
|
||||
}
|
||||
#endif
|
||||
#if defined(FDCAN3_BASE)
|
||||
else if (pinmap->peripheral == CAN_3) {
|
||||
obj->index = 2;
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
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_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
|
||||
else {
|
||||
return;
|
||||
|
@ -505,6 +516,17 @@ void FDCAN2_IT1_IRQHandler(void)
|
|||
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 ?
|
||||
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_EnableIRQ(FDCAN2_IT1_IRQn);
|
||||
#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 */
|
||||
|
|
Loading…
Reference in New Issue