OpenEdv-开源电子网

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

萌新求教!STM32F427IIH6,can口无法初始化

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
0
金钱
0
注册时间
2018-10-29
在线时间
0 小时
发表于 2018-10-29 17:38:11 | 显示全部楼层 |阅读模式
4金钱
求求各位帮帮忙,在下新人,用HAL库在can初始化的时候,调试发现在

while ((hcan->Instance->MSR & CAN_MSR_SLAK) != RESET)  {
    if ((HAL_GetTick() - tickstart) > CAN_TIMEOUT_VALUE)
    {
      /* Update error code */
      hcan->ErrorCode |= HAL_CAN_ERROR_TIMEOUT;

      /* Change CAN state */
      hcan->State = HAL_CAN_STATE_ERROR;

      return HAL_ERROR;
    }
  }

这里最后报错,好几天了一直弄不好,各位帮忙看一下[mw_shl_code=applescript,true]初始化参数如下,时钟42MHZ
void CAN_Init(CAN_TypeDef *CANx, FilterUnit unit[], uint16_t num)
{   
    CAN_HandleTypeDef *phandle;
    if(CANx == CAN1)
    {
        phandle = &CAN1Handle;
    }
    else
    {
        phandle = &CAN2Handle;
    }
    phandle->Instance                     = CANx;
    phandle->Init.Prescaler               = 3;                //APB1总线时钟为42MHz,3分频后为14MHz
    phandle->Init.Mode                    = CAN_MODE_NORMAL;
    phandle->Init.SyncJumpWidth           = CAN_SJW_4TQ;
    phandle->Init.TimeSeg1                = CAN_BS1_7TQ;
    phandle->Init.TimeSeg2                = CAN_BS2_6TQ;      //CAN波特率为 14MHz / (7 + 6 + 1) = 1MHz
    phandle->Init.TimeTriggeredMode       = DISABLE;
    phandle->Init.AutoBusOff              = DISABLE;
    phandle->Init.AutoWakeUp              = DISABLE;
    phandle->Init.AutoRetransmission      = DISABLE;
    phandle->Init.ReceiveFifoLocked       = DISABLE;
    phandle->Init.TransmitFifoPriority    = DISABLE;

    if(HAL_CAN_Init(phandle)!=HAL_OK)
                {
                        while(1);//停在这个地方
                }
    CAN_FilterInit(CANx, unit, num);


    HAL_CAN_ActivateNotification(phandle,   CAN_IT_RX_FIFO0_MSG_PENDING
                                        |   CAN_IT_RX_FIFO1_MSG_PENDING     );
    HAL_CAN_Start(phandle);         
}



void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan)
{
    GPIO_InitTypeDef GPIO_InitStruct;

    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;

    if(hcan->Instance == CAN1)
    {
        __HAL_RCC_CAN1_CLK_ENABLE();

        CAN1_TX_PORT_CLK_ENABLE();
        CAN1_RX_PORT_CLK_ENABLE();

        GPIO_InitStruct.Alternate =  GPIO_AF9_CAN1;
        GPIO_InitStruct.Pin = CAN1_TX_PIN;
        HAL_GPIO_Init(CAN1_TX_PORT, &GPIO_InitStruct);

        GPIO_InitStruct.Alternate =  GPIO_AF9_CAN1;
        GPIO_InitStruct.Pin = CAN1_RX_PIN;
        HAL_GPIO_Init(CAN1_RX_PORT, &GPIO_InitStruct);   

        HAL_NVIC_SetPriority(CAN1_RX0_IRQn, 1, 0);
        HAL_NVIC_SetPriority(CAN1_RX1_IRQn, 1, 0);
        HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn);
        HAL_NVIC_EnableIRQ(CAN1_RX1_IRQn);        
    }
    else if(hcan->Instance == CAN2)
    {
        __HAL_RCC_CAN2_CLK_ENABLE();

        CAN2_TX_PORT_CLK_ENABLE();
        CAN2_RX_PORT_CLK_ENABLE();

        GPIO_InitStruct.Alternate =  GPIO_AF9_CAN2;
        GPIO_InitStruct.Pin = CAN2_TX_PIN;
        HAL_GPIO_Init(CAN2_TX_PORT, &GPIO_InitStruct);

        GPIO_InitStruct.Alternate =  GPIO_AF9_CAN2;
        GPIO_InitStruct.Pin = CAN2_RX_PIN;
        HAL_GPIO_Init(CAN2_RX_PORT, &GPIO_InitStruct);           

        HAL_NVIC_SetPriority(CAN2_RX0_IRQn, 1, 0);
        HAL_NVIC_SetPriority(CAN2_RX1_IRQn, 1, 0);
        HAL_NVIC_EnableIRQ(CAN2_RX0_IRQn);
        HAL_NVIC_EnableIRQ(CAN2_RX1_IRQn);
    }
}

void HAL_CAN_MspDeInit(CAN_HandleTypeDef *hcan)
{
    if(hcan->Instance==CAN1)
    {
        __HAL_RCC_CAN1_FORCE_RESET();
        __HAL_RCC_CAN1_RELEASE_RESET();
        HAL_GPIO_DeInit(CAN1_TX_PORT, CAN1_TX_PIN);
        HAL_GPIO_DeInit(CAN1_RX_PORT, CAN1_RX_PIN);        
    }
    else if(hcan->Instance == CAN2)
    {
        __HAL_RCC_CAN2_FORCE_RESET();
        __HAL_RCC_CAN2_RELEASE_RESET();
        HAL_GPIO_DeInit(CAN2_TX_PORT, CAN2_TX_PIN);
        HAL_GPIO_DeInit(CAN2_RX_PORT, CAN2_RX_PIN);        
    }
}[/mw_shl_code]

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

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
0
金钱
0
注册时间
2018-10-29
在线时间
0 小时
 楼主| 发表于 2018-10-29 17:38:46 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-10-30 01:27:59 | 显示全部楼层
参考我们429的应该可以直接用
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

22

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2013-10-9
在线时间
73 小时
发表于 2018-12-11 22:09:21 | 显示全部楼层
....确实出现这个。。。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 04:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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