CANOPEN协议栈的移植以及使用

2019-07-20 01:19发布

这是一篇入门帖,高手请指点一下,主要是记录我对CANOPEN协议的理解以及使用。图片还没研究好怎么上传,等后面研究好了补上。第一步;新建一个工程,配置好各种时钟之类的。当然你用的是原子的板子, 你也可以拿一个LED实验或者蜂鸣器实验的工程  直接来改,你把其他的注释掉就好了。
第二步;到网上下载CanFestival源码CanFestival-3-10,解压出来,并将文件夹名字改为CanFestival-3-10。移植需要用到的源文件在CanFestival-3-10src目录下,头文件在CanFestival-3-10include目录下。
第三部;开始移植。





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
49条回答
NewGuard
2019-07-23 08:44
whj467467274672 发表于 2019-1-3 16:40
canDispatch()需要放在CAN中断接收里面,通过这个函数把接收的数据发送给协议栈处理。
只有一个F1的板 ...

//中断接收函数
//USB_LP_CAN1_RX0_IRQHandler->HAL_CAN_IRQHandler->CAN_Receive_IT->HAL_CAN_RxCpltCallback
void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan)
{
        __HAL_CAN_CLEAR_FLAG(hcan,CAN_IT_FMP0); //清除标志位
        HAL_CAN_Receive_IT(hcan, CAN_FIFO0); //重新开启接收中断
        __HAL_CAN_ENABLE_IT(hcan,CAN_IT_FMP0); //使能中断       
       
        can_msg.cob_id = hcan->pRxMsg->StdId;
        can_msg.rtr = hcan->pRxMsg->RTR;
        can_msg.len = hcan->pRxMsg->DLC;
        for(uint8_t i =0; i < 8; i++)
                can_msg.data = hcan->pRxMsg->Data;
        canDispatch(&TestMaster_Data, &can_msg);    //处理消息
       
        //printf("HAL_CAN_RxCpltCallbackata[0]= 0x%X,Data[1]=0x%X ",hcan->pRxMsg->Data[0],hcan->pRxMsg->Data[1]);
        UART_Mixed_TxTrigger(&muart1,(char *)hcan->pRxMsg->Data,hcan->pRxMsg->DLC);       
}

我大概就这么调用的,回头买个USBCAN调试工具再看看情况吧

一周热门 更多>