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

六、讲解视频

相关推荐
皮皮哎哟5 分钟前
数据结构:从队列到二叉树基础解析
c语言·数据结构·算法·二叉树·队列
一匹电信狗13 分钟前
【高阶数据结构】并查集
c语言·数据结构·c++·算法·leetcode·排序算法·visual studio
进击的小头16 分钟前
设计模式组合应用:传感器数据采集与处理系统
c语言·设计模式
悠哉悠哉愿意24 分钟前
【物联网学习笔记】按键
笔记·单片机·嵌入式硬件·物联网·学习
我爱我家diyer26 分钟前
pwm控制器的默认输出状态
stm32·硬件工程
日拱一卒——功不唐捐33 分钟前
01背包(C语言)
c语言
DLGXY43 分钟前
STM32——PWM驱动舵机和直流电机、测量PWM频率和占空比、旋转编码器测速(十二)
stm32·单片机·嵌入式硬件
Hello World . .1 小时前
数据结构:二叉树(Binary tree)
c语言·开发语言·数据结构·vim
VekiSon1 小时前
Linux内核驱动——Ubuntu 网络启动环境配置与操作
linux·arm开发·嵌入式硬件·ubuntu
范纹杉想快点毕业1 小时前
嵌入式实时系统架构设计:基于STM32与Zynq的中断、状态机与FIFO架构工程实战指南,基于Kimi设计
c语言·c++·单片机·嵌入式硬件·算法·架构·mfc