/********************************************************************* * * 在触摸校正的时候使用这个来读取ADC的值 */ void Touch_MainTask(void) { GUI_CURSOR_Show(); GUI_CURSOR_Select(&GUI_CursorCrossL); GUI_SetBkColor(GUI_WHITE); GUI_SetColor(GUI_BLACK); GUI_Clear(); GUI_DispString("Measurement of\nA/D converter values"); while (1) { GUI_PID_STATE TouchState; int xPhys, yPhys; GUI_TOUCH_GetState(&TouchState); /* Get the touch position in pixel */ xPhys = GUI_TOUCH_GetxPhys(); /* Get the A/D mesurement result in x */ yPhys = GUI_TOUCH_GetyPhys(); /* Get the A/D mesurement result in y */ /* Display the measurement result */ GUI_SetColor(GUI_BLUE); GUI_DispStringAt("Analog input:\n", 0, 20); GUI_GotoY(GUI_GetDispPosY() + 2); GUI_DispString("x:"); GUI_DispDec(xPhys, 4); GUI_DispString(", y:"); GUI_DispDec(yPhys, 4); /* Display the according position */ GUI_SetColor(GUI_RED); GUI_GotoY(GUI_GetDispPosY() + 4); GUI_DispString("\nPosition:\n"); GUI_GotoY(GUI_GetDispPosY() + 2); GUI_DispString("x:"); GUI_DispDec(TouchState.x,4); GUI_DispString(", y:"); GUI_DispDec(TouchState.y,4); /* Wait a while */ GUI_Delay(100); }; }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("spi touch screen test\r\n"); /* 初始化SPI2 接口连接触控屏的触控芯片*/ SPI_QuickInit(SPI2_SCK_PD12_SOUT_PD13_SIN_PD14, kSPI_CPOL0_CPHA0, 2*1000*1000); PORT_PinMuxConfig(HW_GPIOD, 11, kPinAlt2); /* SPI2_PCS0 */ /* 初始化触控芯片 使用CS0片选 */ ads7843_init(HW_SPI2, HW_SPI_CS0); GUI_Init();//液晶屏界面初始化 GUI_SetBkColor(GUI_WHITE); //设置背景色 GUI_SetColor(GUI_BLACK); //设置前景色 GUI_Clear(); //清屏 GUI_SetPenSize(3); //设置点的大小 GUI_DispString("Measurement of\nA/D converter values"); while (1) { GUI_PID_STATE TouchState; int xPhys, yPhys; GUI_TOUCH_GetState(&TouchState); /* 获得触控位置 */ xPhys = GUI_TOUCH_GetxPhys(); /* 获得x轴的测量值 */ yPhys = GUI_TOUCH_GetyPhys(); /* 获得y轴的测量值 */ /* 显示测量结果 */ GUI_SetColor(GUI_BLUE); GUI_DispStringAt("Analog input:\n", 0, 20); GUI_GotoY(GUI_GetDispPosY() + 2); GUI_DispString("x:"); GUI_DispDec(xPhys, 4); GUI_DispString(", y:"); GUI_DispDec(yPhys, 4); /* Display the according position */ GUI_SetColor(GUI_RED); GUI_GotoY(GUI_GetDispPosY() + 4); GUI_DispString("\nPosition:\n"); GUI_GotoY(GUI_GetDispPosY() + 2); GUI_DispString("x:"); GUI_DispDec(TouchState.x,4); GUI_DispString(", y:"); GUI_DispDec(TouchState.y,4); GUI_DrawPoint(TouchState.x, TouchState.y); GUI_TOUCH_Exec(); } }
void MainTask(void) { GUI_PID_STATE TouchState; GUI_Init(); GUI_CURSOR_Show(); GUI_Delay(1000); GUI_CURSOR_Select(&GUI_CursorCrossL); GUI_Delay(1000); while (1) { GUI_TOUCH_GetState(&TouchState); GUI_DispStringAt("Analog input: ", 0, 40); GUI_DispDec(GUI_TOUCH_GetxPhys(),4); GUI_DispString(","); GUI_DispDec(GUI_TOUCH_GetyPhys(),4); GUI_DispStringAt("TOUCH_X_MeasureX: ",0,60); GUI_DispDec(TouchState.x,4); GUI_DispString(","); GUI_DispDec(TouchState.y,4); GUI_Delay(100); }; }
void _ExecCalibration(void) { int ax_Phys[2],ay_Phys[2]; /* calculate log. Positions */ int ax[2] = { 15, LCD_XSIZE -1-15}; // const int ay[2] = { 15, LCD_YSIZE-1-15}; int ay[2] = { LCD_YSIZE-1-15, 15}; CalibrationComplete = 0; GUI_TOUCH_SetDefaultCalibration(); /* _Calibrate upper left */ GUI_SetBkColor(GUI_RED); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_FillCircle(ax[0], ay[0], 10); GUI_SetColor(GUI_RED); GUI_FillCircle(ax[0], ay[0], 5); GUI_SetColor(GUI_WHITE); GUI_DispStringAt("Press here", ax[0]+20, ay[0]); do { GUI_PID_STATE State; GUI_TOUCH_GetState(&State); if (State.Pressed) { ax_Phys[0] = GUI_TOUCH_GetxPhys(); ay_Phys[0] = GUI_TOUCH_GetyPhys(); break; } GUI_Delay (100); } while (1); /* Tell user to release */ GUI_Clear(); GUI_DispStringAt("OK", ax[0]+20, ay[0]); do { GUI_PID_STATE State; GUI_TOUCH_GetState(&State); if (State.Pressed == 0) { break; } GUI_Delay (100); } while (1); /* _Calibrate lower right */ GUI_SetBkColor(GUI_RED); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_FillCircle(ax[1], ay[1], 10); GUI_SetColor(GUI_RED); GUI_FillCircle(ax[1], ay[1], 5); GUI_SetColor(GUI_WHITE); GUI_SetTextAlign(GUI_TA_RIGHT); GUI_DispStringAt("Press here", ax[1]-20, ay[1]); do { GUI_PID_STATE State; GUI_TOUCH_GetState(&State); if (State.Pressed) { ax_Phys[1] = GUI_TOUCH_GetxPhys(); ay_Phys[1] = GUI_TOUCH_GetyPhys(); break; } GUI_Delay (100); } while (1); GUI_TOUCH_Calibrate(GUI_COORD_X, ax[0], ax[1], ax_Phys[0], ax_Phys[1]); GUI_TOUCH_Calibrate(GUI_COORD_Y, ay[0], ay[1], ay_Phys[0], ay_Phys[1]); { /* calculate and display values for configuration file */ int x0, x1; int y0, y1; GUI_Clear(); _Calibrate(GUI_COORD_X, ax[0], ax[1], ax_Phys[0], ax_Phys[1], &x0, &x1); _Calibrate(GUI_COORD_Y, ay[0], ay[1], ay_Phys[0], ay_Phys[1], &y0, &y1); GUI_DispStringAt("x0: ", 0, 0); GUI_DispDec(x0, 4); GUI_DispNextLine(); GUI_DispString ("x1: "); GUI_DispDec(x1, 4); GUI_DispNextLine(); GUI_DispString ("y0: "); GUI_DispDec(y0, 4); GUI_DispNextLine(); GUI_DispString ("y1: "); GUI_DispDec(y1, 4); GUI_DispNextLine(); GUI_DispString ("Please touch display to continue..."); GUI_Delay(1000); do { GUI_PID_STATE State; GUI_TOUCH_GetState(&State); if (State.Pressed) break; GUI_Delay (10); } while (1); } CalibrationComplete = 1; }
void _ExecCalibration(void) { int x,y; uint16_t data[6]; uint16_t get_data[6]; int ax_Phys[2],ay_Phys[2]; /* calculate log. Positions */ int ax[2] = { 15, LCD_XSIZE -1-15}; // const int ay[2] = { 15, LCD_YSIZE-1-15}; int ay[2] = { LCD_YSIZE-1-15, 15}; GUI_TOUCH_SetDefaultCalibration(); /* _Calibrate upper left */ GUI_SetBkColor(GUI_RED); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_FillCircle(ax[0], ay[0], 10); GUI_SetColor(GUI_RED); GUI_FillCircle(ax[0], ay[0], 5); GUI_SetColor(GUI_WHITE); GUI_DispStringAt("Press here", ax[0]+20, ay[0]); do { #if 0 GUI_PID_STATE State; GUI_TOUCH_GetState(&State); if (State.Pressed) { #endif #if 1 x = TPReadX(); y = TPReadY(); if ((x>=3700)&&(y>=3400)&&(x<3800)&&(y<3600)) { #endif ax_Phys[0] = GUI_TOUCH_GetxPhys(); ay_Phys[0] = GUI_TOUCH_GetyPhys(); break; } GUI_Delay (3000); } while (1); /* Tell user to release */ GUI_Clear(); GUI_DispStringAt("OK", ax[0]+20, ay[0]); do { GUI_PID_STATE State; GUI_TOUCH_GetState(&State); if (State.Pressed == 0) { break; } GUI_Delay (100); } while (1); /* _Calibrate lower right */ GUI_SetBkColor(GUI_RED); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_FillCircle(ax[1], ay[1], 10); GUI_SetColor(GUI_RED); GUI_FillCircle(ax[1], ay[1], 5); GUI_SetColor(GUI_WHITE); GUI_SetTextAlign(GUI_TA_RIGHT); GUI_DispStringAt("Press here", ax[1]-20, ay[1]); do { #if 1 x = TPReadX(); y = TPReadY(); if ((y>450)&&(y<620)&&(x>350)&&(x<450)) { #endif #if 0 GUI_PID_STATE State; GUI_TOUCH_GetState(&State); if (State.Pressed) { #endif ax_Phys[1] = GUI_TOUCH_GetxPhys(); ay_Phys[1] = GUI_TOUCH_GetyPhys(); break; } GUI_Delay (3000); } while (1); GUI_TOUCH_Calibrate(GUI_COORD_X, ax[0], ax[1], ax_Phys[0], ax_Phys[1]); GUI_TOUCH_Calibrate(GUI_COORD_Y, ay[0], ay[1], ay_Phys[0], ay_Phys[1]); { /* calculate and display values for configuration file */ int x0, x1; int y0, y1; GUI_Clear(); _Calibrate(GUI_COORD_X, ax[0], ax[1], ax_Phys[0], ax_Phys[1], &x0, &x1); _Calibrate(GUI_COORD_Y, ay[0], ay[1], ay_Phys[0], ay_Phys[1], &y0, &y1); GUI_DispStringAt("x0: ", 0, 0); GUI_DispDec(x0, 4); GUI_DispNextLine(); GUI_DispString ("x1: "); GUI_DispDec(x1, 4); GUI_DispNextLine(); GUI_DispString ("y0: "); GUI_DispDec(y0, 4); GUI_DispNextLine(); GUI_DispString ("y1: "); GUI_DispDec(y1, 4); GUI_DispNextLine(); GUI_DispString ("Please touch display to continue..."); GUI_Delay(1000); data[0]= CAL_READY; data[1]= ax_Phys[0]; data[2]= ay_Phys[0]; data[3]= ax_Phys[1]; data[4]= ay_Phys[1]; #if 1 save_calibrate_to_flash(data); get_calibrate_data(get_data); GUI_DispStringAt("x0: ", 100, 0); GUI_DispDec(get_data[1], 4); GUI_DispNextLine(); GUI_DispString ("x1: "); GUI_DispDec(get_data[2], 4); GUI_DispNextLine(); GUI_DispString ("y0: "); GUI_DispDec(get_data[3], 4); GUI_DispNextLine(); GUI_DispString ("y1: "); GUI_DispDec(get_data[4], 4); GUI_DispNextLine(); GUI_DispString ("state: "); GUI_DispDec(get_data[0], 4); GUI_DispNextLine(); #endif do { GUI_PID_STATE State; GUI_TOUCH_GetState(&State); if (State.Pressed) break; GUI_Delay (10); } while (1); } } int run_cal(void) { if(get_calibrate_state()== CAL_READY) { get_calibration(); }else{ #if 1 _ExecCalibration(); #endif #if 0 Calibration(); #endif } } int get_calibration(void) { uint16_t cal_data[5]; int ax_Phys[2],ay_Phys[2]; int ax[2] = { 15, LCD_XSIZE -1-15}; int ay[2] = { LCD_YSIZE-1-15, 15}; get_calibrate_data(cal_data); ax_Phys[0] = cal_data[1]; ay_Phys[0] = cal_data[2]; ax_Phys[1] = cal_data[3]; ay_Phys[1] = cal_data[4]; GUI_TOUCH_Calibrate(GUI_COORD_X, ax[0], ax[1], ax_Phys[0], ax_Phys[1]); GUI_TOUCH_Calibrate(GUI_COORD_Y, ay[0], ay[1], ay_Phys[0], ay_Phys[1]); } #if 0 void myAD2XY( int *adx , int *ady ){ float f_dat; int dat1; f_dat = (float)(*ady - admy)/(float)(*adx - admx); if(f_dat>0){ if( *adx>admx && admk[2] >=f_dat) dat1 = 1; else if( *adx>admx && admk[2] < f_dat ) dat1 =2;//2 else if( *adx<admx && admk[0] >=f_dat ) dat1 =0; else if( *adx<admx && admk[0] < f_dat ) dat1 =3;//0 else{ dat1 =0; }//*adx =0;*ady =0; } }else{ if( *adx>admx && admk[1] >=f_dat) dat1 = 0; else if( *adx>admx && admk[1] < f_dat ) dat1 =1;//1 else if( *adx<admx && admk[3] >=f_dat ) dat1 =3; else if( *adx<admx && admk[3] < f_dat ) dat1 =2;//3 else{ dat1 =0; }//*adx =0;*ady =0; } } *adx = (int)(Factors[dat1][0].a*(*adx)+Factors[dat1][0].b*(*ady)+Factors[dat1][0].c); *ady = (int)(Factors[dat1][1].a*(*adx)+Factors[dat1][1].b*(*ady)+Factors[dat1][1].c); }
void AppTaskGUI(void *p_arg) { // uint8_t i; GUI_COLOR Colorsback; OS_ERR err; OSTimeGet(&err); (void) p_arg; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE); // ¿ªÆôCRC ¹¦ÄÜ Lcd_Init(); // LCD ³õʼ»¯ Touch_Init(); // ÏÔʾÆÁ³õʼ»¯ WM_SetCreateFlags(WM_CF_MEMDEV); // ¿ªÆô ´°¿Ú ÄÚ´æÔÊÐí GUI_Init(); // £Ç£Õ£É¿ªÊ¼ GUI_Clear(); // ÇåÆÁ // FistPageDrawLine(); // CPU_SR_ALLOC(); // CPU_CRITICAL_ENTER(); // ½ûÖ¹ÖÐ¶Ï backWIn_init(); //µ÷ÓÃÏÔʾÆÁÏÔʾ½çÃæ Draw_init(); // GUI_CURSOR_Show(); //ÏÔʾָÕë pageChangFlag=0; while(1) { if(pageChangFlag) { GUI_SelectLayer(1); GUI_TOUCH_SetLayer(1); Colorsback=GUI_GetBkColor(); GUI_SetBkColor(GUI_DARKBLUE); GUI_SetFont(GUI_FONT_8X16); GUI_DispStringAt("Station : ",10,10); GUI_DispDec(pageChangFlag,1); GUI_GotoXY(98,39); GUI_DispFloat(getInformation[pageChangFlag-1].K_tmp,4); GUI_GotoXY(98,58); GUI_DispFloat(getInformation[pageChangFlag-1].K_hemo,4); GUI_GotoXY(336,39); GUI_DispFloat(getInformation[pageChangFlag-1].T_tmp,4); GUI_GotoXY(336,58); GUI_DispFloat(getInformation[pageChangFlag-1].T_hemp,4); GUI_SetBkColor(Colorsback); DrawingNewAnew(pageChangFlag); COMAND=0x04; // ÏÔʾҳÃæ DATA=1; GUI_Delay(100); }else { GUI_SelectLayer(0); GUI_TOUCH_SetLayer(0); COMAND=0x04; // ÏÔʾҳÃæ DATA=0; showShuJu(); } GUI_Delay(300); } }
void GUIDEMO_Unclassified(void) { int xSize = LCD_GetXSize(); int32_t acc_adc_data[3] = {0}; float acc_nkg[3] = {0}; uint32_t baro_data = 0; int32_t temp_data = 0; uint32_t humi_data = 0; uint32_t als_data = 0; uint32_t ps_data = 0; uint32_t step = 0; #if 0 if (sensor_all_open() != 0) return; #endif sensor_all_open(); // lighten GS-LED and ALS-LED hal_gpio_output_low(&brd_gpio_table[GPIO_LED_GS]); hal_gpio_output_low(&brd_gpio_table[GPIO_LED_ALS]); // set back screen black // GUIDEMO_HideInfoWin(); // GUIDEMO_ShowControlWin(); // GUI_Exec(); GUIDEMO_DrawBk(1); GUI_SetColor(GUI_BLACK); GUIDEMO_DrawBk(1); // set font GUI_SetColor(GUI_WHITE); GUI_SetFont(&GUI_Font16_ASCII); GUI_DispStringAt("step", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START); GUI_DispStringAt("acc_x", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 2); GUI_DispStringAt("acc_y", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 4); GUI_DispStringAt("acc_z", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 6); #if 0 GUI_DispStringAt("barometer", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 6); GUI_DispStringAt("temperature", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 8); GUI_DispStringAt("humidity", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 10); #endif GUI_DispStringAt("als", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 8); GUI_DispStringAt("proximity", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 10); GUI_DispStringAt("sensor data upload:", GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 12); // GUI_HWIN hWnd; do{ // print value // GUI_SetOrientation(GUI_SWAP_XY); // hWnd = WM_CreateWindow(10, 10, 200, 200, WM_CF_HIDE, _cbDesktop, 0); // HAL_Delay(1000); // WM_DeleteWindow(hWnd); // print value type if (!get_acc_data(&acc_adc_data[0], &acc_adc_data[1], &acc_adc_data[2], &step)) { acc_nkg[0] = (float)acc_adc_data[0] * 9.8 / 1024; acc_nkg[1] = (float)acc_adc_data[1] * 9.8 / 1024; acc_nkg[2] = (float)acc_adc_data[2] * 9.8 / 1024; GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START); GUI_DispDec(step, DEC_LEN_DEF); GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 2); GUI_DispFloatFix(acc_nkg[0], 7, 3); GUI_DispString(" N/kg"); GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 4); GUI_DispFloatFix(acc_nkg[1], 7, 3); GUI_DispString(" N/kg"); GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 6); GUI_DispFloatFix(acc_nkg[2], 7, 3); GUI_DispString(" N/kg"); } else { GUI_DispStringAt("unknow", (xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 2); GUI_DispStringAt("unknow", (xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 4); GUI_DispStringAt("unknow", (xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 6); } #if 0 if (!get_baro_data(&baro_data)) { GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP * 6); GUI_DispDec(baro_data, DEC_LEN_DEF); }
void USART1_IRQHandler(void) // Interrupt on char recieving from USART1 (Android board) { unsigned char param[16]; LED_LED1_ON(); if (USART_GetITStatus(USART1, USART_IT_RXNE) != (u16)RESET) { USART_ClearITPendingBit(USART1, USART_IT_RXNE); AndroidReceivedChar = USART_ReceiveData(USART1); AndroidBuffer[AndroidBufferIndex] = AndroidReceivedChar; AndroidBufferIndex++; if (AndroidReceivedChar == 19) // f*****g programmer { AndroidBuffer[AndroidBufferIndex-1] = 0; //EOL AndroidBufferIndex = 0; strcpy(param, AndroidBuffer+1); switch (AndroidBuffer[0]) { case 'R': if (!strcmp(param, "0")) { GUI_DispString("Radio Mute\n"); // TODO: Radio mute break; } GUI_DispString("Freq = "); GUI_DispDec(atol(param)*100000, 9); GUI_DispString("Hz\n"); SetPLL(atol(param)*100000); break; case 'V': setAudioVolume(atoi(param)); GUI_DispString("Volume = "); GUI_DispDec(atoi(param), 2); GUI_DispString("\n"); break; case 'B': setAudioBalance(atoi(param)); GUI_DispString("Balance = "); GUI_DispDec(atoi(param), 2); GUI_DispString("\n"); break; case 'J': setAudioBass(atoi(param)); GUI_DispString("Bass = "); GUI_DispDec(atoi(param), 2); GUI_DispString("\n"); break; case 'K': setAudioTreble(atoi(param)); GUI_DispString("Treble = "); GUI_DispDec(atoi(param), 2); GUI_DispString("\n"); break; case 'L': setAudioRearLeftVolume(atoi(param)); GUI_DispString("Rear Left volume = "); GUI_DispDec(atoi(param), 2); GUI_DispString("\n"); break; case 'X': setAudioRearRightVolume(atoi(param)); GUI_DispString("Rear Right volume = "); GUI_DispDec(atoi(param), 2); GUI_DispString("\n"); break; case 'M': setAudioMute(atoi(param)); GUI_DispString("Audio mute = "); GUI_DispDec(atoi(param), 2); GUI_DispString("\n"); break; case 'S': setAudioSource(atoi(param)); GUI_DispString("Audio source = "); GUI_DispDec(atoi(param), 2); GUI_DispString("\n"); break; default: break; } } } LED_LED1_OFF(); }