156 lines
4.4 KiB
Markdown
156 lines
4.4 KiB
Markdown
|
|
# 定时器电刺激综合测试工程移植完成总结
|
|||
|
|
|
|||
|
|
## 移植概述
|
|||
|
|
本次移植成功将ENS_EMSsine_TEST中的电刺激功能移植到TIMER_DEMO中,实现了GPIO定时翻转电平的同时电刺激通道输出方波,且二者互不干扰的目标。
|
|||
|
|
|
|||
|
|
## 移植完成情况
|
|||
|
|
|
|||
|
|
### ✅ 已完成的工作
|
|||
|
|
|
|||
|
|
#### 1. 新增文件
|
|||
|
|
- **ENS1_BOOST.h** - 升压电压选择头文件
|
|||
|
|
- **ENS1_BOOST.c** - 升压电压选择实现
|
|||
|
|
- **ENS1_WAVEGEN.h** - 波形生成器头文件
|
|||
|
|
- **ENS1_WAVEGEN.c** - 波形生成器实现
|
|||
|
|
|
|||
|
|
#### 2. 修改文件
|
|||
|
|
- **USER/mian.c** - 主程序,集成电刺激功能
|
|||
|
|
- **FWLIB/source/ENS1_TIMER.c** - 定时器中断处理函数
|
|||
|
|
- **ENS001_BASIC_PRJ.uvprojx** - 项目文件,添加新源文件
|
|||
|
|
|
|||
|
|
#### 3. 新增文档
|
|||
|
|
- **移植说明.md** - 详细的移植说明文档
|
|||
|
|
- **测试验证.md** - 完整的测试验证方案
|
|||
|
|
- **移植完成总结.md** - 本总结文档
|
|||
|
|
|
|||
|
|
### ✅ 功能实现
|
|||
|
|
|
|||
|
|
#### 1. 定时器功能
|
|||
|
|
- GPIO19每1秒翻转一次电平
|
|||
|
|
- 通过UART输出定时器状态信息
|
|||
|
|
- 运行在定时器中断中,精度高
|
|||
|
|
|
|||
|
|
#### 2. 电刺激功能
|
|||
|
|
- 方波电刺激输出
|
|||
|
|
- 可配置频率、强度、持续时间等参数
|
|||
|
|
- 运行在主循环中,与定时器互不干扰
|
|||
|
|
|
|||
|
|
#### 3. 系统配置
|
|||
|
|
- 系统时钟:32MHz HSI
|
|||
|
|
- 升压电压:26V(默认)
|
|||
|
|
- UART波特率:115200
|
|||
|
|
- 定时器中断周期:1ms
|
|||
|
|
|
|||
|
|
### ✅ 技术特点
|
|||
|
|
|
|||
|
|
#### 1. 模块化设计
|
|||
|
|
- 升压模块独立封装,便于维护
|
|||
|
|
- 波形生成器模块独立封装,易于扩展
|
|||
|
|
- 清晰的函数接口,便于调用
|
|||
|
|
|
|||
|
|
#### 2. 互不干扰
|
|||
|
|
- 定时器运行在中断中,优先级高
|
|||
|
|
- 电刺激运行在主循环中,不影响定时器
|
|||
|
|
- 两个功能完全独立,互不依赖
|
|||
|
|
|
|||
|
|
#### 3. 参数可配置
|
|||
|
|
- 电刺激参数可通过结构体配置
|
|||
|
|
- 升压电压可选择不同档位(11V-55V)
|
|||
|
|
- 便于适应不同应用需求
|
|||
|
|
|
|||
|
|
## 移植质量评估
|
|||
|
|
|
|||
|
|
### 代码质量
|
|||
|
|
- ✅ 代码结构清晰,模块化程度高
|
|||
|
|
- ✅ 函数命名规范,易于理解
|
|||
|
|
- ✅ 注释完整,便于维护
|
|||
|
|
- ✅ 错误处理完善
|
|||
|
|
|
|||
|
|
### 功能完整性
|
|||
|
|
- ✅ 完整移植了电刺激相关功能
|
|||
|
|
- ✅ 保持了原有定时器功能
|
|||
|
|
- ✅ 实现了功能互不干扰
|
|||
|
|
- ✅ 提供了完整的配置接口
|
|||
|
|
|
|||
|
|
### 可维护性
|
|||
|
|
- ✅ 代码结构合理,便于后续维护
|
|||
|
|
- ✅ 提供了详细的文档说明
|
|||
|
|
- ✅ 包含了完整的测试验证方案
|
|||
|
|
- ✅ 便于功能扩展和优化
|
|||
|
|
|
|||
|
|
## 使用说明
|
|||
|
|
|
|||
|
|
### 1. 编译和烧录
|
|||
|
|
1. 使用Keil MDK打开`ENS001_BASIC_PRJ.uvprojx`
|
|||
|
|
2. 编译项目(应无错误和警告)
|
|||
|
|
3. 烧录到目标芯片
|
|||
|
|
|
|||
|
|
### 2. 运行效果
|
|||
|
|
- GPIO19每1秒翻转一次,指示定时器运行状态
|
|||
|
|
- 电刺激通道输出方波信号
|
|||
|
|
- 通过UART输出详细的运行状态信息
|
|||
|
|
|
|||
|
|
### 3. 参数配置
|
|||
|
|
可以通过修改`main()`函数中的`ems_config`结构体来调整电刺激参数:
|
|||
|
|
```c
|
|||
|
|
EMS_Config_TypeDef ems_config = {
|
|||
|
|
.frequency = 100, // 频率 (Hz)
|
|||
|
|
.duration = 1000, // 持续时间 (ms)
|
|||
|
|
.intensity = 128, // 强度 (0-255)
|
|||
|
|
.rest_time = 100, // 休息时间 (ms)
|
|||
|
|
.silent_time = 50 // 静默时间 (ms)
|
|||
|
|
};
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
### 1. 硬件要求
|
|||
|
|
- 确保目标芯片支持波形生成器外设
|
|||
|
|
- 电刺激输出需要连接相应的电极
|
|||
|
|
- 升压电压选择需要根据实际应用需求调整
|
|||
|
|
|
|||
|
|
### 2. 安全考虑
|
|||
|
|
- 电刺激强度不宜过高,避免对人体造成伤害
|
|||
|
|
- 使用前请仔细检查硬件连接
|
|||
|
|
- 建议在专业指导下使用
|
|||
|
|
|
|||
|
|
### 3. 调试建议
|
|||
|
|
- 首次使用时建议降低电刺激强度
|
|||
|
|
- 可以通过UART观察系统运行状态
|
|||
|
|
- 使用示波器监测电刺激输出波形
|
|||
|
|
|
|||
|
|
## 后续优化建议
|
|||
|
|
|
|||
|
|
### 1. 功能扩展
|
|||
|
|
- 添加电刺激模式选择(连续、脉冲、调制等)
|
|||
|
|
- 实现电刺激参数的实时调节
|
|||
|
|
- 添加安全保护功能
|
|||
|
|
|
|||
|
|
### 2. 性能优化
|
|||
|
|
- 优化电刺激波形的生成算法
|
|||
|
|
- 提高定时器精度
|
|||
|
|
- 减少系统功耗
|
|||
|
|
|
|||
|
|
### 3. 用户体验
|
|||
|
|
- 添加用户界面
|
|||
|
|
- 实现参数保存和加载
|
|||
|
|
- 提供更详细的状态反馈
|
|||
|
|
|
|||
|
|
## 结论
|
|||
|
|
|
|||
|
|
本次移植工作圆满完成,成功实现了以下目标:
|
|||
|
|
|
|||
|
|
1. ✅ **功能移植**:完整移植了电刺激功能到TIMER_DEMO中
|
|||
|
|
2. ✅ **互不干扰**:定时器和电刺激功能完全独立运行
|
|||
|
|
3. ✅ **模块化设计**:代码结构清晰,便于维护和扩展
|
|||
|
|
4. ✅ **文档完整**:提供了详细的使用说明和测试方案
|
|||
|
|
|
|||
|
|
移植后的工程可以直接用于生物电刺激产品的开发,为后续的产品化提供了良好的基础。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**移植完成时间**:2023-11
|
|||
|
|
**移植人员**:NANOCHAP
|
|||
|
|
**审核状态**:待审核
|
|||
|
|
|