STM32——震动传感器点亮LED灯

震动传感器简单介绍


若产品不震动,模块上的 DO 口输出高电平;
若产品震动,模块上的 DO 口输出低电平,D0-LED绿色指示灯亮。

震动传感器与STM32的接线

编程实现

需求:当震动传感器接收到震动信号时,使用中断的方式点亮led1。

1、打开cubeMX
a.在SYS中选择调试方式为串行线调试。
b.在RCC(复位和时钟控制)中选择 HSE(高速时钟)为crystal resonator(晶振)。
c.在CLOCK Configuration中沿着红色的主线依次选择,并将频率改为72MHZ。
d.在GPIO中选择PB8(LED1)为GPIO_output,PA4为中断方式触发,选择GPIO_XETI 4,并且因为震动传感器震动,模块上的DO口输出低电平,所以将GPIO_mode设置为下降沿触发,由于一开始需要让led1是灭的状态,所以设置PB8的GPIO output level为HIGH。

e.在NVIC中打开PA4的中断,使能中断。
f. 在Project Manager中设置工程名字、开发环境选择MDK-ARM,并且勾选以下两个选项

g. Generate Code

2、打开KEIL5工程

a.先进行编译,然后找到EXTI 4中断服务程序,选中调用的函数点击F12,跳转到被调用函数
b.将虚函数复制到main函数文件中,进行编写
c.添加延时,接收到震动信号就亮1秒

但是延时有个坑!!!
如果直接在中断服务函数里调用 HAL_Delay 函数,则会造成系统卡死。
原因:程序初始化时 默认把滴答定时器的中断优先级设为最低 ,其它中断源很容易打断它导致卡
死。
解决:在 main 函数里使用以下函数提高滴答定时器的中断优先级(提升至 0 ):
HAL_NVIC_SetPriority ( SysTick_IRQn , 0 , 0 );
并且将 EXTI4 的中断优先级设置比滴答定时器的中断优先级小,比如 2 。

相关推荐
单片机杂货铺2 小时前
基于STM32的智能市政清洁小车系统设计
stm32·单片机·嵌入式硬件·物联网·硬件工程
单片机杂货铺2 小时前
基于STM32的智能书房系统的设计
stm32·单片机·嵌入式硬件·51单片机·硬件工程
普科PRBTEK2 小时前
电流探头的常见应用场景
单片机·嵌入式硬件
qq_401700413 小时前
3个常用的单片机实现隔离控制大电流负载例子
单片机·嵌入式硬件
weixin_456808383 小时前
【沁恒蓝牙开发】BLE常见错误码与解析
c语言·单片机·嵌入式硬件
电化学仪器白超4 小时前
禹衡光栅长度计精度评测:基于国标0级氧化锆量块的校正与数据分析
python·单片机·嵌入式硬件·物联网·自动化
LCMICRO-133108477464 小时前
国产长芯微LPS7118完全pin-pin替代ADP7118,是一款采用 CMOS 技术设计的低噪声、高 PSRR、快速瞬态响应、低压差线性稳压器
arm开发·单片机·嵌入式硬件·fpga开发·硬件工程·线性稳压器·adp7118
LCMICRO-133108477464 小时前
国产长芯微LM3042完全P2P替代LT3042,是一款高性能低压差线性稳压器
arm开发·单片机·嵌入式硬件·fpga开发·硬件工程·线性稳压器·lt3042
qq_401700414 小时前
TPS5430电源芯片18V转3V的电源电路,效率可高达90%
单片机·嵌入式硬件
hongmai6668885 小时前
ESP8684-WROOM-02C:一块被低估的RISC-V Wi-Fi模组
单片机·嵌入式硬件·物联网·5g·智能路由器·risc-v