久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4133|回復: 0
收起左側

TTP224N觸摸按鍵模塊stm32例程源碼

[復制鏈接]
ID:412790 發表于 2018-10-20 16:56 | 顯示全部樓層 |閱讀模式
實現功能為按1亮一個燈,按2兩2個燈,以此類推,抬手熄滅。

單片機源程序如下:
  1. #include "main.h"
  2. #include "stm32f1xx_hal.h"
  3. #include "gpio.h"

  4. /* USER CODE BEGIN Includes */
  5. #define KEY1_PRES 1
  6. #define KEY2_PRES 2
  7. #define KEY3_PRES 3
  8. #define KEY4_PRES 4


  9. #define KEY1 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_3)
  10. #define KEY2 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_4)
  11. #define KEY3 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5)
  12. #define KEY4 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_6)

  13. /* USER CODE END Includes */

  14. /* Private variables ---------------------------------------------------------*/

  15. /* USER CODE BEGIN PV */
  16. /* Private variables ---------------------------------------------------------*/

  17. /* USER CODE END PV */

  18. /* Private function prototypes -----------------------------------------------*/
  19. void SystemClock_Config(void);
  20. void Error_Handler(void);

  21. /* USER CODE BEGIN PFP */
  22. /* Private function prototypes -----------------------------------------------*/

  23. uint8_t KEY_Scan(uint8_t mode);

  24. /* USER CODE END PFP */

  25. /* USER CODE BEGIN 0 */

  26. /* USER CODE END 0 */

  27. int main(void)
  28. {

  29.   /* USER CODE BEGIN 1 */
  30.        
  31.                
  32.         uint8_t i;

  33.   /* USER CODE END 1 */

  34.   /* MCU Configuration----------------------------------------------------------*/

  35.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  36.   HAL_Init();

  37.   /* Configure the system clock */
  38.   SystemClock_Config();

  39.   /* Initialize all configured peripherals */
  40.   MX_GPIO_Init();

  41.   /* USER CODE BEGIN 2 */

  42.   /* USER CODE END 2 */

  43.   /* Infinite loop */
  44.   /* USER CODE BEGIN WHILE */
  45.   while (1)
  46.   {
  47.   /* USER CODE END WHILE */

  48.   /* USER CODE BEGIN 3 */
  49.   /*  按1亮一個燈,按二亮兩個燈,抬手熄滅 */
  50.                
  51.                         i=KEY_Scan(1);
  52.                
  53.                 switch(i)
  54.                 {
  55.                         case 0:
  56.                                   HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);
  57.                             HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
  58.                             HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
  59.                             HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
  60.                             //HAL_Delay(500);
  61.                             break;
  62.                                   
  63.                         case 1:  
  64.                                        
  65.                                         HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
  66.                             //HAL_Delay(500);
  67.                                   break;
  68.                         case 2:  
  69.                                         HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
  70.                             HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);
  71.                             //HAL_Delay(500);
  72.                                   break;
  73.                         case 3:  
  74.                                        
  75.                                         HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
  76.                             HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);
  77.                             HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);
  78.                             //HAL_Delay(500);
  79.                                   break;
  80.                         case 4:  
  81.                                        
  82.                                   HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);
  83.                             HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);
  84.                             HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);
  85.                             HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);
  86.                             //HAL_Delay(500);
  87.                                   break;
  88.                        
  89.                         default:HAL_Delay(10);
  90.                 }
  91.                
  92.                

  93.   }
  94.   /* USER CODE END 3 */

  95. }

  96. /** System Clock Configuration
  97. */
  98. void SystemClock_Config(void)
  99. {

  100.   RCC_OscInitTypeDef RCC_OscInitStruct;
  101.   RCC_ClkInitTypeDef RCC_ClkInitStruct;

  102.     /**Initializes the CPU, AHB and APB busses clocks
  103.     */
  104.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  105.   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  106.   RCC_OscInitStruct.HSICalibrationValue = 16;
  107.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  108.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  109.   {
  110.     Error_Handler();
  111.   }

  112.     /**Initializes the CPU, AHB and APB busses clocks
  113.     */
  114.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  115.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  116.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  117.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  118.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  119.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  120.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  121.   {
  122.     Error_Handler();
  123.   }

  124.     /**Configure the Systick interrupt time
  125.     */
  126.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  127.     /**Configure the Systick
  128.     */
  129.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  130.   /* SysTick_IRQn interrupt configuration */
  131.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  132. }

  133. /* USER CODE BEGIN 4 */
  134. uint8_t KEY_Scan(uint8_t mode)
  135. {
  136.                 static uint8_t key_up=1; //按鍵松開標志
  137.           if(mode) key_up=1;  //支持連按       
  138.                 if(key_up&&(KEY1==1||KEY2==1||KEY3==1||KEY4==1))
  139.             {
  140.                                         HAL_Delay(10);  //去抖動
  141.                                         key_up=0;
  142.                                         if(KEY1==1)return KEY1_PRES;
  143.                                         else if(KEY2==1)return KEY2_PRES;
  144.                                         else if(KEY3==1)return KEY3_PRES;
  145.                                         else if(KEY4==1)return KEY4_PRES;
  146.                  
  147.                         }else if(KEY1==0&&KEY2==0&&KEY3==0&&KEY4==0)key_up=1;              
  148.                 return 0;// 無按鍵按下

  149. }

  150. /* USER CODE END 4 */

  151. /**
  152.   * @brief  This function is executed in case of error occurrence.
  153.   * @param  None
  154.   * @retval None
  155.   */
  156. void Error_Handler(void)
  157. {
  158.   /* USER CODE BEGIN Error_Handler */
  159.   /* User can add his own implementation to report the HAL error return state */
  160.   while(1)
  161.   {
  162.   }
  163.   /* USER CODE END Error_Handler */
  164. }

  165. #ifdef USE_FULL_ASSERT

  166. /**
  167.    * @brief Reports the name of the source file and the source line number
  168.    * where the assert_param error has occurred.
  169.    * @param file: pointer to the source file name
  170.    * @param line: assert_param error line source number
  171.    * @retval None
  172.    */
  173. void assert_failed(uint8_t* file, uint32_t line)
  174. {
  175.   /* USER CODE BEGIN 6 */
  176.   /* User can add his own implementation to report the file name and line number,
  177.     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  178.   /* USER CODE END 6 */

  179. }

  180. #endif

  181. /**
  182.   * @}
  183.   */

  184. /**
  185.   * @}
  186. */

  187. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
