Electricity/中断调试测试.md

116 lines
2.8 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.

# 中断调试测试指南
## 问题分析
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. 编译器版本和设置