本文整理汇总了C++中BSP_TS_GetState函数的典型用法代码示例。如果您正苦于以下问题:C++ BSP_TS_GetState函数的具体用法?C++ BSP_TS_GetState怎么用?C++ BSP_TS_GetState使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了BSP_TS_GetState函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: WaitForPressedState
/**
* @brief Wait For Pressed State
* @param Pressed: Pressed State
* @retval None
*/
static void WaitForPressedState(uint8_t Pressed)
{
TS_StateTypeDef State;
do
{
BSP_TS_GetState(&State);
HAL_Delay(10);
if (State.TouchDetected == Pressed)
{
uint16_t TimeStart = HAL_GetTick();
do {
BSP_TS_GetState(&State);
HAL_Delay(10);
if (State.TouchDetected != Pressed)
{
break;
} else if ((HAL_GetTick() - 100) > TimeStart)
{
return;
}
} while (1);
}
} while (1);
}
开发者ID:PaxInstruments,项目名称:STM32CubeF4,代码行数:30,代码来源:ts_calibration.c
示例2: HAL_GPIO_EXTI_Callback
/**
* @brief EXTI line detection callbacks
* @param GPIO_Pin: Specifies the pins connected EXTI line
* @retval None
*/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
TS_StateTypeDef TS_State;
if(GPIO_Pin == TS_INT_PIN)
{
BSP_TS_GetState(&TS_State);
if(TS_State.touchDetected)
{
if (TS_State.touchY[0] < 30)
{
/* Top of the screen touch detected */
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
BSP_LCD_DisplayStringAt(0, (BSP_LCD_GetYSize()/2)+15, (uint8_t *)" Send opcode 44, operand 41 ", CENTER_MODE);
Tab_Tx[0] = 0x44;
Tab_Tx[1] = 0x41;
TxSize = 0x02;
StartSending = 1;
}
else if (TS_State.touchY[0] > (BSP_LCD_GetYSize() - 30))
{
/* Bottom of the screen touch detected */
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_SetBackColor(LCD_COLOR_GREEN);
BSP_LCD_DisplayStringAt(0, (BSP_LCD_GetYSize()/2)+15, (uint8_t *)" Send opcode 44, operand 42 ", CENTER_MODE);
Tab_Tx[0] = 0x44;
Tab_Tx[1] = 0x42;
TxSize = 0x02;
StartSending = 1;
}
else if (TS_State.touchX[0] < 30)
{
/* Left of the screen touch detected */
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_SetBackColor(LCD_COLOR_ORANGE);
BSP_LCD_DisplayStringAt(0, (BSP_LCD_GetYSize()/2)+15, (uint8_t *)" Send opcode 46 ", CENTER_MODE);
Tab_Tx[0] = 0x46;
TxSize = 0x01;
StartSending = 1;
}
else if (TS_State.touchX[0] > (BSP_LCD_GetXSize() - 30))
{
/* Right of the screen touch detected */
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_SetBackColor(LCD_COLOR_DARKMAGENTA);
BSP_LCD_DisplayStringAt(0, (BSP_LCD_GetYSize()/2)+15, (uint8_t *)" Send opcode 9F ", CENTER_MODE);
Tab_Tx[0] = 0x9F;
TxSize = 0x01;
StartSending = 1;
}
/* Wait for touch screen no touch detected */
do
{
BSP_TS_GetState(&TS_State);
}while(TS_State.touchDetected > 0);
}
}
}
开发者ID:RadMie,项目名称:STM32F7DiscoveryBase,代码行数:64,代码来源:main.c
示例3: AUDIO_AcquireTouchButtons
/**
* @brief Test touch screen state and modify audio state machine according to that
* @param None
* @retval None
*/
static void AUDIO_AcquireTouchButtons(void)
{
static TS_StateTypeDef TS_State= {0};
if(TS_State.touchDetected == 1) /* If previous touch has not been released, we don't proceed any touch command */
{
BSP_TS_GetState(&TS_State);
}
else
{
BSP_TS_GetState(&TS_State);
if(TS_State.touchDetected == 1)
{
if ((TS_State.touchX[0] > TOUCH_PAUSE_XMIN) && (TS_State.touchX[0] < TOUCH_PAUSE_XMAX) &&
(TS_State.touchY[0] > TOUCH_PAUSE_YMIN) && (TS_State.touchY[0] < TOUCH_PAUSE_YMAX))
{
if (AudioState == AUDIO_STATE_PLAY)
{
AudioState = AUDIO_STATE_PAUSE;
}
else
{
AudioState = AUDIO_STATE_RESUME;
}
}
else if ((TS_State.touchX[0] > TOUCH_NEXT_XMIN) && (TS_State.touchX[0] < TOUCH_NEXT_XMAX) &&
(TS_State.touchY[0] > TOUCH_NEXT_YMIN) && (TS_State.touchY[0] < TOUCH_NEXT_YMAX))
{
AudioState = AUDIO_STATE_NEXT;
}
else if ((TS_State.touchX[0] > TOUCH_PREVIOUS_XMIN) && (TS_State.touchX[0] < TOUCH_PREVIOUS_XMAX) &&
(TS_State.touchY[0] > TOUCH_PREVIOUS_YMIN) && (TS_State.touchY[0] < TOUCH_PREVIOUS_YMAX))
{
AudioState = AUDIO_STATE_PREVIOUS;
}
else if ((TS_State.touchX[0] > TOUCH_STOP_XMIN) && (TS_State.touchX[0] < TOUCH_STOP_XMAX) &&
(TS_State.touchY[0] > TOUCH_STOP_YMIN) && (TS_State.touchY[0] < TOUCH_STOP_YMAX))
{
AudioState = AUDIO_STATE_STOP;
}
else if((TS_State.touchX[0] > TOUCH_VOL_MINUS_XMIN) && (TS_State.touchX[0] < TOUCH_VOL_MINUS_XMAX) &&
(TS_State.touchY[0] > TOUCH_VOL_MINUS_YMIN) && (TS_State.touchY[0] < TOUCH_VOL_MINUS_YMAX))
{
AudioState = AUDIO_STATE_VOLUME_DOWN;
}
else if((TS_State.touchX[0] > TOUCH_VOL_PLUS_XMIN) && (TS_State.touchX[0] < TOUCH_VOL_PLUS_XMAX) &&
(TS_State.touchY[0] > TOUCH_VOL_PLUS_YMIN) && (TS_State.touchY[0] < TOUCH_VOL_PLUS_YMAX))
{
AudioState = AUDIO_STATE_VOLUME_UP;
}
}
}
}
开发者ID:MrZANE42,项目名称:verisure1512,代码行数:58,代码来源:waveplayer.c
示例4: BSP_Pointer_Update
/**
* @brief Provide the GUI with current state of the touch screen
* @param None
* @retval None
*/
void BSP_Pointer_Update(void)
{
GUI_PID_STATE TS_State;
static TS_StateTypeDef prev_state;
TS_StateTypeDef ts;
uint16_t xDiff, yDiff;
BSP_TS_GetState(&ts);
TS_State.Pressed = ts.TouchDetected;
xDiff = (prev_state.x > ts.x) ? (prev_state.x - ts.x) : (ts.x - prev_state.x);
yDiff = (prev_state.y > ts.y) ? (prev_state.y - ts.y) : (ts.y - prev_state.y);
if((prev_state.TouchDetected != ts.TouchDetected )||
(xDiff > 3 )||
(yDiff > 3))
{
prev_state.TouchDetected = ts.TouchDetected;
if((ts.x != 0) && (ts.y != 0))
{
prev_state.x = ts.x;
prev_state.y = ts.y;
}
if(CALIBRATION_IsDone())
{
TS_State.Layer = 0;
TS_State.x = CALIBRATION_GetX (prev_state.x);
TS_State.y = CALIBRATION_GetY (prev_state.y);
}
else
{
TS_State.Layer = 0;
TS_State.x = prev_state.x;
TS_State.y = prev_state.y;
}
GUI_TOUCH_StoreStateEx(&TS_State);
}
}
开发者ID:pierreroth64,项目名称:STM32Cube_FW_F4,代码行数:47,代码来源:main.c
示例5: BSP_Pointer_Update
/**
* @brief Provide the GUI with current state of the touch screen
* @param None
* @retval None
*/
void BSP_Pointer_Update(void)
{
GUI_PID_STATE TS_State;
static TS_StateTypeDef prev_state;
TS_StateTypeDef ts;
uint16_t xDiff, yDiff;
BSP_TS_GetState(&ts);
TS_State.Pressed = ts.TouchDetected;
xDiff = (prev_state.X > ts.X) ? (prev_state.X - ts.X) : (ts.X - prev_state.X);
yDiff = (prev_state.Y > ts.Y) ? (prev_state.Y - ts.Y) : (ts.Y - prev_state.Y);
if((prev_state.TouchDetected != ts.TouchDetected )||
(xDiff > 3 )||
(yDiff > 3))
{
prev_state.TouchDetected = ts.TouchDetected;
if((ts.X != 0) && (ts.Y != 0))
{
prev_state.X = ts.X;
prev_state.Y = ts.Y;
}
if(CALIBRATION_IsDone())
{
TS_State.Layer = 0;
TS_State.x = CALIBRATION_GetX (prev_state.X);
TS_State.y = CALIBRATION_GetY (prev_state.Y);
}
else
{
TS_State.Layer = 0;
TS_State.x = prev_state.X;
TS_State.y = prev_state.Y;
}
GUI_TOUCH_StoreStateEx(&TS_State);
}
}
开发者ID:pierreroth64,项目名称:STM32Cube_FW_F4,代码行数:47,代码来源:main.c
示例6: k_TouchUpdate
/**
* @brief Read the coordinate of the point touched and assign their
* value to the variables u32_TSXCoordinate and u32_TSYCoordinate
* @param None
* @retval None
*/
void k_TouchUpdate(void)
{
GUI_PID_STATE TS_State;
static TS_StateTypeDef prev_state;
__IO TS_StateTypeDef ts;
uint16_t xDiff, yDiff;
BSP_TS_GetState((TS_StateTypeDef *)&ts);
TS_State.Pressed = ts.TouchDetected;
xDiff = (prev_state.x > ts.x) ? (prev_state.x - ts.x) : (ts.x - prev_state.x);
yDiff = (prev_state.y > ts.y) ? (prev_state.y - ts.y) : (ts.y - prev_state.y);
if((prev_state.TouchDetected != ts.TouchDetected )||
(xDiff > 3 )||
(yDiff > 3))
{
prev_state.TouchDetected = ts.TouchDetected;
if((ts.x != 0) && (ts.y != 0))
{
prev_state.x = ts.x;
prev_state.y = ts.y;
}
if(k_CalibrationIsDone())
{
TS_State.Layer = 0;
TS_State.x = k_CalibrationGetX (prev_state.x);
TS_State.y = k_CalibrationGetY (prev_state.y);
}
else
{
TS_State.Layer = 0;
TS_State.x = prev_state.x;
TS_State.y = prev_state.y;
}
GUI_TOUCH_StoreStateEx(&TS_State);
}
}
开发者ID:Joe-Merten,项目名称:Stm32-Tools-Evaluation,代码行数:48,代码来源:k_bsp.c
示例7: GetPhysValues
/**
* @brief Get Physical position
* @param LogX : logical X position
* @param LogY : logical Y position
* @param pPhysX : Physical X position
* @param pPhysY : Physical Y position
* @retval None
*/
static void GetPhysValues(int16_t LogX, int16_t LogY, int16_t * pPhysX, int16_t * pPhysY)
{
/* Draw the ring */
BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
BSP_LCD_FillCircle(LogX, LogY, 5);
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_FillCircle(LogX, LogY, 2);
/* Wait until touch is pressed */
WaitForPressedState(1);
BSP_TS_GetState(&TS_State);
*pPhysX = TS_State.X;
*pPhysY = TS_State.Y;
/* Wait until touch is released */
WaitForPressedState(0);
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_FillCircle(LogX, LogY, 5);
}
开发者ID:PaxInstruments,项目名称:STM32CubeF4,代码行数:28,代码来源:ts_calibration.c
示例8: k_TouchUpdate
/**
* @brief Read the coordinate of the point touched and assign their
* value to the variables u32_TSXCoordinate and u32_TSYCoordinate
* @param None
* @retval None
*/
void k_TouchUpdate(void)
{
static GUI_PID_STATE TS_State = {0, 0, 0, 0};
__IO TS_StateTypeDef ts;
uint16_t xDiff, yDiff;
BSP_TS_GetState((TS_StateTypeDef *)&ts);
if((ts.x >= LCD_GetXSize()) ||(ts.y >= LCD_GetYSize()) )
{
ts.x = 0;
ts.y = 0;
ts.TouchDetected =0;
}
xDiff = (TS_State.x > ts.x) ? (TS_State.x - ts.x) : (ts.x - TS_State.x);
yDiff = (TS_State.y > ts.y) ? (TS_State.y - ts.y) : (ts.y - TS_State.y);
if((TS_State.Pressed != ts.TouchDetected ) ||
(xDiff > 30 )||
(yDiff > 30))
{
TS_State.Pressed = ts.TouchDetected;
TS_State.Layer = SelLayer;
if(ts.TouchDetected)
{
TS_State.x = ts.x;
TS_State.y = ts.y;
GUI_TOUCH_StoreStateEx(&TS_State);
}
else
{
GUI_TOUCH_StoreStateEx(&TS_State);
TS_State.x = 0;
TS_State.y = 0;
}
}
}
开发者ID:RadMie,项目名称:STM32F7DiscoveryBase,代码行数:45,代码来源:k_bsp.c
示例9: BSP_Pointer_Update
void BSP_Pointer_Update(void)
{
GUI_PID_STATE TS_State;
static TS_StateTypeDef prev_state;
TS_StateTypeDef ts;
uint16_t xDiff, yDiff;
BSP_TS_GetState(&ts);
TS_State.Pressed = ts.TouchDetected;
if (ts.TouchDetected)
{
xDiff = (prev_state.X > ts.X) ? (prev_state.X - ts.X) : (ts.X - prev_state.X);
yDiff = (prev_state.Y > ts.Y) ? (prev_state.Y - ts.Y) : (ts.Y - prev_state.Y);
if ((prev_state.TouchDetected != ts.TouchDetected) || (xDiff > 3) || (yDiff > 3))
{
prev_state = ts;
TS_State.Layer = 0;
TS_State.x = ts.X;
TS_State.y = ts.Y;
GUI_TOUCH_StoreStateEx(&TS_State);
}
}
else
{
// Use -1 if touch is not pressed.
TS_State.Layer = 0;
TS_State.x = -1;
TS_State.y = -1;
GUI_TOUCH_StoreStateEx(&TS_State);
}
}
开发者ID:SMelanko,项目名称:STemWinPro,代码行数:37,代码来源:Main.c
示例10: Touchscreen_Handle_NewTouch
/**
* @brief Touchscreen_Handle_NewTouch: factorization of touch management
* @param None
* @retval TS_OK or TS_ERROR
*/
static uint32_t Touchscreen_Handle_NewTouch(void)
{
#define TS_MULTITOUCH_FOOTPRINT_CIRCLE_RADIUS 15
#define TOUCH_INFO_STRING_SIZE 70
uint16_t x1 = 0;
uint16_t y1 = 0;
uint16_t x2 = 0;
uint16_t y2 = 0;
uint32_t drawTouch1 = 0; /* activate/deactivate draw of footprint of touch 1 */
uint32_t drawTouch2 = 0; /* activate/deactivate draw of footprint of touch 2 */
uint32_t colors[24] = {LCD_COLOR_BLUE, LCD_COLOR_GREEN, LCD_COLOR_RED, LCD_COLOR_CYAN, LCD_COLOR_MAGENTA, LCD_COLOR_YELLOW,
LCD_COLOR_LIGHTBLUE, LCD_COLOR_LIGHTGREEN, LCD_COLOR_LIGHTRED, LCD_COLOR_LIGHTCYAN, LCD_COLOR_LIGHTMAGENTA,
LCD_COLOR_LIGHTYELLOW, LCD_COLOR_DARKBLUE, LCD_COLOR_DARKGREEN, LCD_COLOR_DARKRED, LCD_COLOR_DARKCYAN,
LCD_COLOR_DARKMAGENTA, LCD_COLOR_DARKYELLOW, LCD_COLOR_LIGHTGRAY, LCD_COLOR_GRAY, LCD_COLOR_DARKGRAY,
LCD_COLOR_BLACK, LCD_COLOR_BROWN, LCD_COLOR_ORANGE };
uint32_t ts_status = TS_OK;
uint8_t lcd_string[TOUCH_INFO_STRING_SIZE] = "";
/* Check in polling mode in touch screen the touch status and coordinates */
/* of touches if touch occurred */
ts_status = BSP_TS_GetState(&TS_State);
if(TS_State.touchDetected)
{
/* One or dual touch have been detected */
/* Erase previous information on touchscreen play pad area */
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_FillRect(0, 80, BSP_LCD_GetXSize(), BSP_LCD_GetYSize() - 160);
/* Re-Draw touch screen play area on LCD */
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize() - 180);
BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize() - 182);
/* Erase previous information on bottom text bar */
BSP_LCD_FillRect(0, BSP_LCD_GetYSize() - 80, BSP_LCD_GetXSize(), 80);
/* Desactivate drawing footprint of touch 1 and touch 2 until validated against boundaries of touch pad values */
drawTouch1 = drawTouch2 = 0;
/* Get X and Y position of the first touch post calibrated */
x1 = TouchScreen_Get_Calibrated_X(TS_State.touchX[0]);
y1 = TouchScreen_Get_Calibrated_Y(TS_State.touchY[0]);
if((y1 > (90 + TS_MULTITOUCH_FOOTPRINT_CIRCLE_RADIUS)) &&
(y1 < (BSP_LCD_GetYSize() - 90 - TS_MULTITOUCH_FOOTPRINT_CIRCLE_RADIUS)))
{
drawTouch1 = 1;
}
/* If valid touch 1 position : inside the reserved area for the use case : draw the touch */
if(drawTouch1 == 1)
{
/* Draw circle of first touch : turn on colors[] table */
BSP_LCD_SetTextColor(colors[(touchscreen_color_idx++ % 24)]);
BSP_LCD_FillCircle(x1, y1, TS_MULTITOUCH_FOOTPRINT_CIRCLE_RADIUS);
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_SetFont(&Font16);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 70, (uint8_t *)"TOUCH INFO : ", CENTER_MODE);
BSP_LCD_SetFont(&Font12);
sprintf((char*)lcd_string, "x1 = %d, y1 = %d, Event = %s, Weight = %d",
x1,
y1,
ts_event_string_tab[TS_State.touchEventId[0]],
TS_State.touchWeight[0]);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 45, lcd_string, CENTER_MODE);
} /* of if(drawTouch1 == 1) */
if(TS_State.touchDetected > 1)
{
/* Get X and Y position of the second touch post calibrated */
x2 = TouchScreen_Get_Calibrated_X(TS_State.touchX[1]);
y2 = TouchScreen_Get_Calibrated_Y(TS_State.touchY[1]);
if((y2 > (90 + TS_MULTITOUCH_FOOTPRINT_CIRCLE_RADIUS)) &&
(y2 < (BSP_LCD_GetYSize() - 90 - TS_MULTITOUCH_FOOTPRINT_CIRCLE_RADIUS)))
{
drawTouch2 = 1;
}
/* If valid touch 2 position : inside the reserved area for the use case : draw the touch */
if(drawTouch2 == 1)
{
sprintf((char*)lcd_string, "x2 = %d, y2 = %d, Event = %s, Weight = %d",
x2,
y2,
ts_event_string_tab[TS_State.touchEventId[1]],
TS_State.touchWeight[1]);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 35, lcd_string, CENTER_MODE);
/* Draw circle of second touch : turn on color[] table */
BSP_LCD_SetTextColor(colors[(touchscreen_color_idx++ % 24)]);
BSP_LCD_FillCircle(x2, y2, TS_MULTITOUCH_FOOTPRINT_CIRCLE_RADIUS);
//.........这里部分代码省略.........
开发者ID:Lembed,项目名称:STM32CubeF4-mirrors,代码行数:101,代码来源:touchscreen.c
示例11: Camera_demo
//.........这里部分代码省略.........
special_effect = CAMERA_BLACK_WHITE; /* No special effect applied */
color_effect = CAMERA_BLACK_WHITE_NORMAL;
contrast = CAMERA_CONTRAST_LEVEL2; /* Mid-level brightness */
brightness = CAMERA_BRIGHTNESS_LEVEL2; /* Mid-level contrast */
CameraFrameBufferInitComplete = 0;
CameraFrameBufferInitError = 0;
/* Init or Re-Init Camera frame buffer by using DMA2D engine in mode Register to Memory */
camera_status = CameraFrameBufferRgb565_Init(CAMERA_VGA_RES_X,
CAMERA_VGA_RES_Y,
argb8888_Value);
ASSERT(camera_status != CAMERA_OK);
/* Wait end of DMA2D operation of error : via IT callback update */
while((CameraFrameBufferInitComplete == 0) && (CameraFrameBufferInitError == 0)) {;}
/* Assert if error : no transfer complete */
ASSERT(CameraFrameBufferInitComplete != 1);
/* Start / Restart camera stream */
BSP_CAMERA_ContinuousStart((uint8_t *)CAMERA_FRAME_BUFFER);
/* Allow DMA2D copy from Camera frame buffer to LCD Frame buffer location */
Camera_AllowDma2dCopyCamFrmBuffToLcdFrmBuff = 1;
}
} /* (CameraResIndex != CameraCurrentResIndex) */
if (camera_status == CAMERA_OK)
{
/* Check in polling mode in touch screen the touch status and coordinates */
/* if touch occurred */
BSP_TS_GetState(&TS_State);
if(TS_State.touchDetected >= 1)
{
/* Check touch position to apply brightness or contrast change */
if (TS_State.touchDetected == 1)
{
if ((TS_State.touchY[0] < 30) && (brightness < CAMERA_BRIGHTNESS_MAX))
{
TS_command = TS_BRIGHTNESS_INC;
brightness++;
}
else if ((TS_State.touchY[0] > (BSP_LCD_GetYSize() - 30)) && (brightness > CAMERA_BRIGHTNESS_MIN) )
{
TS_command = TS_BRIGHTNESS_DEC;
brightness--;
}
else if ((TS_State.touchX[0] < 30) && (contrast > CAMERA_CONTRAST_MIN))
{
TS_command = TS_CONTRAST_DEC;
contrast--;
}
else if ((TS_State.touchX[0] > (BSP_LCD_GetXSize() - 30)) && (contrast < CAMERA_CONTRAST_MAX))
{
TS_command = TS_CONTRAST_INC;
contrast++;
}
else
{
TS_command = TS_NO_COMMAND;
}
}
/* Special effect change */
开发者ID:acrepina,项目名称:STM32F7_serverWEB,代码行数:67,代码来源:camera.c
示例12: Touchscreen_demo1
/**
* @brief Touchscreen Demo1 : test touchscreen calibration and single touch in polling mode
* @param None
* @retval None
*/
void Touchscreen_demo1(void)
{
uint16_t x1, y1;
uint8_t state = 0;
uint8_t exitTsUseCase = 0;
uint32_t ts_status = TS_OK;
/* Reset touch data information */
BSP_TEST_APPLI_ASSERT(BSP_TS_ResetTouchData(&TS_State));
/* If calibration is not yet done, proceed with calibration */
if (TouchScreen_IsCalibrationDone() == 0)
{
ts_status = Touchscreen_Calibration();
if (ts_status == TS_OK)
{
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 65, (uint8_t *) "Touchscreen calibration success.", CENTER_MODE);
}
} /* of if (TouchScreen_IsCalibrationDone() == 0) */
if(ts_status == TS_OK)
{
/* Display touch screen demo description */
Touchscreen_SetHint_Demo(TOUCHSCREEN_DEMO_1);
Touchscreen_DrawBackground_Demo1(state);
while (exitTsUseCase == 0)
{
if (ts_status == TS_OK)
{
/* Check in polling mode in touch screen the touch status and coordinates */
/* of touches if touch occurred */
ts_status = BSP_TS_GetState(&TS_State);
if(TS_State.touchDetected)
{
/* One or dual touch have been detected */
/* Only take into account the first touch so far */
/* Get X and Y position of the first touch post calibrated */
x1 = TouchScreen_Get_Calibrated_X(TS_State.touchX[0]);
y1 = TouchScreen_Get_Calibrated_Y(TS_State.touchY[0]);
if ((y1 > (CIRCLE_YPOS(1) - CIRCLE_RADIUS)) &&
(y1 < (CIRCLE_YPOS(1) + CIRCLE_RADIUS)))
{
if ((x1 > (CIRCLE_XPOS(1) - CIRCLE_RADIUS)) &&
(x1 < (CIRCLE_XPOS(1) + CIRCLE_RADIUS)))
{
if ((state & 1) == 0)
{
Touchscreen_DrawBackground_Demo1(state);
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_FillCircle(CIRCLE_XPOS(1), CIRCLE_YPOS(1), CIRCLE_RADIUS);
state = 1;
}
}
if ((x1 > (CIRCLE_XPOS(2) - CIRCLE_RADIUS)) &&
(x1 < (CIRCLE_XPOS(2) + CIRCLE_RADIUS)))
{
if ((state & 2) == 0)
{
Touchscreen_DrawBackground_Demo1(state);
BSP_LCD_SetTextColor(LCD_COLOR_RED);
BSP_LCD_FillCircle(CIRCLE_XPOS(2), CIRCLE_YPOS(2), CIRCLE_RADIUS);
state = 2;
}
}
if ((x1 > (CIRCLE_XPOS(3) - CIRCLE_RADIUS)) &&
(x1 < (CIRCLE_XPOS(3) + CIRCLE_RADIUS)))
{
if ((state & 4) == 0)
{
Touchscreen_DrawBackground_Demo1(state);
BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
BSP_LCD_FillCircle(CIRCLE_XPOS(3), CIRCLE_YPOS(3), CIRCLE_RADIUS);
state = 4;
}
}
if ((x1 > (CIRCLE_XPOS(4) - CIRCLE_RADIUS)) &&
(x1 < (CIRCLE_XPOS(4) + CIRCLE_RADIUS)))
{
if ((state & 8) == 0)
{
Touchscreen_DrawBackground_Demo1(state);
BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
BSP_LCD_FillCircle(CIRCLE_XPOS(4), CIRCLE_YPOS(3), CIRCLE_RADIUS);
state = 8;
}
}
}
} /* of if(TS_State.TouchDetected) */
//.........这里部分代码省略.........
开发者ID:Lembed,项目名称:STM32CubeF4-mirrors,代码行数:101,代码来源:touchscreen.c
示例13: GetPosition
/**
* @brief Configures and gets Touch screen position.
* @param None
* @retval None
*/
static void GetPosition(void)
{
static uint32_t x = 0, y = 0;
static uint32_t color_heigh;
static uint32_t color;
static TS_StateTypeDef TS_State;
/* Heigh of color pen */
color_heigh = 20;
/* Get Touch screen position */
BSP_TS_GetState(&TS_State);
/* Read the coordinate */
x = Calibration_GetX(TS_State.X);
y = Calibration_GetX(TS_State.Y);
if ((TS_State.TouchDetected) & ( x > 0 ) & ( x < 50 ))
{
/* User selects one of the color pens */
if ((TS_State.TouchDetected) & ( y > 0 ) & ( y < color_heigh ))
{
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
}
else if ((TS_State.TouchDetected) & ( y > color_heigh ) & ( y < (2*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_YELLOW);
}
else if ((TS_State.TouchDetected) & ( y > (2*color_heigh) ) & ( y < (3*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_ORANGE);
}
else if ((TS_State.TouchDetected) & ( y > (3*color_heigh) ) & ( y < (4*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_LIGHTMAGENTA);
}
else if ((TS_State.TouchDetected) & ( y > (4*color_heigh) ) & ( y < (5*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_DARKGREEN);
}
else if ((TS_State.TouchDetected) & ( y > (5*color_heigh) ) &( y < (6*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
}
else if ((TS_State.TouchDetected) & ( y > (6*color_heigh) ) &( y < (7*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_BROWN);
}
else if ((TS_State.TouchDetected) & ( y > (7*color_heigh) ) & ( y < (8*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_RED);
}
else if ((TS_State.TouchDetected) & ( y > (8*color_heigh) ) & ( y < (9*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_DARKMAGENTA);
}
else if ((TS_State.TouchDetected) & ( y > (9*color_heigh) ) & ( y < (10*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_CYAN);
}
else if ((TS_State.TouchDetected) & ( y > (10*color_heigh) ) & ( y < (11*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_DARKBLUE);
}
else if ((TS_State.TouchDetected) & ( y > (11*color_heigh) ) & ( y < (12*color_heigh) ))
{
BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
}
else if ((TS_State.TouchDetected) & ( y > (12*color_heigh) ) & ( y < (13*color_heigh) ))
{
/* Clear screen and reinitialize color and size */
/* Get the current text color */
color = BSP_LCD_GetTextColor();
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
/* Clear the working window */
BSP_LCD_FillRect(68, 8, 164, 245);
BSP_LCD_SetTextColor(color);
radius = 2;
}
else
{
x = 0;
y = 0;
}
Update_ColorSize();
}
else if ((TS_State.TouchDetected) & ( x > 65 ) & ( y > (BSP_LCD_GetYSize()-48)) & ( y < (BSP_LCD_GetYSize()) ) & ( x < 85 ))
{
radius = 10;
Update_ColorSize();
}
else if ((TS_State.TouchDetected) & ( x > 100 ) & ( y > (BSP_LCD_GetYSize()-48) ) & ( y < (BSP_LCD_GetYSize()) ) & ( x < 110 ))
{
radius = 5;
Update_ColorSize();
//.........这里部分代码省略.........
开发者ID:kaival,项目名称:Stm32-Tools-Evaluation,代码行数:101,代码来源:main.c
示例14: AUDIO_MenuProcess
/**
* @brief Manages AUDIO Menu Process.
* @param None
* @retval None
*/
void AUDIO_MenuProcess(void)
{
AUDIO_ErrorTypeDef status;
TS_StateTypeDef TS_State;
Point PlaybackLogoPoints[] = {{TOUCH_PLAYBACK_XMIN, TOUCH_PLAYBACK_YMIN},
{TOUCH_PLAYBACK_XMAX, (TOUCH_PLAYBACK_YMIN+TOUCH_PLAYBACK_YMAX)/2},
{TOUCH_PLAYBACK_XMIN, TOUCH_PLAYBACK_YMAX}};
if(appli_state == APPLICATION_READY)
{
switch(AudioDemo.state)
{
case AUDIO_DEMO_IDLE:
if(AUDIO_ShowWavFiles() > 0)
{
LCD_ErrLog("There is no WAV file on the USB Key.\n");
AUDIO_ChangeSelectMode(AUDIO_SELECT_MENU);
AudioDemo.state = AUDIO_DEMO_IDLE;
}
else
{
AudioDemo.state = AUDIO_DEMO_WAIT;
}
BSP_LCD_SetFont(&LCD_LOG_HEADER_FONT);
BSP_LCD_ClearStringLine(13); /* Clear touch screen buttons dedicated zone */
BSP_LCD_ClearStringLine(14);
BSP_LCD_ClearStringLine(15);
BSP_LCD_SetTextColor(LCD_COLOR_CYAN);
BSP_LCD_FillPolygon(PlaybackLogoPoints, 3); /* Playback sign */
BSP_LCD_FillCircle((TOUCH_RECORD_XMAX+TOUCH_RECORD_XMIN)/2, /* Record circle */
(TOUCH_RECORD_YMAX+TOUCH_RECORD_YMIN)/2,
(TOUCH_RECORD_XMAX-TOUCH_RECORD_XMIN)/2);
BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
BSP_LCD_SetFont(&LCD_LOG_TEXT_FONT);
BSP_LCD_DisplayStringAtLine(15, (uint8_t *)"Use touch screen to enter playback or record menu");
break;
case AUDIO_DEMO_WAIT:
BSP_TS_GetState(&TS_State);
if(TS_State.touchDetected == 1)
{
if ((TS_State.touchX[0] > TOUCH_RECORD_XMIN) && (TS_State.touchX[0] < TOUCH_RECORD_XMAX) &&
(TS_State.touchY[0] > TOUCH_RECORD_YMIN) && (TS_State.touchY[0] < TOUCH_RECORD_YMAX))
{
AudioDemo.state = AUDIO_DEMO_IN;
}
else if ((TS_State.touchX[0] > TOUCH_PLAYBACK_XMIN) && (TS_State.touchX[0] < TOUCH_PLAYBACK_XMAX) &&
(TS_State.touchY[0] > TOUCH_PLAYBACK_YMIN) && (TS_State.touchY[0] < TOUCH_PLAYBACK_YMAX))
{
AudioDemo.state = AUDIO_DEMO_PLAYBACK;
}
else
{
AudioDemo.state = AUDIO_DEMO_EXPLORE;
}
/* Wait for touch released */
do
{
BSP_TS_GetState(&TS_State);
}while(TS_State.touchDetected > 0);
}
break;
case AUDIO_DEMO_EXPLORE:
if(appli_state == APPLICATION_READY)
{
if(AUDIO_ShowWavFiles() > 0)
{
LCD_ErrLog("There is no WAV file on the USB Key.\n");
AUDIO_ChangeSelectMode(AUDIO_SELECT_MENU);
AudioDemo.state = AUDIO_DEMO_IDLE;
}
else
{
AudioDemo.state = AUDIO_DEMO_WAIT;
}
}
else
{
AudioDemo.state = AUDIO_DEMO_WAIT;
}
break;
case AUDIO_DEMO_PLAYBACK:
if(appli_state == APPLICATION_READY)
{
if(AudioState == AUDIO_STATE_IDLE)
{
/* Start Playing */
AudioState = AUDIO_STATE_INIT;
/* Clear the LCD */
//.........这里部分代码省略.........
开发者ID:acrepina,项目名称:STM32F7_serverWEB,代码行数:101,代码来源:menu.c
示例15: main
/**
* @brief Main program
* @param None
* @retval None
*/
int main(void)
{
uint8_t lcd_status = LCD_OK;
/* STM32F4xx HAL library initialization:
- Configure the Flash prefetch, instruction and Data caches
- Systick timer is configured by default as source of time base, but user
can eventually implement his proper time base source (a general purpose
timer for example or other time source), keeping in mind that Time base
duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and
handled in milliseconds basis.
- Set NVIC Group Priority to 4
- Low Level Initialization: global MSP (MCU Support Package) initialization
*/
HAL_Init();
/* Configure the system clock to 180 MHz */
SystemClock_Config();
BSP_IO_Init();
/* Initialise QSPI */
BSP_QSPI_Init();
BSP_QSPI_MemoryMappedMode();
/* Initialize the SDRAM */
BSP_SDRAM_Init();
/* Initialize the LCD */
lcd_status = LCD_Init();
OnError_Handler(lcd_status != LCD_OK);
/* Initialize LTDC layer 0 iused for Hint */
LCD_LayertInit(0, LAYER0_ADDRESS);
BSP_LCD_SelectLayer(0);
/* Configure the User Button in GPIO Mode */
BSP_PB_Init(BUTTON_TAMPER, BUTTON_MODE_EXTI);
/* Initialize the Touch Screen */
BSP_TS_Init(800, 480);
/* Set active display window */
HAL_DSI_LongWrite(&hdsi_eval, 0, DSI_DCS_LONG_PKT_WRITE, 4, OTM8009A_CMD_CASET, pColLeft);
HAL_DSI_LongWrite(&hdsi_eval, 0, DSI_DCS_LONG_PKT_WRITE, 4, OTM8009A_CMD_PASET, pPage);
/* Update pitch : the draw is done on the whole physical X Size */
HAL_LTDC_SetPitch(&hltdc_eval, BSP_LCD_GetXSize(), 0);
/* Show first image */
LL_CopyPicture((uint32_t *)image[ImageIndex], (uint32_t *)LAYER0_ADDRESS);
valid_buffer = 1;
active_area = LEFT_AREA;
HAL_DSI_LongWrite(&hdsi_eval, 0, DSI_DCS_LONG_PKT_WRITE, 2, OTM8009A_CMD_WRTESCN, pSyncLeft);
/* Infinite loop */
while (1)
{
BSP_TS_GetState(&TS_State);
if(draw_method == HORIZONTAL_SLIDER)
{
LCD_DSI_HorizontalSlider();
}
else
{
LCD_DSI_VerticalSlider();
}
}
}
开发者ID:Joe-Merten,项目名称:Stm32-Tools-Evaluation,代码行数:77,代码来源:main.c
示例16: AudioPlay_demo
/**
* @brief Audio Play demo
* @param None
* @retval None
*/
void AudioPlay_demo (void)
{
uint32_t *AudioFreq_ptr;
uint8_t FreqStr[256] = {0};
TS_StateTypeDef TS_State;
AudioFreq_ptr = AudioFreq+6; /*AF_48K*/
uwPauseEnabledStatus = 1; /* 0 when audio is running, 1 when Pause is on */
uwVolume = 70;
Audio_SetHint();
if (BSP_AUDIO_OUT_Init(OUTPUT_DEVICE_HEADPHONE, uwVolume, *AudioFreq_ptr) == 0)
{
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 95, (uint8_t *)" AUDIO CODEC OK ", CENTER_MODE);
}
else
{
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_RED);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 95, (uint8_t *)" AUDIO CODEC FAIL ", CENTER_MODE);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 80, (uint8_t *)" Try to reset board ", CENTER_MODE);
}
if (BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize()) != TS_OK)
{
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_RED);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 65, (uint8_t *)"ERROR", CENTER_MODE);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 50, (uint8_t *)"Touchscreen cannot be initialized", CENTER_MODE);
}
/*
Start playing the file from a circular buffer, once the DMA is enabled, it is
always in running state. Application has to fill the buffer with the audio data
using Transfer complete and/or half transfer complete interrupts callbacks
(DISCOVERY_AUDIO_TransferComplete_CallBack() or DISCOVERY_AUDIO_HalfTransfer_CallBack()...
*/
AUDIO_Start(AUDIO_FILE_ADDRESS, AUDIO_FILE_SIZE);
/* Display the state on the screen */
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 80, (uint8_t *)" PLAYING... ", CENTER_MODE);
sprintf((char*)FreqStr, " VOL: %3lu ", uwVolume);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 65, (uint8_t *)FreqStr, CENTER_MODE);
sprintf((char*)FreqStr, " FREQ: %6lu ", *AudioFreq_ptr);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 50, (uint8_t *)FreqStr, CENTER_MODE);
BSP_AUDIO_OUT_SetVolume(70);
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
/* Infinite loop */
while (1)
{
/* Check in polling mode in touch screen the touch status and coordinates */
/* if touch occurred */
BSP_TS_GetState(&TS_State);
if(TS_State.touchDetected == 1)
{
if (TS_State.touchY[0] < 30)
{
/* Increase volume by 5% */
if (uwVolume < 95)
uwVolume += 5;
else
uwVolume = 100;
sprintf((char*)FreqStr, " VOL: %3lu ", uwVolume);
BSP_AUDIO_OUT_SetVolume(uwVolume);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 65, (uint8_t *)FreqStr, CENTER_MODE);
}
else if (TS_State.touchY[0] > (BSP_LCD_GetYSize() - 30))
{
/* Decrease volume by 5% */
if (uwVolume > 5)
uwVolume -= 5;
else
uwVolume = 0;
sprintf((char*)FreqStr, " VOL: %3lu ", uwVolume);
BSP_AUDIO_OUT_SetVolume(uwVolume);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() - 65, (uint8_t *)FreqStr, CENTER_MODE);
}
else if (TS_State.touchX[0] < 30)
{
/*Decrease Frequency */
if (*AudioFreq_ptr != 8000)
{
AudioFreq_ptr--;
sprintf((char*)FreqStr, " FREQ: %6lu ", *AudioFreq_ptr);
//.........这里部分代码省略.........
开发者ID:MrZANE42,项目名称:verisure1512,代码行数:101,代码来源:audio_play.c
示例17: fp_test
/*
Conditions:
22
Exit points:
0
M = 22 - 0 + 2 = 25
Cyclomatic complexity
25
*/
void fp_test(void)
{
uint32_t retCode = 0;
GUI_Button_t fp_start,
fp_refresh,
fp_close,
fp_continue;
TS_StateTypeDef ts;
uint32_t action = 0, id = 0;
gui_button_init(&fp_start);
fp_start.XPosition = 20;
fp_start.YPosition = 50;
fp_start.Height = 50;
fp_start.Width = 200;
fp_start.BorderWidth = 2;
fp_start.BorderColor = LCD_COLOR_BLACK;
fp_start.FillColor = LCD_COLOR_WHITE;
fp_start.TextColor = LCD_COLOR_BLACK;
fp_start.Text = (uint8_t*)"Start";
gui_button_init(&fp_refresh);
fp_refresh.XPosition = 20;
fp_refresh.YPosition = 125;
fp_refresh.Height = 50;
fp_refresh.Width = 200;
fp_refresh.BorderWidth = 2;
fp_refresh.BorderColor = LCD_COLOR_BLACK;
fp_refresh.FillColor = LCD_COLOR_WHITE;
fp_refresh.TextColor = LCD_COLOR_BLACK;
fp_refresh.Text = (uint8_t*)"Refresh";
gui_button_init(&fp_close);
fp_close.XPosition = 20;
fp_close.YPosition = 200;
fp_close.Height = 50;
fp_close.Width = 200;
fp_close.BorderWidth = 2;
fp_close.BorderColor = LCD_COLOR_BLACK;
fp_close.FillColor = LCD_COLOR_WHITE;
fp_close.TextColor = LCD_COLOR_BLACK;
fp_close.Text = (uint8_t*)"Close";
gui_button_init(&fp_continue);
fp_continue.XPosition = 20;
fp_continue.YPosition = 250;
fp_continue.Height = 50;
fp_continue.Width = 200;
fp_continue.BorderWidth = 2;
fp_continue.BorderColor = LCD_COLOR_BLACK;
fp_continue.FillColor = LCD_COLOR_WHITE;
fp_continue.TextColor = LCD_COLOR_BLACK;
fp_continue.Text = (uint8_t*)"Continue";
while (1)
{
BSP_LCD_Clear(LCD_COLOR_WHITE);
gui_button_draw(&fp_start);
gui_button_draw(&fp_refresh);
gui_button_draw(&fp_close);
action = 0;
while (action == 0)
{
BSP_TS_GetState(&ts);
if (gui_button_check_touch(&fp_start, &ts) == GUI_Button_Error_Yes)
{
action = 1;
}
else if (gui_button_check_touch(&fp_refresh, &ts) == GUI_Button_Error_Yes)
{
action = 2;
}
else if (gui_button_check_touch(&fp_close, &ts) == GUI_Button_Error_Yes)
{
action = 3;
}
else
{
vTaskDelay(5);
}
}
switch (action)
{
case 1:
id = fp_session_start();
BSP_LCD_Clear(LCD_COLOR_WHITE);
//.........这里部分代码省略.........
开发者ID:ChicoState,项目名称:eggbeater,代码行数:101,代码来源:fingerprint_reader.c
示例18: TouchScreen_Calibration_WaitForPressedState
/**
* @brief TouchScreen_Calibration_WaitForPressedState : wait until a particular press/depress action
* The function is managing anti-rebound : that is the awaited state when detected
* needs to be stable for a sufficient time (timeout time), otherwise a new sense to search
* for awaited state is performed. When awaited state is found and state is stable for timeout
* duration, the function is exited.
* @param uint8_t Pressed : Awaited pressed state
* - Await touch (single/multiple) detection if Pressed == 1
* - Await no touch detection if Pressed == 0
* @retval None
*/
static void TouchScreen_Calibration_WaitForPressedState(uint8_t Pressed)
{
uint16_t TimeStart = 0;
uint8_t status = TS_OK;
uint32_t exitFirstLevelWhileLoopReq = 0; /* By default no exit request from first level while loop */
uint32_t exitSecondLevelWhileLoopReq = 0; /* By default no exit request from second level while loop */
/* First level while loop entry */
do
{
/* reset exit second level while loop in case it was set */
exitSecondLevelWhileLoopReq = 0;
/* Sense of touch state from touch IC until get the awaited state in parameter 'Pressed' */
status = BSP_TS_GetState(&TS_State);
|
请发表评论