summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2019-01-14 17:49:52 +0800
committerGitHub <[email protected]>2019-01-14 17:49:52 +0800
commitb626deba358fe42066d4f40a129f4ed8b5e82c76 (patch)
tree018bacfcb42233714529fb6770723698e1732840
parentd55a9cd62ab936711d07c22c37fc978be896b84b (diff)
parent52729bb62d126ace0c564268d47ae4232f69e684 (diff)
Merge pull request #2214 from xeonxu/fix_can
修复CAN驱动部分问题
-rw-r--r--bsp/stm32f4xx-HAL/drivers/drv_can.c16
-rw-r--r--components/drivers/can/can.c2
2 files changed, 12 insertions, 6 deletions
diff --git a/bsp/stm32f4xx-HAL/drivers/drv_can.c b/bsp/stm32f4xx-HAL/drivers/drv_can.c
index 603a2a745b..c19ce2584e 100644
--- a/bsp/stm32f4xx-HAL/drivers/drv_can.c
+++ b/bsp/stm32f4xx-HAL/drivers/drv_can.c
@@ -362,12 +362,16 @@ void CAN2_SCE_IRQHandler(void)
*/
void HAL_CAN_ErrorCallback(CAN_HandleTypeDef *hcan)
{
- /* TODO Error Callback */
- /* Prevent unused argument(s) compilation warning */
- UNUSED(hcan);
- /* NOTE : This function Should not be modified, when the callback is needed,
- the HAL_CAN_ErrorCallback could be implemented in the user file
- */
+ __HAL_CAN_ENABLE_IT(hcan, CAN_IT_EWG |
+ CAN_IT_EPV |
+ CAN_IT_BOF |
+ CAN_IT_LEC |
+ CAN_IT_ERR |
+ CAN_IT_FMP0|
+ CAN_IT_FOV0|
+ CAN_IT_FMP1|
+ CAN_IT_FOV1|
+ CAN_IT_TME);
}
/**
diff --git a/components/drivers/can/can.c b/components/drivers/can/can.c
index e20fcddcff..81fdf25a1e 100644
--- a/components/drivers/can/can.c
+++ b/components/drivers/can/can.c
@@ -405,6 +405,7 @@ static rt_err_t rt_can_close(struct rt_device *dev)
rt_free(rx_fifo);
dev->open_flag &= ~RT_DEVICE_FLAG_INT_RX;
+ can->can_rx = RT_NULL;
/* configure low level device */
can->ops->control(can, RT_DEVICE_CTRL_CLR_INT, (void *)RT_DEVICE_FLAG_INT_RX);
}
@@ -418,6 +419,7 @@ static rt_err_t rt_can_close(struct rt_device *dev)
rt_free(tx_fifo);
dev->open_flag &= ~RT_DEVICE_FLAG_INT_TX;
+ can->can_tx = RT_NULL;
/* configure low level device */
can->ops->control(can, RT_DEVICE_CTRL_CLR_INT, (void *)RT_DEVICE_FLAG_INT_TX);
}