Files
stc32g128k/Docs/50_module-breakdown/mod-motor.md

2.1 KiB
Raw Blame History

模块拆分 - 振动马达驱动与反馈 (Docs/50_module-breakdown/mod-motor.md)

本模块描述手环告警与按键反馈的振动马达驱动逻辑。手环通过控制特定的振动时长与周期,向用户提供直观的物理触觉告警反馈。

1. 模块职责说明

  • 职责范围
    1. 系统初始化时,将马达控制管脚 P2.5 配置为推挽输出模式。
    2. 提供底层的开关控制,使能或禁止马达供电(高电平振动,低电平静止)。
    3. 在 1ms 中断Timer 1中执行异步振动控制时序Pulse Process实现不阻塞 CPU 的各种复杂振动波形(如短振、长振、连续多次振动)。
    4. 根据接收到的 7 类传感器报警类型或本地主动 SOS 呼救状态,自动触发对应的振动模式。

2. 振动模式设计 (周期 5 秒)

  • 门磁/窗磁 (PORTE)1 次短振 300ms。
  • PIR 红外 (PIR)2 次短振 300ms (间隔 200ms)。
  • 烟雾传感器 (FUMEE)3 次短振 200ms (间隔 150ms)。
  • 紧急按钮 (URGENCE)1 次长振 800ms。
  • 气体泄漏 (GAZ)4 次短振 200ms (间隔 100ms)。
  • 水浸传感器 (INOND.)2 次长振 600ms (间隔 300ms)。
  • 振动传感器 (VIBRA.):连续 3 次短振 150ms (间隔 100ms)。
  • 本地主动 SOS:持续性间歇长振(振 1000ms停 200ms 循环)。

3. 接口与函数说明

  • void Motor_Init(void):初始化配置引脚 P2.5 为推挽输出,默认输出低电平(马达静止)。
  • void Motor_Set_State(bit state):立即开关马达(直接写入 P2.5 引脚)。
  • void Motor_Start_Alarm_Pattern(u8 pattern_type):传入传感器类型,装载对应的振动计数器和阶段标志,启动异步振动模式。
  • void Motor_Pulse_Process(void):在 1ms 中断中调用(通常每 10ms 调度一次),更新振动时间计数器,切换各阶段电平以输出指定波形。
  • void Motor_Stop(void):清空所有计数器并立即关闭马达,用以清除告警。