コード例 #1
0
ファイル: extser.c プロジェクト: Wassili-Hense/Vers3
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);
        }
    }
}
コード例 #2
0
ファイル: extpwm.c プロジェクト: X13home/X13.devices
void pwmDeleteOD(subidx_t * pSubidx)
{
    uint16_t base = pSubidx->Base;

    hal_pwm_delete(base);
    dioRelease(hal_dio_base2pin(base));
}