久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4602|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

關(guān)于stm32H743 can配置

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:236826 發(fā)表于 2021-1-4 15:24 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)于stm32h743的芯片兩路CAN的配置,以及一些心得。


FDCAN_HandleTypeDef FDCAN1_Handler;
FDCAN_RxHeaderTypeDef FDCAN1_RxHeader;
FDCAN_TxHeaderTypeDef FDCAN1_TxHeader;


FDCAN_HandleTypeDef FDCAN2_Handler;
FDCAN_RxHeaderTypeDef FDCAN2_RxHeader;
FDCAN_TxHeaderTypeDef FDCAN2_TxHeader;

FDCAN_RxHeaderTypeDef RxHeader;


//初始化FDCAN1,波特率為500Kbit/S
//配置FDCAN1的時(shí)鐘源為PLL1Q=200Mhz
//presc:分頻值,取值范圍1~512
//ntsjw:重新同步跳躍時(shí)間單元.范圍:1~128
//ntsg1: 取值范圍2~256
//ntsg2: 取值范圍2~128
//mode:FDCAN_MODE_NORMAL,普通模式;FDCAN_MODE_EXTERNAL_LOOPBACK,回環(huán)模式;
//返回值:0,初始化OK;
//    其他,初始化失敗;
u8 FDCAN1_Mode_Init(u16 presc,u8 ntsjw,u16 ntsg1,u8 ntsg2,u32 mode)
{
    FDCAN_FilterTypeDef FDCAN1_RXFilter;

    //初始化FDCAN1
    HAL_FDCAN_DeInit(&FDCAN1_Handler);                              //先清除以前的設(shè)置
    FDCAN1_Handler.Instance=FDCAN1;
    FDCAN1_Handler.Init.FrameFormat=FDCAN_FRAME_CLASSIC;            //傳統(tǒng)模式
    FDCAN1_Handler.Init.Mode=mode;                                  //回環(huán)測(cè)試
    FDCAN1_Handler.Init.AutoRetransmission=DISABLE;                 //關(guān)閉自動(dòng)重傳!傳統(tǒng)模式下一定要關(guān)閉。!
    FDCAN1_Handler.Init.TransmitPause=DISABLE;                      //關(guān)閉傳輸暫停
    FDCAN1_Handler.Init.ProtocolException=DISABLE;                  //關(guān)閉協(xié)議異常處理
    FDCAN1_Handler.Init.NominalPrescaler=presc;                     //分頻系數(shù)
    FDCAN1_Handler.Init.NominalSyncJumpWidth=ntsjw;                 //重新同步跳躍寬度
    FDCAN1_Handler.Init.NominalTimeSeg1=ntsg1;                      //tsg1范圍:2~256
    FDCAN1_Handler.Init.NominalTimeSeg2=ntsg2;                      //tsg2范圍:2~128
    FDCAN1_Handler.Init.MessageRAMOffset=0;                         //信息RAM偏移
    FDCAN1_Handler.Init.StdFiltersNbr=0;                            //標(biāo)準(zhǔn)信息ID濾波器編號(hào)
    FDCAN1_Handler.Init.ExtFiltersNbr=0;                            //擴(kuò)展信息ID濾波器編號(hào)
    FDCAN1_Handler.Init.RxFifo0ElmtsNbr=1;                          //接收FIFO0元素編號(hào)
    FDCAN1_Handler.Init.RxFifo0ElmtSize=FDCAN_DATA_BYTES_8;         //接收FIFO0元素大。8字節(jié)
    FDCAN1_Handler.Init.RxBuffersNbr=0;                             //接收緩沖編號(hào)
    FDCAN1_Handler.Init.TxEventsNbr=0;                              //發(fā)送事件編號(hào)
    FDCAN1_Handler.Init.TxBuffersNbr=0;                             //發(fā)送緩沖編號(hào)
    FDCAN1_Handler.Init.TxFifoQueueElmtsNbr=1;                      //發(fā)送FIFO序列元素編號(hào)
    FDCAN1_Handler.Init.TxFifoQueueMode=FDCAN_TX_FIFO_OPERATION;    //發(fā)送FIFO序列模式
    FDCAN1_Handler.Init.TxElmtSize=FDCAN_DATA_BYTES_8;              //發(fā)送大小:8字節(jié)
    if(HAL_FDCAN_Init(&FDCAN1_Handler)!=HAL_OK) return 1;           //初始化FDCAN


        //FDCAN1_Handler.Init.MessageRAMOffset = FDCAN1_Handler.msgRam.EndAddress-SRAMCAN_BASE;

    //配置RX濾波器   
    FDCAN1_RXFilter.IdType=FDCAN_STANDARD_ID;                       //標(biāo)準(zhǔn)ID
    FDCAN1_RXFilter.FilterIndex=14;                                  //濾波器索引                  
    FDCAN1_RXFilter.FilterType=FDCAN_FILTER_MASK;                   //濾波器類型
    FDCAN1_RXFilter.FilterConfig=FDCAN_FILTER_TO_RXFIFO0;           //過濾器0關(guān)聯(lián)到FIFO0  
    FDCAN1_RXFilter.FilterID1=0x0000;                               //32位ID
    FDCAN1_RXFilter.FilterID2=0x0000;                               //如果FDCAN配置為傳統(tǒng)模式的話,這里是32位掩碼
    if(HAL_FDCAN_ConfigFilter(&FDCAN1_Handler,&FDCAN1_RXFilter)!=HAL_OK) return 2;//濾波器初始化
    HAL_FDCAN_Start(&FDCAN1_Handler);                               //開啟FDCAN
    HAL_FDCAN_ActivateNotification(&FDCAN1_Handler,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,0);
    return 0;
}







