示例#1
0
文件: lcd.cpp 项目: bratkov/tmos
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);
    }
}
示例#2
0
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);
}
示例#3
0
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);
}