void serDeleteOD(subidx_t * pSubidx) { uint8_t port = pSubidx->Base / 10; uint8_t TxPin, RxPin; hal_uart_get_pins(port, &RxPin, &TxPin); if(extSerV[port] != NULL) { if(pSubidx->Type == ObjSerTx) { extSerV[port]->flags &= ~EXTSER_FLAG_TXEN; } else { extSerV[port]->flags &= ~EXTSER_FLAG_RXEN; if(extSerV[port]->pRxBuf != NULL) { mqFree(extSerV[port]->pRxBuf); extSerV[port]->pRxBuf = NULL; } } if((extSerV[port]->flags & (EXTSER_FLAG_TXEN | EXTSER_FLAG_RXEN)) == 0) { hal_uart_deinit(port); mqFree(extSerV[port]); extSerV[port] = NULL; dioRelease(TxPin); dioRelease(RxPin); } } }
void pwmDeleteOD(subidx_t * pSubidx) { uint16_t base = pSubidx->Base; hal_pwm_delete(base); dioRelease(hal_dio_base2pin(base)); }