u8 FDCAN2_Mode_Init(u16 presc,u8 ntsjw,u16 ntsg1,u8 ntsg2,u32 mode)
{
    FDCAN_FilterTypeDef FDCAN2_RXFilter;

    //初始化FDCAN1
   // HAL_FDCAN_DeInit(&FDCAN2_Handler);                              //先清除以前的設(shè)置
    FDCAN2_Handler.Instance=FDCAN2;
    FDCAN2_Handler.Init.FrameFormat=FDCAN_FRAME_CLASSIC;            //傳統(tǒng)模式
    FDCAN2_Handler.Init.Mode=mode;                                  //回環(huán)測(cè)試
    FDCAN2_Handler.Init.AutoRetransmission=DISABLE;                 //關(guān)閉自動(dòng)重傳!傳統(tǒng)模式下一定要關(guān)閉。!
    FDCAN2_Handler.Init.TransmitPause=DISABLE;                      //關(guān)閉傳輸暫停
    FDCAN2_Handler.Init.ProtocolException=DISABLE;                  //關(guān)閉協(xié)議異常處理
    FDCAN2_Handler.Init.NominalPrescaler=presc;                     //分頻系數(shù)
    FDCAN2_Handler.Init.NominalSyncJumpWidth=ntsjw;                 //重新同步跳躍寬度
    FDCAN2_Handler.Init.NominalTimeSeg1=ntsg1;                      //tsg1范圍:2~256
    FDCAN2_Handler.Init.NominalTimeSeg2=ntsg2;                      //tsg2范圍:2~128
    FDCAN2_Handler.Init.MessageRAMOffset=FDCAN1_Handler.msgRam.EndAddress-SRAMCAN_BASE;                         //信息RAM偏移
    FDCAN2_Handler.Init.StdFiltersNbr=0;                            //標(biāo)準(zhǔn)信息ID濾波器編號(hào)
    FDCAN2_Handler.Init.ExtFiltersNbr=0;                            //擴(kuò)展信息ID濾波器編號(hào)
    FDCAN2_Handler.Init.RxFifo0ElmtsNbr=1;                          //接收FIFO0元素編號(hào)
    FDCAN2_Handler.Init.RxFifo0ElmtSize=FDCAN_DATA_BYTES_8;         //接收FIFO0元素大。8字節(jié)
    FDCAN2_Handler.Init.RxBuffersNbr=0;                             //接收緩沖編號(hào)
    FDCAN2_Handler.Init.TxEventsNbr=0;                              //發(fā)送事件編號(hào)
    FDCAN2_Handler.Init.TxBuffersNbr=0;                             //發(fā)送緩沖編號(hào)
    FDCAN2_Handler.Init.TxFifoQueueElmtsNbr=2;                      //發(fā)送FIFO序列元素編號(hào)
    FDCAN2_Handler.Init.TxFifoQueueMode=FDCAN_TX_FIFO_OPERATION;    //發(fā)送FIFO序列模式
    FDCAN2_Handler.Init.TxElmtSize=FDCAN_DATA_BYTES_8;              //發(fā)送大小:8字節(jié)
    if(HAL_FDCAN_Init(&FDCAN2_Handler)!=HAL_OK) return 1;           //初始化FDCAN


        //FDCAN1_Handler.Init.MessageRAMOffset = FDCAN1_Handler.msgRam.EndAddress-SRAMCAN_BASE;

    //配置RX濾波器   
    FDCAN2_RXFilter.IdType=FDCAN_STANDARD_ID;                       //標(biāo)準(zhǔn)ID
    FDCAN2_RXFilter.FilterIndex=0;                                  //濾波器索引                  
    FDCAN2_RXFilter.FilterType=FDCAN_FILTER_MASK;                   //濾波器類型
    FDCAN2_RXFilter.FilterConfig=FDCAN_FILTER_TO_RXFIFO0;           //過濾器0關(guān)聯(lián)到FIFO0  
    FDCAN2_RXFilter.FilterID1=0x0000;                               //32位ID
    FDCAN2_RXFilter.FilterID2=0x0000;                               //如果FDCAN配置為傳統(tǒng)模式的話,這里是32位掩碼
    if(HAL_FDCAN_ConfigFilter(&FDCAN2_Handler,&FDCAN2_RXFilter)!=HAL_OK) return 2;//濾波器初始化
    HAL_FDCAN_Start(&FDCAN2_Handler);                               //開啟FDCAN
    HAL_FDCAN_ActivateNotification(&FDCAN2_Handler,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,0);
    return 0;
}
//FDCAN1底層驅(qū)動(dòng),引腳配置,時(shí)鐘使能
//HAL_FDCAN_Init()調(diào)用
//hsdram:FDCAN1句柄
void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* hfdcan)
{
/*
    GPIO_InitTypeDef GPIO_Initure;
    RCC_PeriphCLKInitTypeDef FDCAN_PeriphClk;

    __HAL_RCC_FDCAN_CLK_ENABLE();                   //使能FDCAN1時(shí)鐘
    __HAL_RCC_GPIOA_CLK_ENABLE();                                //開啟GPIOA時(shí)鐘
        
    //FDCAN1時(shí)鐘源配置為PLL1Q
    FDCAN_PeriphClk.PeriphClockSelection=RCC_PERIPHCLK_FDCAN;
    FDCAN_PeriphClk.FdcanClockSelection=RCC_FDCANCLKSOURCE_PLL;
    HAL_RCCEx_PeriphCLKConfig(&FDCAN_PeriphClk);

    GPIO_Initure.Pin=GPIO_PIN_11|GPIO_PIN_12;       //PA11,12
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;              //推挽復(fù)用
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    GPIO_Initure.Speed=GPIO_SPEED_FREQ_MEDIUM;      //超高速
    GPIO_Initure.Alternate=GPIO_AF9_FDCAN1;         //復(fù)用為CAN1
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);             //初始化

*/

    GPIO_InitTypeDef GPIO_Initure;
    RCC_PeriphCLKInitTypeDef FDCAN_PeriphClk;

    __HAL_RCC_FDCAN_CLK_ENABLE();                   //使能FDCAN1時(shí)鐘

          __HAL_RCC_GPIOA_CLK_ENABLE();                          //開啟GPIOA時(shí)鐘
          __HAL_RCC_GPIOI_CLK_ENABLE();       //開啟GPIOI時(shí)鐘
          __HAL_RCC_GPIOB_CLK_ENABLE();       //開啟GPIOB時(shí)鐘
        
        
    //FDCAN1時(shí)鐘源配置為PLL1Q
    FDCAN_PeriphClk.PeriphClockSelection=RCC_PERIPHCLK_FDCAN;
    FDCAN_PeriphClk.FdcanClockSelection=RCC_FDCANCLKSOURCE_PLL;
    HAL_RCCEx_PeriphCLKConfig(&FDCAN_PeriphClk);
        
         

    GPIO_Initure.Pin=GPIO_PIN_12;       //PA12
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;              //推挽復(fù)用
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    GPIO_Initure.Speed=GPIO_SPEED_FREQ_MEDIUM;      //超高速
    GPIO_Initure.Alternate=GPIO_AF9_FDCAN1;         //復(fù)用為CAN1
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);             //初始化
               
        GPIO_Initure.Pin=GPIO_PIN_9;        //PI9
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;              //推挽復(fù)用
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    GPIO_Initure.Speed=GPIO_SPEED_FREQ_MEDIUM;      //超高速
    GPIO_Initure.Alternate=GPIO_AF9_FDCAN1;         //復(fù)用為CAN1
    HAL_GPIO_Init(GPIOI,&GPIO_Initure);             //初始化
               
               
                GPIO_Initure.Pin=GPIO_PIN_5|GPIO_PIN_13;        //PB5
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;              //推挽復(fù)用
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    GPIO_Initure.Speed=GPIO_SPEED_FREQ_MEDIUM;      //超高速
    GPIO_Initure.Alternate=GPIO_AF9_FDCAN2;         //復(fù)用為CAN2
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);             //初始化



        

