fix(serial,drv_pin): 修复serial方法检查错误,修复PIN驱动中断关闭错误

感谢Lucas反馈问题
This commit is contained in:
MacRsh
2025-04-07 19:50:46 +08:00
parent 8cfcbfedf8
commit c945804480
3 changed files with 12 additions and 2 deletions

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;