復制代碼

所有資料51hei提供下載:
KEY.rar (3.11 MB, 下載次數: 36)
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区三 | 国产精品视频在线观看 | 91精品国产乱码麻豆白嫩 | 国产成人精品一区二区三区视频 | 一区二区三区回区在观看免费视频 | 国产精品久久久久久婷婷天堂 | 91电影院| 国产伦精品一区二区三区高清 | 亚洲一区久久久 | 国产精品视频综合 | 国产精品视频久久久久 | 欧美xxxx网站 | 影视一区 | 99re在线| 激情视频网站 | 伊人精品 | 91一区二区三区 | 在线只有精品 | 在线观看免费av网站 | 久久精品国产亚洲夜色av网站 | 毛片大全 | 毛片视频观看 | 免费观看成人鲁鲁鲁鲁鲁视频 | 日韩精品一区二区三区视频播放 | 成人久久网 | 国产精品一区二区三区99 | 先锋资源网站 | 国产精品99久久久久久动医院 | 日本在线视频一区二区 | 日一区二区 | 91超碰在线 | 国产探花在线观看视频 | 久久综合香蕉 | 国产99精品 | av片在线免费看 | 成人免费一级视频 | 亚洲欧美一区二区三区1000 | 色婷婷av777 av免费网站在线 | 久草中文网 | 日韩欧美综合在线视频 | 欧美亚洲国产日韩 |