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

33 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 模块拆分 - 振动马达驱动与反馈 (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)`:清空所有计数器并立即关闭马达,用以清除告警。
<!-- Checked and verified with SGM3833 boost/inverting PMIC removal and LCD_PWR_CTRL update changes -->