#if FDCAN1_RX0_INT_ENABLE     
    HAL_NVIC_SetPriority(FDCAN1_IT0_IRQn,1,2);
    HAL_NVIC_EnableIRQ(FDCAN1_IT0_IRQn);
#endif        

#if FDCAN2_RX1_INT_ENABLE     
                HAL_NVIC_SetPriority(FDCAN2_IT0_IRQn,1,3);
                HAL_NVIC_EnableIRQ(FDCAN2_IT0_IRQn);
#endif        




}

//此函數(shù)會(huì)被HAL_FDCAN_DeInit調(diào)用
//hfdcan:fdcan句柄
void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* hfdcan)
{
    __HAL_RCC_FDCAN_FORCE_RESET();       //復(fù)位FDCAN1
    __HAL_RCC_FDCAN_RELEASE_RESET();     //停止復(fù)位

#if FDCAN1_RX0_INT_ENABLE   
    HAL_NVIC_DisableIRQ(FDCAN1_IT0_IRQn);
#endif


#if FDCAN2_RX1_INT_ENABLE   
                HAL_NVIC_DisableIRQ(FDCAN2_IT0_IRQn);
#endif


}

//can發(fā)送一組數(shù)據(jù)(固定格式:ID為0X12,標(biāo)準(zhǔn)幀,數(shù)據(jù)幀)        
//len:數(shù)據(jù)長(zhǎng)度(最大為8),可設(shè)置為FDCAN_DLC_BYTES_2~FDCAN_DLC_BYTES_8                                    
//msg:數(shù)據(jù)指針,最大為8個(gè)字節(jié).
//返回值:0,成功;
//                 其他,失敗;
u8 FDCAN1_Send_Msg(u8* msg,u32 len)
{        
    FDCAN1_TxHeader.Identifier=0x13;                           //32位ID
    FDCAN1_TxHeader.IdType=FDCAN_STANDARD_ID;                  //標(biāo)準(zhǔn)ID
    FDCAN1_TxHeader.TxFrameType=FDCAN_DATA_FRAME;              //數(shù)據(jù)幀
    FDCAN1_TxHeader.DataLength=len;                            //數(shù)據(jù)長(zhǎng)度
    FDCAN1_TxHeader.ErrorStateIndicator=FDCAN_ESI_ACTIVE;            
    FDCAN1_TxHeader.BitRateSwitch=FDCAN_BRS_OFF;               //關(guān)閉速率切換
    FDCAN1_TxHeader.FDFormat=FDCAN_CLASSIC_CAN;                //傳統(tǒng)的CAN模式
    FDCAN1_TxHeader.TxEventFifoControl=FDCAN_NO_TX_EVENTS;     //無(wú)發(fā)送事件
    FDCAN1_TxHeader.MessageMarker=0;   


    if(HAL_FDCAN_AddMessageToTxFifoQ(&FDCAN1_Handler,&FDCAN1_TxHeader,msg)!=HAL_OK) return 1;//發(fā)送
    return 0;        
}



