# 定时器电刺激综合测试工程移植说明 ## 项目概述 本项目将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. 编译和烧录 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. 参数可配置 - 电刺激参数可通过结构体配置 - 升压电压可选择不同档位 - 便于适应不同应用需求 ## 注意事项 1. 确保目标芯片支持波形生成器外设 2. 电刺激输出需要连接相应的电极 3. 升压电压选择需要根据实际应用需求调整 4. 电刺激强度不宜过高,避免对人体造成伤害 ## 版本信息 - 版本:V1.0 - 日期:2023-11 - 作者:NANOCHAP - 移植自:ENS_EMSsine_TEST