fix(serial,drv_pin): 修复serial方法检查错误,修复PIN驱动中断关闭错误
感谢Lucas反馈问题
This commit is contained in:
@@ -203,6 +203,9 @@ static int drv_pin_configure(struct mr_pin *pin, int number, int mode)
|
||||
{
|
||||
HAL_NVIC_DisableIRQ(pin_irq_map[exti_line]);
|
||||
}
|
||||
} else
|
||||
{
|
||||
HAL_NVIC_DisableIRQ(pin_irq_map[exti_line]);
|
||||
}
|
||||
pin_irq_mask[exti_line] = -1;
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ static int drv_pin_configure(struct mr_pin *pin, int number, int mode)
|
||||
{
|
||||
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
||||
}
|
||||
} else
|
||||
} else if ((exti_line >= 10) && (exti_line <= 15))
|
||||
{
|
||||
if ((pin_irq_mask[10] == -1) &&
|
||||
(pin_irq_mask[11] == -1) &&
|
||||
@@ -234,6 +234,9 @@ static int drv_pin_configure(struct mr_pin *pin, int number, int mode)
|
||||
{
|
||||
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
||||
}
|
||||
} else
|
||||
{
|
||||
EXTI_InitStructure.EXTI_LineCmd = DISABLE;
|
||||
}
|
||||
#endif /* MR_USING_CH32V00X */
|
||||
pin_irq_mask[exti_line] = -1;
|
||||
|
||||
@@ -276,7 +276,7 @@ static int mr_serial_ioctl(struct mr_dev *dev, int cmd, void *args)
|
||||
if (args != MR_NULL) {
|
||||
size_t bufsz = *(size_t *)args;
|
||||
|
||||
if (ops->stop_dma_rx) {
|
||||
if (ops->stop_dma_rx == MR_NULL) {
|
||||
return MR_EIO;
|
||||
}
|
||||
ops->stop_dma_rx(serial);
|
||||
@@ -299,6 +299,10 @@ static int mr_serial_ioctl(struct mr_dev *dev, int cmd, void *args)
|
||||
if (args != MR_NULL) {
|
||||
size_t bufsz = *(size_t *)args;
|
||||
|
||||
if (serial->nonblock_state != MR_DISABLE) {
|
||||
return MR_EBUSY;
|
||||
}
|
||||
|
||||
uint8_t *pool = mr_realloc(serial->dma_wr_buf, bufsz);
|
||||
if ((pool == MR_NULL) && (bufsz != 0)) {
|
||||
return MR_ENOMEM;
|
||||
|
||||
Reference in New Issue
Block a user