u8 FDCAN2_Send_Msg(u8* msg,u32 len)
{        
    FDCAN2_TxHeader.Identifier=0x12;                           //32位ID
    FDCAN2_TxHeader.IdType=FDCAN_STANDARD_ID;                  //標(biāo)準(zhǔn)ID
    FDCAN2_TxHeader.TxFrameType=FDCAN_DATA_FRAME;              //數(shù)據(jù)幀
    FDCAN2_TxHeader.DataLength=len;                            //數(shù)據(jù)長(zhǎng)度
    FDCAN2_TxHeader.ErrorStateIndicator=FDCAN_ESI_ACTIVE;            
    FDCAN2_TxHeader.BitRateSwitch=FDCAN_BRS_OFF;               //關(guān)閉速率切換
    FDCAN2_TxHeader.FDFormat=FDCAN_CLASSIC_CAN;                //傳統(tǒng)的CAN模式
    FDCAN2_TxHeader.TxEventFifoControl=FDCAN_NO_TX_EVENTS;     //無(wú)發(fā)送事件
    FDCAN2_TxHeader.MessageMarker=0;                           

    if(HAL_FDCAN_AddMessageToTxFifoQ(&FDCAN2_Handler,&FDCAN2_TxHeader,msg)!=HAL_OK) return 1;//發(fā)送
    return 0;        
}


