【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 */
}

六、讲解视频

相关推荐
无限进步_43 分钟前
深入理解顺序表:从原理到完整实现
c语言·开发语言·数据结构·c++·算法·链表·visual studio
m0_5982500043 分钟前
S参数02-S参数中的纹波
笔记·嵌入式硬件
Geek__19921 小时前
STM32F103开发板上移植Agile Modbus库的详细指南
stm32·嵌入式硬件·敏捷流程
沐欣工作室_lvyiyi1 小时前
基于单片机的用电器功率监测报警系统设计(论文+源码)
单片机·嵌入式硬件·功率监测
liu****1 小时前
九.操作符详解
c语言·开发语言·数据结构·c++·算法
ALex_zry1 小时前
C语言底层编程与Rust的现代演进:内存管理、系统调用与零成本抽象
c语言·算法·rust
贝塔实验室1 小时前
Altium Designer原理图编辑基础
单片机·嵌入式硬件·硬件工程·信息与通信·射频工程·基带工程·嵌入式实时数据库
666HZ6661 小时前
C语言——交换
c语言·c++·算法
w***95491 小时前
在21世纪的我用C语言探寻世界本质——字符函数和字符串函数(2)
c语言·开发语言