重新配置CAN之前,关闭CAN,配置完再打开。
This commit is contained in:
parent
2fc56f4ff4
commit
3e7580dc7d
@ -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)
|
|||||||
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)
|
|||||||
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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user