Skip to content

GPIO_触摸按键

1. 硬件连接

这个按键的连接是在摇杆的内部,分配的引脚是PC14

alt text

2. CubeMX生成代码

可以看到,配置了3个部分

  1. 外部时钟
  2. SWD 接口
  3. GPIO 配置成输入模式

外部晶振配置

alt text

SWD接口配置

如果不配置,会导致之后无法下载代码,请一定注意!! alt text

GPIO 配置

alt text

串口的代码配置

alt text

时钟配置

alt text

3. 编写代码

编写串口重定向的代码

C
/* USER CODE BEGIN 0 */
#include "stdio.h"
 //重定向c库函数printf到串口USARTx,重定向后可使用printf函数
 int fputc(int ch, FILE *f)
 {
     /* 发送一个字节数据到串口USARTx */
     HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
     return (ch);
 } 
/* USER CODE END 0 */

下面是检测触摸按键的功能实现

  1. 读取输入GPIO电压的高低
  2. 将电压的值判断后通过串口打印出去
C
int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */

	uint8_t data = 0;
  /* USER CODE END 2 */
    
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  data = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_14);
	  if(data == 1)
	  {
		printf("data == 1");
	  }
	  else{
		printf("data == 0");
	  }
	  
	  HAL_Delay(300);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

4. 后记

触摸按键也可以通过ADC采集电压的方式来实现,想尝试的可以自己做个PCB,来试试。