//can口接收數(shù)據(jù)查詢
//buf:數(shù)據(jù)緩存區(qū);         
//返回值:0,無(wú)數(shù)據(jù)被收到;
//                 其他,接收的數(shù)據(jù)長(zhǎng)度;
u8 FDCAN1_Receive_Msg(u8 *buf)
{        
    if(HAL_FDCAN_GetRxMessage(&FDCAN1_Handler,FDCAN_RX_FIFO0,&FDCAN1_RxHeader,buf)!=HAL_OK)return 0;//接收數(shù)據(jù)
        return FDCAN1_RxHeader.DataLength>>16;        
}


u8 FDCAN2_Receive_Msg(u8 *buf)
{        
    if(HAL_FDCAN_GetRxMessage(&FDCAN2_Handler,FDCAN_RX_FIFO0,&FDCAN2_RxHeader,buf)!=HAL_OK)return 0;//接收數(shù)據(jù)
        return FDCAN2_RxHeader.DataLength>>16;        
}



#if FDCAN1_RX0_INT_ENABLE  
//FDCAN1中斷服務(wù)函數(shù)
void FDCAN1_IT0_IRQHandler(void)
{
    HAL_FDCAN_IRQHandler(&FDCAN1_Handler);
}

#endif        

#if FDCAN2_RX1_INT_ENABLE  
//FDCAN1中斷服務(wù)函數(shù)
void FDCAN2_IT0_IRQHandler(void)
{
    HAL_FDCAN_IRQHandler(&FDCAN2_Handler);
}

#endif


//FIFO0回調(diào)函數(shù)
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs)
{
    u8 i=0;
        u8 rxdata[8];
    u8 rxdata_can1[8];
          u8 rxdata_can2[8];
    if((RxFifo0ITs&FDCAN_IT_RX_FIFO0_NEW_MESSAGE)!=RESET)   //FIFO1新數(shù)據(jù)中斷
    {
        //提取FIFO0中接收到的數(shù)據(jù)


                        HAL_FDCAN_GetRxMessage(hfdcan,FDCAN_RX_FIFO0,&RxHeader,rxdata);
               
        //printf("id:%#x\r\n",FDCAN1_RxHeader.Identifier);
       // printf("len:%d\r\n",FDCAN1_RxHeader.DataLength>>16);
       // for(i=0;i<8;i++)
        //printf("rxdata[%d]:%d\r\n",i,rxdata[ i]);
        HAL_FDCAN_ActivateNotification(hfdcan,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,0);
    }
}

can.h文件


//FDCAN1接收RX0中斷使能
#define FDCAN1_RX0_INT_ENABLE        0                //0,不使能;1,使能.
#define  FDCAN2_RX1_INT_ENABLE  1


u8 FDCAN1_Mode_Init(u16 presc,u8 ntsjw,u16 ntsg1,u8 ntsg2,u32 mode);
u8 FDCAN1_Send_Msg(u8* msg,u32 len);
u8 FDCAN1_Receive_Msg(u8 *buf);


u8 FDCAN2_Mode_Init(u16 presc,u8 ntsjw,u16 ntsg1,u8 ntsg2,u32 mode);
u8 FDCAN2_Send_Msg(u8* msg,u32 len);
u8 FDCAN2_Receive_Msg(u8 *buf);


