Exemplo n.º 1
0
void can_irq_set(can_t *obj, CanIrqType irq, uint32_t enable)
{
    CAN_T *can_base = (CAN_T *) NU_MODBASE(obj->can);
    
    CAN_EnterInitMode(can_base, ((enable != 0 )? CAN_CON_IE_Msk :0) );
    
    
    switch (irq)
    {
        case IRQ_ERROR:
        case IRQ_BUS:
        case IRQ_PASSIVE:
            can_base->CON = can_base->CON |CAN_CON_EIE_Msk;
            can_base->CON = can_base->CON |CAN_CON_SIE_Msk;
            break;
        
        case IRQ_RX:
        case IRQ_TX:
        case IRQ_OVERRUN:
        case IRQ_WAKEUP:
            can_base->CON = can_base->CON |CAN_CON_SIE_Msk;
            break;
        
        default:
            break;
    
    }

    CAN_LeaveInitMode(can_base);
    
    NVIC_SetVector(CAN0_IRQn, (uint32_t)&CAN0_IRQHandler);
    NVIC_EnableIRQ(CAN0_IRQn);
    
}
Exemplo n.º 2
0
/*******************************************************************************
* Function Name  : CAN_Init                                                  
* Description    : Initializes the CAN peripheral according to the specified 
*                  parameters in the CAN_InitStruct.                                            
* Input          : CAN_InitStruct: pointer to a CAN_InitTypeDef structure that
*                  contains the configuration information for the CAN peripheral. 
* Output         : None                                                      
* Return         : None                                                      
*******************************************************************************/
void CAN_Init(CAN_InitTypeDef* CAN_InitStruct)
{
  CAN_EnterInitMode(CAN_CR_CCE | CAN_InitStruct->CAN_ConfigParameters);
  CAN_SetBitrate(CAN_InitStruct->CAN_Bitrate);
  CAN_LeaveInitMode();
  CAN_LeaveTestMode();
}
Exemplo n.º 3
0
void  USB2CAN_set_speed(u8 speed,CAN_TIMINGS *CanTimings)
{
    CAN_InitTypeDef     CAN_Struct;

    switch(speed)
    {
    case    CAN_BAUD_10:
        CAN_Struct.CAN_Bitrate=CAN_BITRATE_10K;
        CAN_Struct.CAN_ConfigParameters = CAN_CR_IE ;
        CAN_Init( &CAN_Struct );
        break;
    case    CAN_BAUD_20:
        CAN_Struct.CAN_Bitrate=CAN_BITRATE_20K;
        CAN_Struct.CAN_ConfigParameters = CAN_CR_IE ;
        CAN_Init( &CAN_Struct );
        break;
    case    CAN_BAUD_50:
        CAN_Struct.CAN_Bitrate=CAN_BITRATE_50K;
        CAN_Struct.CAN_ConfigParameters = CAN_CR_IE ;
        CAN_Init( &CAN_Struct );
        break;
    case    CAN_BAUD_100:
        CAN_Struct.CAN_Bitrate=CAN_BITRATE_100K;
        CAN_Struct.CAN_ConfigParameters = CAN_CR_IE ;
        CAN_Init( &CAN_Struct );
        break;
    case    CAN_BAUD_125:
        CAN_Struct.CAN_Bitrate=CAN_BITRATE_125K;
        CAN_Struct.CAN_ConfigParameters = CAN_CR_IE ;
        CAN_Init( &CAN_Struct );
        break;
    case    CAN_BAUD_250:
        CAN_Struct.CAN_Bitrate=CAN_BITRATE_250K;
        CAN_Struct.CAN_ConfigParameters = CAN_CR_IE ;
        CAN_Init( &CAN_Struct );
        break;
    case    CAN_BAUD_500:
        CAN_Struct.CAN_Bitrate=CAN_BITRATE_500K;
        CAN_Struct.CAN_ConfigParameters = CAN_CR_IE ;
        CAN_Init( &CAN_Struct );
        break;
    case    CAN_BAUD_800:
        CAN_Struct.CAN_Bitrate=CAN_BITRATE_800K;
        CAN_Struct.CAN_ConfigParameters = CAN_CR_IE ;
        CAN_Init( &CAN_Struct );
        break;
    case    CAN_BAUD_1000:
        CAN_Struct.CAN_Bitrate=CAN_BITRATE_1M;
        CAN_Struct.CAN_ConfigParameters = CAN_CR_IE ;
        CAN_Init( &CAN_Struct );
        break;
    case    CAN_BAUD_MANUAL:
        CAN_EnterInitMode(CAN_CR_CCE | CAN_CR_IE);
        CAN_SetTiming(CanTimings->tseg1,CanTimings->tseg2,CanTimings->sjw,CanTimings->brp);
        CAN_LeaveInitMode();
        break;
    default: // 125K
        CAN_Struct.CAN_Bitrate=CAN_BITRATE_125K;
        CAN_Struct.CAN_ConfigParameters = CAN_CR_IE ;
        CAN_Init( &CAN_Struct );
        break;
    }
}