Electricity/中断调试测试.md

116 lines
2.8 KiB
Markdown
Raw Normal View History

# 中断调试测试指南
## 问题分析
GPIO19一直保持低电平说明定时器中断没有正常运行。可能的原因包括
### 1. 时钟配置问题
- APB_Clock_Freq计算错误
- TIMER0时钟未使能
- 时钟频率配置不正确
### 2. 中断配置问题
- NVIC中断未正确使能
- 中断向量表配置错误
- 中断优先级设置问题
### 3. 定时器配置问题
- 定时器重装载值计算错误
- 定时器控制寄存器配置错误
- 定时器时钟源配置错误
## 修复措施
### 1. 时钟配置修复
- 修复了`ClockInit()`中清零APB时钟使能的问题
- 修复了`wavegen_Init()`中覆盖时钟使能的问题
- 使用`|=`操作符避免覆盖TIMER0时钟使能
### 2. 添加调试信息
- 在`TIMER0_Init()`中添加重装载值输出
- 在`main()`中添加APB时钟频率输出
- 在中断处理函数中添加调试输出
### 3. 中断处理优化
- 每100次中断输出一次调试信息
- 每1000次中断翻转一次GPIO19
- 添加GPIO状态监控
## 测试步骤
### 1. 编译和烧录
1. 重新编译项目
2. 烧录到目标芯片
3. 连接UART串口
### 2. 观察输出
通过UART观察以下信息
```
APB_Clock_Freq: 32000000 Hz
TIMER0重装载值: 32000
TIMER0_Init完成中断周期: 1 ms
========================================
定时器电刺激综合测试启动
========================================
Timer IRQ: 100, GPIO19 State: 0
Timer IRQ: 200, GPIO19 State: 0
...
Timer IRQ: 1000, GPIO19 State: 1
1 s - 定时器运行正常,电刺激同步输出中
```
### 3. 硬件测试
- 用示波器或万用表监测GPIO19
- 观察GPIO19是否每1秒翻转一次
- 检查GPIO19的电平变化
## 预期结果
### 正常情况
- UART输出显示定时器中断正常运行
- GPIO19每1秒翻转一次高电平↔低电平
- 中断计数器正常递增
### 异常情况
- 如果APB_Clock_Freq为0说明时钟配置有问题
- 如果TIMER0重装载值为0说明定时器配置有问题
- 如果没有中断输出,说明中断未正确使能
## 进一步调试
如果问题仍然存在,请检查:
### 1. 芯片型号
- 确认芯片支持TIMER0外设
- 检查芯片的时钟配置
### 2. 硬件连接
- 确认GPIO19引脚连接正确
- 检查电源和地连接
### 3. 编译器设置
- 确认中断向量表正确配置
- 检查编译器优化设置
## 常见问题解决
### 1. APB_Clock_Freq为0
- 检查时钟配置结构体
- 确认HSI频率设置正确
### 2. 中断不触发
- 检查NVIC中断使能
- 确认中断向量表配置
- 检查定时器控制寄存器
### 3. GPIO不翻转
- 检查GPIO初始化
- 确认GPIO方向设置
- 验证GPIO翻转函数
## 联系支持
如果问题仍然存在,请提供:
1. 芯片型号和版本
2. 完整的UART输出日志
3. 硬件连接图
4. 编译器版本和设置