main函數(shù)
  FDCAN1_Mode_Init(10,8,31,8,FDCAN_MODE_INTERNAL_LOOPBACK);  //回環(huán)測(cè)試
    FDCAN2_Mode_Init(10,8,31,8,FDCAN_MODE_INTERNAL_LOOPBACK);  //回環(huán)測(cè)試
                                canbuf_can1_tx[0]=0;//填充發(fā)送緩沖區(qū)
                                canbuf_can1_tx[1]=1;
                                canbuf_can1_tx[2]=2;
                                canbuf_can1_tx[3]=3;
                                canbuf_can1_tx[4]=4;
                                canbuf_can1_tx[5]=5;
                                canbuf_can1_tx[6]=6;
                                canbuf_can1_tx[7]=7+t;




                                canbuf_can2_tx[0]=10;//填充發(fā)送緩沖區(qū)
                                canbuf_can2_tx[1]=11;
                                canbuf_can2_tx[2]=12;
                                canbuf_can2_tx[3]=13;
                                canbuf_can2_tx[4]=14;
                                canbuf_can2_tx[5]=15;
                                canbuf_can2_tx[6]=0x10;
                                canbuf_can2_tx[7]=0x11+t;


                        res=FDCAN1_Send_Msg(canbuf_can1_tx,FDCAN_DLC_BYTES_8);//發(fā)送8個(gè)字節(jié)
                        res=FDCAN2_Send_Msg(canbuf_can2_tx,FDCAN_DLC_BYTES_8);//發(fā)送8個(gè)字節(jié)
  /*如果要用輪詢方式打開下列兩個(gè)函數(shù),將中斷關(guān)掉
                //key=FDCAN1_Receive_Msg(canbuf_can1_rx);
        //        key=FDCAN2_Receive_Msg(canbuf_can2_rx);



在調(diào)試的時(shí)候遇到不進(jìn)中斷的問題,當(dāng)時(shí)以為can1 fifo0對(duì)應(yīng)的中斷是中斷0那么can2 的中斷則對(duì)應(yīng)的是中斷1所以調(diào)試半天也不進(jìn)中斷。
  個(gè)人理解不知道對(duì)不對(duì)如果想要can2對(duì)應(yīng)中斷1那么應(yīng)該設(shè)置對(duì)應(yīng)fifo1 ,在配置can2的時(shí)候偏移地址應(yīng)該設(shè)置fifo1的地址才可以,這個(gè)沒有研究以后有時(shí)間在研究。
  而我的設(shè)置是圍繞fifo0的配置來(lái)的所以應(yīng)該遵循fifo0的配置,(fifo0對(duì)應(yīng)中斷0)還有在設(shè)置fifo0的中斷時(shí)can1和can2共用回掉fifo0的函數(shù)而且他們也共用一條中斷線0,在回調(diào)函數(shù)中可以設(shè)置想要的id和數(shù)據(jù)。
  本人也第一次用stm32h743的芯片在can配置的時(shí)候會(huì)有理解不對(duì)的地方還請(qǐng)大家指出不勝感激。



評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:236826 發(fā)表于 2021-1-4 16:08 | 只看該作者
第一發(fā)帖在帖中沒有找到類似于csdn的代碼編輯塊所以只用了一種格式,有知道怎么可以告訴我一下謝謝!
回復(fù)

使用道具 舉報(bào)

板凳
ID:628803 發(fā)表于 2021-1-14 16:33 | 只看該作者
HAL_FDCAN_ActivateNotification(hfdcan,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,FDCAN_RX_FIFO0);
通知的地址不能寫0啊,寫到FIFO0就對(duì)了

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:236826 發(fā)表于 2021-1-14 19:28 | 只看該作者
lefulan的小迷妹 發(fā)表于 2021-1-8 10:45
說(shuō)了半天也沒懂你問題是什么

我只是分享當(dāng)時(shí)調(diào)試can時(shí)遇到的問題。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区国产精品 | 欧美1级 | 一区二区三区精品 | 曰韩一二三区 | 国产精品久久久久久一级毛片 | 女同久久另类99精品国产 | 国产三级精品三级在线观看四季网 | 2019精品手机国产品在线 | 一级做a爰片久久毛片 | 九九精品影院 | 国产二区在线播放 | 一道本视频 | 福利视频大全 | 成人免费视频久久 | 九九精品视频在线 | www日本在线 | 国产精品视频一区二区三区不卡 | 中文字幕 在线观看 | 国产一区二区视频在线观看 | 日韩三级视频 | 国产精品免费观看 | 99精品免费久久久久久久久日本 | 久久国产综合 | 亚洲一区有码 | 五月激情六月婷婷 | 天天天天天操 | 色综合99 | 国产精品久久久久久久久久久久 | 另类在线 | 日韩av在线不卡 | 香蕉视频一区二区 | 日本精品久久 | 国产一级特黄视频 | 99热电影| 精品一区二区三 | 日韩福利| 色男人的天堂 | 影音先锋中文字幕在线观看 | 中文字幕一区在线观看视频 | 91国产精品 | 91国自产 |