STM32学习笔记(四)震动传感器、继电器

一、震动传感器介绍

  • 单片机供电VCC GND接单片机
    产品不震动,输出高电平,模块上的AO口
    产品震动,输出低电平,绿色指示灯亮
    AO口不用

在这里插入图片描述
与stm32接线
在这里插入图片描述

二、编程实现

需求:当振动传感器接收到振动信号时,使用中断方式点亮LED1

//重写中断服务函数,如果检测到EXTI中断请求,则进入此函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
//一根中断线上接有多个中断源,判断中断请求是否来自PA4
if(GPIO_Pin == GPIO_PIN_4)
{
//如果检测到PA4被拉低
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4) == GPIO_PIN_RESET)
{
//则点亮LED1
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);
//延时1秒
HAL_Delay(1000);
//关闭LED1
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
}else
{
//未检测到PA4被拉低,则关闭LED1
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
}
}
}

如果直接在中断服务函数里调用 HAL_Delay 函数,则会造成系统卡死
原因:程序初始化时默认把滴答定时器的中断优先级设为最低,其它中断源很容易打断它导致卡
死。
解决:在 main 函数里使用以下函数提高滴答定时器的中断优先级(提升至0):

HAL_NVIC_SetPriority(SysTick_IRQn,0,0);

并且将 EXTI4 的中断优先级设置比滴答定时器的中断优先级高,比如 2

三、 继电器介绍

  • 继电器工作原理:
    单片机供电VCC GND接单片机,VCC需要接3.3V,5V不行!
    最大负载电路交流250V/10A,直流30V/10A
    引脚 IN 接收到低电平时,开关闭合
    接线方式:
    VCC:接3.3V(不可以接5V,接5V会工作异常)

GND:接GND

IN:接任何一个通用GPIO口即可

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值