/*---------------------------------------------------------------------------*/ void cc26xx_uart_set_input(int (*input)(unsigned char c)) { input_handler = input; /* Return early if disabled by user conf or if ports are misconfigured */ if(usable() == false) { return; } if(input == NULL) { /* Let the SERIAL PD power down */ uart_module.domain_lock = LPM_DOMAIN_NONE; /* Disable module clocks under sleep and deep sleep */ ti_lib_prcm_peripheral_sleep_disable(PRCM_PERIPH_UART0); ti_lib_prcm_peripheral_deep_sleep_disable(PRCM_PERIPH_UART0); } else { /* Request the SERIAL PD to stay on during deep sleep */ uart_module.domain_lock = LPM_DOMAIN_SERIAL; /* Enable module clocks under sleep and deep sleep */ ti_lib_prcm_peripheral_sleep_enable(PRCM_PERIPH_UART0); ti_lib_prcm_peripheral_deep_sleep_enable(PRCM_PERIPH_UART0); } ti_lib_prcm_load_set(); while(!ti_lib_prcm_load_get()); enable(); return; }
/*---------------------------------------------------------------------------*/ void buzzer_start(int freq) { uint32_t load; buzzer_on = 1; lpm_pd_lock_obtain(&lock, PRCM_DOMAIN_PERIPH); /* Stop the timer */ ti_lib_timer_disable(GPT0_BASE, TIMER_A); if(freq > 0) { load = (GET_MCU_CLOCK / freq); ti_lib_timer_load_set(GPT0_BASE, TIMER_A, load); ti_lib_timer_match_set(GPT0_BASE, TIMER_A, load / 2); /* Start */ ti_lib_timer_enable(GPT0_BASE, TIMER_A); } /* Run in sleep mode */ ti_lib_prcm_peripheral_sleep_enable(PRCM_PERIPH_TIMER0); ti_lib_prcm_peripheral_deep_sleep_enable(PRCM_PERIPH_TIMER0); ti_lib_prcm_load_set(); while(!ti_lib_prcm_load_get()); }