提交 3e7580dc 编写于 作者: z13955633063's avatar z13955633063

重新配置CAN之前,关闭CAN,配置完再打开。

上级 2fc56f4f
...@@ -806,10 +806,18 @@ static rt_err_t drv_control(struct rt_can_device *can, int cmd, void *arg) ...@@ -806,10 +806,18 @@ static rt_err_t drv_control(struct rt_can_device *can, int cmd, void *arg)
if (argval != can->config.mode) if (argval != can->config.mode)
{ {
can->config.mode = argval; can->config.mode = argval;
if (HAL_CAN_Stop(&drv_can->CanHandle) != HAL_OK)
{
return RT_ERROR;
}
if (HAL_CAN_Init(&drv_can->CanHandle) != HAL_OK) if (HAL_CAN_Init(&drv_can->CanHandle) != HAL_OK)
{ {
return RT_ERROR; return RT_ERROR;
} }
if (HAL_CAN_Start(&drv_can->CanHandle) != HAL_OK)
{
return RT_ERROR;
}
} }
break; break;
case RT_CAN_CMD_SET_BAUD: case RT_CAN_CMD_SET_BAUD:
...@@ -844,10 +852,18 @@ static rt_err_t drv_control(struct rt_can_device *can, int cmd, void *arg) ...@@ -844,10 +852,18 @@ static rt_err_t drv_control(struct rt_can_device *can, int cmd, void *arg)
drv_init->TimeSeg2 = BAUD_DATA(BS2, baud_index); drv_init->TimeSeg2 = BAUD_DATA(BS2, baud_index);
drv_init->Prescaler = BAUD_DATA(RRESCL, baud_index); drv_init->Prescaler = BAUD_DATA(RRESCL, baud_index);
if (HAL_CAN_Stop(&drv_can->CanHandle) != HAL_OK)
{
return RT_ERROR;
}
if (HAL_CAN_Init(&drv_can->CanHandle) != HAL_OK) if (HAL_CAN_Init(&drv_can->CanHandle) != HAL_OK)
{ {
return RT_ERROR; return RT_ERROR;
} }
if (HAL_CAN_Start(&drv_can->CanHandle) != HAL_OK)
{
return RT_ERROR;
}
} }
break; break;
case RT_CAN_CMD_SET_PRIV: case RT_CAN_CMD_SET_PRIV:
...@@ -860,10 +876,18 @@ static rt_err_t drv_control(struct rt_can_device *can, int cmd, void *arg) ...@@ -860,10 +876,18 @@ static rt_err_t drv_control(struct rt_can_device *can, int cmd, void *arg)
if (argval != can->config.privmode) if (argval != can->config.privmode)
{ {
can->config.privmode = argval; can->config.privmode = argval;
if (HAL_CAN_Stop(&drv_can->CanHandle) != HAL_OK)
{
return RT_ERROR;
}
if (HAL_CAN_Init(&drv_can->CanHandle) != HAL_OK) if (HAL_CAN_Init(&drv_can->CanHandle) != HAL_OK)
{ {
return RT_ERROR; return RT_ERROR;
} }
if (HAL_CAN_Start(&drv_can->CanHandle) != HAL_OK)
{
return RT_ERROR;
}
} }
break; break;
case RT_CAN_CMD_GET_STATUS: case RT_CAN_CMD_GET_STATUS:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册