OpenEdv-开源电子网

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

请问下,有没有F767的CAN2通信例程?我试了很久均失败

[复制链接]

21

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2013-12-1
在线时间
88 小时
发表于 2021-6-29 23:10:16 | 显示全部楼层 |阅读模式
50金钱
本帖最后由 ssis909 于 2021-6-29 23:14 编辑

我在原子哥的CAN实验例程上修改的,正点原子哥使用的是CAN1,我改成CAN2,结果在 if(HAL_CAN_Init(&CAN_Handler) != HAL_OK) ;这里就返回失败了,我已经把CAN1和CAN2的时钟都打开了.这是初始化函数:
CAN_HandleTypeDef   CAN_Handler;   //CAN句柄
CanTxMsgTypeDef     TxMessage;      //发送消息
CanRxMsgTypeDef     RxMessage;      //接收消息

   CAN_FilterConfTypeDef  CAN_FilerConf;
    CAN_Handler.Instance                = CAN2;         

    CAN_Handler.pTxMsg                  = &TxMessage;             //发送消息
    CAN_Handler.pRxMsg                = &RxMessage;             //接收消息
    CAN_Handler.Init.Prescaler        = brp;                            //分频系数(Fdiv)为brp+1
    CAN_Handler.Init.Mode              = mode;                        //模式设置
    CAN_Handler.Init.SJW                = tsjw;                 //重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位 CAN_SJW_1TQ~CAN_SJW_4TQ
    CAN_Handler.Init.BS1                = tbs1;                 //tbs1范围CAN_BS1_1TQ~CAN_BS1_16TQ
    CAN_Handler.Init.BS2                = tbs2;                 //tbs2范围CAN_BS2_1TQ~CAN_BS2_8TQ
    CAN_Handler.Init.TTCM             = DISABLE;                    //非时间触发通信模式
    CAN_Handler.Init.ABOM            = DISABLE;                    //软件自动离线管理
    CAN_Handler.Init.AWUM           = DISABLE;                    //睡眠模式通过软件唤醒(清除CAN->MCR的SLEEP位)
    CAN_Handler.Init.NART             = ENABLE;                     //禁止报文自动传送
    CAN_Handler.Init.RFLM             = DISABLE;                    //报文不锁定,新的覆盖旧的
    CAN_Handler.Init.TXFP              = DISABLE;                    //优先级由报文标识符决定
    if(HAL_CAN_Init(&CAN_Handler) != HAL_OK) //CAN2在这里返回了,表明失败
      {
                return 1;   //初始化
      }



void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan)
{
        GPIO_InitTypeDef GPIO_Initure;

    __HAL_RCC_CAN1_CLK_ENABLE();      
    __HAL_RCC_CAN2_CLK_ENABLE();      
    __HAL_RCC_GPIOB_CLK_ENABLE();        

    GPIO_Initure.Pin                = GPIO_PIN_12 | GPIO_PIN_13;
    GPIO_Initure.Mode        = GPIO_MODE_AF_PP;          //推挽复用
    GPIO_Initure.Pull                = GPIO_PULLUP;              //上拉
    GPIO_Initure.Speed        = GPIO_SPEED_FAST;         //快速
    GPIO_Initure.Alternate= GPIO_AF9_CAN2;       //复用为CAN2
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);         //初始化
}

有木有谁在F767用HAL库驱动CAN成功的?非常感谢!

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

使用道具 举报

3

主题

821

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3359
金钱
3359
注册时间
2011-11-10
在线时间
207 小时
发表于 2021-6-30 17:34:30 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 14:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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