OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4662|回复: 4

战舰V3 HAL库例程 CAN收发实验无效

[复制链接]

3

主题

8

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2018-5-21
在线时间
11 小时
发表于 2018-5-21 21:12:20 | 显示全部楼层 |阅读模式
1金钱
战舰v3基础例程(HAL库)实验26 CAN收发实验 无法收到信息
u8 CAN1_Receive_Msg(u8 *buf)
{                                     
        u32 i;
    if(HAL_CAN_Receive(&CAN1_Handler,CAN_FIFO0,0)!=HAL_OK) return 0;//接收数据,超时时间设置为0       
    for(i=0;i<CAN1_Handler.pRxMsg->DLC;i++)
    buf=CAN1_Handler.pRxMsg->Data;
        return CAN1_Handler.pRxMsg->DLC;       
}

程序一直卡在HAL_CAN_Receive()中
while(__HAL_CAN_MSG_PENDING(hcan, FIFONumber) == 0)
  {
    /* Check for the Timeout */
    if(Timeout != HAL_MAX_DELAY)
    {
      if((Timeout == 0) || ((HAL_GetTick()-tickstart) > Timeout))
      {
        hcan->State = HAL_CAN_STATE_TIMEOUT;
        
        /* Process unlocked */
        __HAL_UNLOCK(hcan);
        
        return HAL_TIMEOUT;
      }



标准库例程没有问题 HAL接受不到信息 请各位大佬看看是什么原因 谢谢


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2018-5-21 22:49:35 | 显示全部楼层
回复

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2018-5-21
在线时间
11 小时
 楼主| 发表于 2018-5-22 20:26:58 | 显示全部楼层
已反映给正点原子客服 客服测试后说确实存在问题 正在研究
回复

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2018-5-21
在线时间
11 小时
 楼主| 发表于 2018-6-14 16:17:42 | 显示全部楼层
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-2-19
在线时间
17 小时
发表于 2019-1-4 10:00:31 | 显示全部楼层
现在STM32F103最新的HAL库已经更新到1.7了,里面针对CAN模块的很多函数都跟以前不一样了,可以参考最新的HAL库函数的源文件,我的是从CubeMX生成的工程。具体函数如下:
/* Control functions **********************************************************/
HAL_StatusTypeDef HAL_CAN_Start(CAN_HandleTypeDef *hcan);
HAL_StatusTypeDef HAL_CAN_Stop(CAN_HandleTypeDef *hcan);
HAL_StatusTypeDef HAL_CAN_RequestSleep(CAN_HandleTypeDef *hcan);
HAL_StatusTypeDef HAL_CAN_WakeUp(CAN_HandleTypeDef *hcan);
uint32_t HAL_CAN_IsSleepActive(CAN_HandleTypeDef *hcan);
HAL_StatusTypeDef HAL_CAN_AddTxMessage(CAN_HandleTypeDef *hcan, CAN_TxHeaderTypeDef *pHeader, uint8_t aData[], uint32_t *pTxMailbox);
HAL_StatusTypeDef HAL_CAN_AbortTxRequest(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes);
uint32_t HAL_CAN_GetTxMailboxesFreeLevel(CAN_HandleTypeDef *hcan);
uint32_t HAL_CAN_IsTxMessagePending(CAN_HandleTypeDef *hcan, uint32_t TxMailboxes);
uint32_t HAL_CAN_GetTxTimestamp(CAN_HandleTypeDef *hcan, uint32_t TxMailbox);
HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo, CAN_RxHeaderTypeDef *pHeader, uint8_t aData[]);
uint32_t HAL_CAN_GetRxFifoFillLevel(CAN_HandleTypeDef *hcan, uint32_t RxFifo);

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 23:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表