3.2 KiB
3.2 KiB
定时器电刺激综合测试工程移植说明
项目概述
本项目将ENS_EMSsine_TEST中的电刺激功能移植到TIMER_DEMO中,实现GPIO定时翻转电平的同时电刺激通道输出方波,且二者互不干扰。
移植内容
1. 新增文件
升压电压选择模块
FWLIB/include/ENS1_BOOST.h- 升压电压选择头文件FWLIB/source/ENS1_BOOST.c- 升压电压选择实现
功能:
boost_voltage_select_11V()- 设置11V升压boost_voltage_select_15V()- 设置15V升压boost_voltage_select_26V()- 设置26V升压boost_voltage_select_45V()- 设置45V升压boost_voltage_select_55V()- 设置55V升压
波形生成器模块
FWLIB/include/ENS1_WAVEGEN.h- 波形生成器头文件FWLIB/source/ENS1_WAVEGEN.c- 波形生成器实现
功能:
wavegen_Init()- 初始化波形生成器wavegen_Start()- 启动波形生成器wavegen_Stop()- 停止波形生成器wavegen_driverA_sine_test()- 驱动器A正弦波测试EMS_Configure()- 配置电刺激参数EMS_Start()- 启动电刺激EMS_Stop()- 停止电刺激EMS_UpdateIntensity()- 更新电刺激强度EMS_Process()- 电刺激主循环处理
2. 修改文件
主程序 (USER/mian.c)
- 添加电刺激功能初始化
- 配置电刺激参数
- 在主循环中调用
EMS_Process()处理电刺激
定时器中断 (FWLIB/source/ENS1_TIMER.c)
- 修改定时器中断处理函数,添加电刺激状态提示
功能特性
1. 定时器功能
- GPIO19每1秒翻转一次电平
- 通过UART输出定时器状态信息
- 运行在定时器中断中
2. 电刺激功能
- 方波电刺激输出
- 可配置频率、强度、持续时间等参数
- 运行在主循环中,与定时器互不干扰
3. 系统配置
- 系统时钟:32MHz HSI
- 升压电压:26V(默认)
- UART波特率:115200
- 定时器中断周期:1ms
使用方法
1. 编译和烧录
- 使用Keil MDK打开
ENS001_BASIC_PRJ.uvprojx - 编译项目
- 烧录到目标芯片
2. 运行效果
- GPIO19每1秒翻转一次,用于指示定时器运行状态
- 电刺激通道输出方波信号
- 通过UART输出运行状态信息
3. 参数配置
可以通过修改main()函数中的ems_config结构体来调整电刺激参数:
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. 参数可配置
- 电刺激参数可通过结构体配置
- 升压电压可选择不同档位
- 便于适应不同应用需求
注意事项
- 确保目标芯片支持波形生成器外设
- 电刺激输出需要连接相应的电极
- 升压电压选择需要根据实际应用需求调整
- 电刺激强度不宜过高,避免对人体造成伤害
版本信息
- 版本:V1.0
- 日期:2023-11
- 作者:NANOCHAP
- 移植自:ENS_EMSsine_TEST