WEAK void backlight_thread(LCD_MODULE *lcd) { ALLOCATE_SIGNAL(SIG_BACKLIGHT_TASK); PIO_CfgOutput1(lcd->pins[BKLT_PIN_INDX]); while(1) { PIO_SetOutput(lcd->pins[BKLT_PIN_INDX]); if(tsk_wait_signal(SIG_BACKLIGHT_TASK, backlight_time )) continue; if(backlight_time) { // reduce the current consumption to 5% int t = 20; while(!tsk_test_signal(SIG_BACKLIGHT_TASK)) { PIO_SetOutput(lcd->pins[BKLT_PIN_INDX]); tsk_sleep(t); PIO_ClrOutput(lcd->pins[BKLT_PIN_INDX]); tsk_sleep(20 - t--); if(!t) t=1; } } tsk_get_signal(SIG_BACKLIGHT_TASK); } }
static inline void START_RX_HND(UART_Type * Uart, UART_DRIVER_INFO * drv_info, HANDLE hnd) { #ifdef HW_VER_10 if(drv_info->info.drv_index != UART1_IRQn && drv_info->drv_data->mode.hw_flow) PIO_ClrOutput(drv_info->uart_pins[RTS_PIN]); #endif drv_info->drv_data->rx_remaining = hnd->len; drv_info->drv_data->rx_wrptr = hnd->dst.as_byteptr; Uart->UARTIntEnable(UART_INT_RX|UART_INT_RT); }
static inline void START_RX_BUF(UART_Type * Uart, UART_DRIVER_INFO * drv_info, UART_DRIVER_DATA * drv_data) { #ifdef HW_VER_10 if(drv_info->info.drv_index != UART1_IRQn && drv_info->drv_data->mode.hw_flow) PIO_ClrOutput(drv_info->uart_pins[RTS_PIN]); #endif drv_data->rx_ptr = drv_data->rx_buf; drv_data->rx_wrptr = drv_data->rx_buf; drv_data->rx_remaining = RX_BUF_SIZE; Uart->UARTIntEnable(UART_INT_RX|UART_INT_RT); }