【stm32简单外设篇】- 水银开关

一、适用场景

适用场景:倾斜/翻转检测(防倾覆报警、落地检测、门窗/盒盖开合检测、姿态/方向简单判断、低成本震动/角度触发)、实验室教学示例(机械开关读入、去抖策略)、低功耗唤醒(作为外部唤醒源)。

二、器材清单

水银开关或滚珠倾斜开关 ×1(注意:含汞器件有安全与法规限制)

stm32f103(或其它 STM32)开发板 ×1

若干杜邦线(母对母/公对母)×1组

三、工作原理(要点)

机械触点:水银开关内部一个小玻璃管,倾斜时内部汞液流动接通两个电极,形成闭合(或开路,视常开/常闭型号)。因此输出为开关量(高/低),没有模拟量信息。

特性:响应快、接触电阻低;但属机械触点会有抖动(接点抖动)与寿命问题。

安全/环保注意:水银(汞)有毒,商业与长期项目应优先选择无汞替代(如滚珠倾斜开关、霍尔角度传感器、加速度计/IMU)。在使用水银开关时避免破碎、妥善封装与回收。

四、接线示意
VCC → +5V

GND → GND

标准库

PA0→IO

HAL库

PA0→S

五、示例代码

标准库

HAL库

cpp 复制代码
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

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

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == 1)
			HAL_UART_Transmit(&huart1,"无接触\r\n", strlen("无接触\r\n"), HAL_MAX_DELAY);
		else
			HAL_UART_Transmit(&huart1,"有接触\r\n", strlen("有接触\r\n"), HAL_MAX_DELAY);
		HAL_Delay(1000);
    /* USER CODE END WHILE */

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

六、讲解视频

相关推荐
superman超哥7 分钟前
仓颉语言中字典的增删改查:深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
疑惑的杰瑞27 分钟前
【C】常见概念
c语言·编译原理
宇宙realman_9991 小时前
Flash2833x_API的cmd文件与map文件对应关系
嵌入式硬件
Coder_Boy_1 小时前
基于 MQTT 的单片机与 Java 业务端双向通信全流程
java·单片机·嵌入式硬件
就是蠢啊1 小时前
51单片机——DAC数模转换实验(二)
单片机·嵌入式硬件·51单片机
ChatGPT51 小时前
一个适用于嵌入式系统的轻量级、可移植LED控制模块。
单片机
boneStudent1 小时前
Day39:智能家居环境监测系统
stm32·单片机·嵌入式硬件·智能家居
Zeku2 小时前
20251202 - Linux输入系统的基础知识 - tslib
stm32·freertos·linux驱动开发·linux应用开发
yyy(十一月限定版)2 小时前
C语言——排序算法
c语言·开发语言·排序算法
polarislove02142 小时前
5.8W25Q64 实验(下)-嵌入式铁头山羊STM32笔记
笔记·stm32·嵌入式硬件