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