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