/*
 *  ======== PWMTimerMSP432_close ========
 *  @pre    Function assumes that the handle is not NULL
 */
void PWMTimerMSP432_close(PWM_Handle handle)
{
    uintptr_t                     key;
    PWMTimerMSP432_Object        *object = handle->object;
    PWMTimerMSP432_HWAttrs const *hwAttrs = handle->hwAttrs;

    MAP_Timer_A_setCompareValue(hwAttrs->baseAddr, hwAttrs->compareRegister, 0);

    key = HwiP_disable();

    /* Mark the output as unused */
    (object->pwmTimerStatus)->activeOutputsMask &= ~(object->pwmCompareOutputBit);

    /* Stop timer & clear all status if no other PWM instances are being used */
    if ((object->pwmTimerStatus)->activeOutputsMask == 0) {
        MAP_Timer_A_stopTimer(hwAttrs->baseAddr);
        (object->pwmTimerStatus)->cyclesPerMicroSec = 0;
        (object->pwmTimerStatus)->period = 0;
        (object->pwmTimerStatus)->prescalar = 0;
    }

    object->isOpen = false;

    HwiP_restore(key);

    /* Remove power constraints */
    Power_releaseConstraint(PowerMSP432_DISALLOW_DEEPSLEEP_0);
    Power_releaseConstraint(PowerMSP432_DISALLOW_PERF_CHANGES);
    Power_releaseConstraint(PowerMSP432_DISALLOW_SHUTDOWN_0);
    Power_releaseConstraint(PowerMSP432_DISALLOW_SHUTDOWN_1);

    DebugP_log1("PWM: (%p) closed", (uintptr_t) handle);
}
Пример #2
0
void StopTimerA0_0()
{
	MAP_Timer_A_stopTimer(TIMER_A0_MODULE);
}