Fix rtthread CAN driver issue.

Reset rx tx handler when closing CAN device, Or it will not work after
reopening.

Change-Id: I43482c21263a989322f8df2ac9349128f7cb630a
This commit is contained in:
Noe Xu 2018-12-23 00:50:47 -08:00
parent 5e47dc41b3
commit 52729bb62d
1 changed files with 2 additions and 0 deletions

View File

@ -405,6 +405,7 @@ static rt_err_t rt_can_close(struct rt_device *dev)
rt_free(rx_fifo); rt_free(rx_fifo);
dev->open_flag &= ~RT_DEVICE_FLAG_INT_RX; dev->open_flag &= ~RT_DEVICE_FLAG_INT_RX;
can->can_rx = RT_NULL;
/* configure low level device */ /* configure low level device */
can->ops->control(can, RT_DEVICE_CTRL_CLR_INT, (void *)RT_DEVICE_FLAG_INT_RX); 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); rt_free(tx_fifo);
dev->open_flag &= ~RT_DEVICE_FLAG_INT_TX; dev->open_flag &= ~RT_DEVICE_FLAG_INT_TX;
can->can_tx = RT_NULL;
/* configure low level device */ /* configure low level device */
can->ops->control(can, RT_DEVICE_CTRL_CLR_INT, (void *)RT_DEVICE_FLAG_INT_TX); can->ops->control(can, RT_DEVICE_CTRL_CLR_INT, (void *)RT_DEVICE_FLAG_INT_TX);
} }