STM32F407ZGT6定时器相关测试
结论:
- 20us以下的IO翻转操作,存在误差
- 输出比较定时器使能与禁用功能正常
- 输入捕获定时器使能与禁用功能正常
- 单通道输出比较、输入捕获均正常
- 多通道输出比较波形无干扰,但仍是存在20us以下的IO翻转操作存在误差
- 多通道输入捕获正常
一、单一通道基本功能测试(TIM5、CHANNEL1)
1、精度与定时器赋时长操作测试(TIM5、CHANNEL1)
- 测试方法: 在输出比较定时器的测试中断HAL_TIM_OC_DelayElapsedCallback中进行IO翻转和TimerSetNextTimeValue_FB(定时器重新赋时长:6us、10us交替赋值)操作。
预期结果: 产生周期为16us,占空比为62.5%的波形
实际结果: 周期 22us ,占空比:58.18%
结论: 误差过大,精度达不到,波形不准确
- 测试方法:在输出比较定时器的测试中断HAL_TIM_OC_DelayElapsedCallback中进行IO翻转和TimerSetNextTimeValue_FB(定时器重新赋时长:24us、40us交替赋值)操作。
预期结果: 产生周期为64us,占空比为62.5的波形。
实际结果: 周期:64us,占空比:62.5%
结论: 占空比正确,周期正确,通过对比可知,当翻转速度过快,例如进入10us以下的级别,会出现误差导致波形不准。
2、使能/关闭测试(TIM5、CHANNEL1)(TIM3、CHANNEL2)
- 测试方法: 在测试中断600us定时器中断中进行IO翻转,在600us定时器中断中对600us定时器中断进行禁用操作(每执行7个600us定时器中断禁用自身一次,其它时刻不进行中断禁用与使能操作)。在10ms中断中对600us定时器中断进行使能操作,并禁用10ms中断,即只执行一次。
结论: 使能与禁用功能均正常。
3、单通道输入捕获功能测试(TIM3、CHANNEL1)
-
测试方法: 单通道下降沿输入捕获对PWM测量进行验证(TIM5、CHANNEL1输出周期8ms,占空比为50%的PWM波;TIM3、CHANNEL1进行下降沿捕获)。
TIM5、CHANNEL1输出的PWM波形:
占空比:50%
周期:8ms
TIM3、CHANNEL1捕获中断中打印输出:
结论: 每两次捕获之间间隔8ms,输入捕获中断正常 -
测试方法: 基于以上实验,在第50次捕获关闭输入捕获中断
测试结果:
对应接口: Capture_FA_Disable();//关断输入捕获
结论: 中断在第50次停止,输入捕获关闭函数正常
- 测试方法: 单通道下降沿输入捕获对PWM测量进行验证(TIM5、CHANNEL1输出周期16ms,占空比为62.5%的PWM波;TIM3、CHANNEL1进行双边沿捕获)。
TIM5、CHANNEL1输出的PWM波形:
占空比:62.5%
周期:16ms
TIM3、CHANNEL1捕获中断中打印输出:
结论: 每两次捕获中断间隔分别是6ms、10ms,来回转变,总体上基本正常,但有几次存在1ms的误差
二、多通道干扰测试(TIM5、CHANNEL1)(TIM3、CHANNEL2)
1、输出比较定时器
- 测试方法: 使能两路定时器中断通道,定时器中断周期分别为6us和100us。在中断中分别对不同IO进行翻转,观察两中断同时触发时的相互影响。
结论: 看起来没啥问题,波形挺正常,除了6us级别的翻转有些误差
2、输入捕获定时器
- 测试方法: 由TIM5、CHANNEL1产生周期为8ms,占空比为50%的PWM波,双通道(TIM3、CHANNEL1)(TIM14、CHANNEL1)输入捕获对PWM进行测量。
TIM5、CHANNEL1输出的PWM波形:
占空比:50%
周期:8ms
TIM3、CHANNEL1捕获中断中打印输出:(上升沿捕获):
TIM14、CHANNEL1捕获中断中打印输出:(上升沿捕获):
结论: 每8ms进一次捕获中断,多通道输入捕获正常。