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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3848|回復: 1
打印 上一主題 下一主題
收起左側

關于STM32 CAN通訊接受數據問題,內有代碼與說明

[復制鏈接]
跳轉到指定樓層
樓主
ID:398162 發表于 2019-8-6 10:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大大們好,最近在擼關于CAN總線那些事,現在對于CAN的接受數據有一些不懂,如果我只接收數據,例如來自汽車的CAN數據,根據接收的數據,來做一些功能的話,那么我的接收函數應該配置勒,下面是一些自己寫的代碼配置,接收一位數據并將其保存在一個緩沖區,有什么問題,請多多指!


void CAN_RCC_Config(void)
{
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
               
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
               
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
               
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE);        
}

void CAN_GPIO_Config(void)
{
                GPIO_InitTypeDef GPIO_InitStructure;
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
                GPIO_Init(GPIOA, &GPIO_InitStructure);
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
                GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
                GPIO_Init(GPIOA, &GPIO_InitStructure);
               
                //GPIO_PinRemapConfig(GPIO_Remap1_CAN1,ENABLE);
               
}

void CAN_NVIC_Config(void)
{
                NVIC_InitTypeDef NVIC_InitStructure;
               
                NVIC_InitStructure.NVIC_IRQChannel=USB_LP_CAN1_RX0_IRQn;
               
                NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
               
                NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
               
                NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
               
                NVIC_Init(&NVIC_InitStructure);
}

void CAN_Config(void)
{
                CAN_InitTypeDef        CAN_InitStructure;
                CAN_FilterInitTypeDef  CAN_FilterInitStructure;

        
                CAN_DeInit(CAN1);
                CAN_StructInit(&CAN_InitStructure);
        
                CAN_InitStructure.CAN_TTCM = DISABLE;         
                CAN_InitStructure.CAN_ABOM = DISABLE;
                CAN_InitStructure.CAN_AWUM = DISABLE;         
                CAN_InitStructure.CAN_NART = DISABLE;         
                CAN_InitStructure.CAN_RFLM = DISABLE;        
                CAN_InitStructure.CAN_TXFP = ENABLE;   
        
    CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;
        
                /* CAN Baudrate */
                CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;

#if 1 // 125K   
                        CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq;
                        CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
                        CAN_InitStructure.CAN_Prescaler = 32;   
#endif
#if 0 // 250K
                        CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq;
                        CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
                        CAN_InitStructure.CAN_Prescaler = 16;   
#endif   
#if 0 // 500K
                        CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq;
                        CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
                        CAN_InitStructure.CAN_Prescaler = 8;         
#endif  
#if 0 // 1MBps   
                  CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq;
                  CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
                  CAN_InitStructure.CAN_Prescaler = 4;
#endif        

    CAN_Init(CAN1,&CAN_InitStructure);

                CAN_FilterInitStructure.CAN_FilterNumber=1;   
               
    CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
               
    CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;  


    CAN_FilterInitStructure.CAN_FilterIdHigh=0 ;               
    CAN_FilterInitStructure.CAN_FilterIdLow=0 ;

    CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0 ;        
    CAN_FilterInitStructure.CAN_FilterMaskIdLow=0 ;
               
                CAN_FilterInitStructure.CAN_FilterFIFOAssignment= 0 ;  
               
    CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;   
               
    CAN_FilterInit(&CAN_FilterInitStructure);                     

    /* CAN FIFO0 message pending interrupt enable */
    CAN_ITConfig(CAN1,CAN_IT_FMP0, ENABLE);
}


void USB_LP_CAN1_RX0_IRQHandler(void)
{
        CanRxMsg        RxMessage;
        
        CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);
        
        RxMessage.StdId = 0 ;                                              //選擇標準ID
        RxMessage.ExtId = 0 ;                                              //選擇擴展ID
        RxMessage.IDE = CAN_ID_STD;                                //選擇接收標準幀
        RxMessage.DLC = 1 ;                                               //將接收數據長度
        RxMessage.RTR = CAN_RTR_DATA ;                         //選擇接收數據幀
        
        CAN_Receive(CAN1,CAN_FIFO0, &RxMessage);        //接收FIFO0數據
        
        if(Rx_flag == 0)
        {
                if(RxMessage.DLC == 1)
                {
                                CAN_RX_BUF[0] = RxMessage.Data[0];                //將接收的數據保存進緩沖區
                }
        }
}

u8 CAN_GetMsg(u8 *msg)               
{
        if(Rx_flag == 1)
        {
                *msg = CAN_RX_BUF[0] ;
               
                Rx_flag = 0;
                return 1;
        }
        else
                return 0;
}

void Clear_CanBuffer(void)
{
        Rx_flag = 0;                //清楚接收標志位
        memset(CAN_RX_BUF, 0 ,sizeof(u8)*CAN_RX_LEN);                //清空緩沖區
}
        
u8 Check_CanRx(void)
{
        return (Rx_flag == 6);
}


評分

參與人數 1黑幣 +80 收起 理由
admin + 80 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:375923 發表于 2023-4-24 08:55 | 只看該作者
啥是沒有看見文件
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片在线免费 | 欧美另类视频 | 成人超碰在线 | 欧美一级www片免费观看 | 国产精品视频一区二区三区四区国 | 欧美日韩网站 | 欧美成人激情 | 亚洲看片| 亚洲精品一级 | 色综合视频 | 91九色在线观看 | 亚洲激情第一页 | 亚洲激情在线观看 | 亚洲一区二区三区视频 | 亚洲欧美视频一区 | 男女久久久| www.4hu影院| 国产女人第一次做爰毛片 | 日本不卡高清视频 | 91在线区 | 国产精品国产三级国产aⅴ入口 | 亚洲国产精品成人 | 久久99一区二区 | 亚洲国产欧美91 | 精精国产xxxx视频在线播放 | 日韩欧美第一页 | 国产精品视频97 | 免费精品视频 | 精品国产乱码久久久久久蜜臀 | 久久久日韩精品一区二区三区 | 动漫www.被爆羞羞av44 | 亚洲精品1区 | www4虎| 国产特级毛片 | 国产日韩精品一区 | 一区二区三区四区毛片 | 精品欧美一区二区三区免费观看 | 亚洲不卡在线观看 | 亚洲电影免费 | 一区二区三区四区在线 | 国产高清在线精品 |