diff options
| author | tyustli <[email protected]> | 2019-08-23 20:32:15 +0800 |
|---|---|---|
| committer | tyustli <[email protected]> | 2019-08-23 20:40:09 +0800 |
| commit | 363c9b1460cef3b6fedda34211e6651ac032196f (patch) | |
| tree | cc93b18e73ab44aa5e75d44150b6b0bf9dcecdcf /components/drivers/can | |
| parent | 200f3d4480a7de9165c6eb3ad36ffecb7d12d60a (diff) | |
[bsp] [stm32] fix drv_can.c and can.c bug
Diffstat (limited to 'components/drivers/can')
| -rw-r--r-- | components/drivers/can/can.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/components/drivers/can/can.c b/components/drivers/can/can.c index 48604993b9..3d60dbaa55 100644 --- a/components/drivers/can/can.c +++ b/components/drivers/can/can.c @@ -853,7 +853,10 @@ void rt_hw_can_isr(struct rt_can_device *can, int event) level = rt_hw_interrupt_disable(); rx_length = can->hdr[hdr].msgs * sizeof(struct rt_can_msg); rt_hw_interrupt_enable(level); - can->hdr[hdr].filter.ind(&can->parent, can->hdr[hdr].filter.args, hdr, rx_length); + if (rx_length) + { + can->hdr[hdr].filter.ind(&can->parent, can->hdr[hdr].filter.args, hdr, rx_length); + } } else #endif @@ -867,7 +870,10 @@ void rt_hw_can_isr(struct rt_can_device *can, int event) rx_length = rt_list_len(&rx_fifo->uselist)* sizeof(struct rt_can_msg); rt_hw_interrupt_enable(level); - can->parent.rx_indicate(&can->parent, rx_length); + if (rx_length) + { + can->parent.rx_indicate(&can->parent, rx_length); + } } } break; |
