Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. FlagStatus isTouched() {
  2. GPIO_InitTypeDef gpio;
  3. gpio.GPIO_Speed = GPIO_Speed_50MHz;
  4.  
  5. gpio.GPIO_Pin = TOUCH_PIN_X1;
  6. gpio.GPIO_Mode = GPIO_Mode_IPU;
  7. GPIO_Init(TOUCH_PORT, &gpio);
  8.  
  9. gpio.GPIO_Pin = TOUCH_PIN_Y1 | TOUCH_PIN_X2;
  10. gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  11. GPIO_Init(TOUCH_PORT, &gpio);
  12.  
  13. gpio.GPIO_Pin = TOUCH_PIN_Y2;
  14. gpio.GPIO_Mode = GPIO_Mode_Out_PP;
  15. GPIO_Init(TOUCH_PORT, &gpio);
  16. TOUCH_PORT->BRR = TOUCH_PIN_Y2;
  17.  
  18. delay_ms(1);
  19.  
  20. if (TOUCH_PORT->IDR & TOUCH_PIN_X1) {
  21. return RESET;
  22. }
  23. delay_ms(1);
  24. return TOUCH_PORT->IDR & TOUCH_PIN_X1 ? RESET : SET;
  25. }
  26.  
  27. uint16_t getTouchValue() {
  28. ADC_SoftwareStartConvCmd(TOUCH_ADC, ENABLE);
  29. while (ADC_GetFlagStatus(TOUCH_ADC, ADC_FLAG_EOC) == RESET);
  30. return ADC_GetConversionValue(TOUCH_ADC);
  31. }
  32.  
  33. uint16_t TouchModeReadX() {
  34. GPIO_InitTypeDef gpio;
  35. gpio.GPIO_Speed = GPIO_Speed_50MHz;
  36.  
  37. gpio.GPIO_Pin = TOUCH_PIN_X1 | TOUCH_PIN_X2;
  38. gpio.GPIO_Mode = GPIO_Mode_Out_PP;
  39. GPIO_Init(TOUCH_PORT, &gpio);
  40. TOUCH_PORT->BSRR = TOUCH_PIN_X1 | (TOUCH_PIN_X2 << 16);
  41.  
  42. gpio.GPIO_Pin = TOUCH_PIN_Y2;
  43. gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  44. GPIO_Init(TOUCH_PORT, &gpio);
  45.  
  46. gpio.GPIO_Pin = TOUCH_PIN_Y1;
  47. gpio.GPIO_Mode = GPIO_Mode_AF_OD;
  48. GPIO_Init(TOUCH_PORT, &gpio);
  49. delay_ms(1);
  50. return getTouchValue();
  51. }
  52.  
  53. uint16_t TouchModeReadY() {
  54. GPIO_InitTypeDef gpio;
  55. gpio.GPIO_Speed = GPIO_Speed_50MHz;
  56.  
  57. gpio.GPIO_Pin = TOUCH_PIN_Y1 | TOUCH_PIN_Y2;
  58. gpio.GPIO_Mode = GPIO_Mode_Out_PP;
  59. GPIO_Init(TOUCH_PORT, &gpio);
  60. TOUCH_PORT->BSRR = TOUCH_PIN_Y1 | (TOUCH_PIN_Y2 << 16);
  61.  
  62. gpio.GPIO_Pin = TOUCH_PIN_X2;
  63. gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  64. GPIO_Init(TOUCH_PORT, &gpio);
  65.  
  66. gpio.GPIO_Pin = TOUCH_PIN_X1;
  67. gpio.GPIO_Mode = GPIO_Mode_AF_OD;
  68. GPIO_Init(TOUCH_PORT, &gpio);
  69. delay_ms(1);
  70. return getTouchValue();
  71. }
  72.  
  73. uint16_t touchX = 0, touchY = 0;
  74. uint8_t _touched = 0;
  75. inline void TouchUpdate() {
  76. if (!isTouched())
  77. return;
  78. _touched = 1;
  79. touchX = TouchModeReadX();
  80. touchY = TouchModeReadY();
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement