|
这篇文章将来测评AT32A403A的硬件定时器输出方波
AT32A403A有17个定时器,包括2个高级定时器、10个通用定时器、2个基本定时器、2个WDT定时器和1个系统滴答定时器。这里我将用AT32A403A的高级定时器定时器1输出方波。
定时器1支持输出7个通道的PWM,其中3组可为互补通道,这次测试就用到这3组。
首先,在hardware文件夹中新建TIMER1.cc等C文件及其对应的h头文件。
第二步,通过WorkBench配置AT32A403A的硬件定时器,选择TIMER1,GPIO的话选择PE脚,以免跟PA9、PA10冲突
通道模式选择通道X和通道X互补输出,通道4关闭。
周期值选择9999,这样就能输出20KHz的方波
这里的周期缓冲没有使能,开启后在溢出事件发生后才将寄存器里的数据更新
接下来设置通道的输出模式,这里选择PWM模式A,其他模式可查看参考手册。设置的占空比为正占空比,而通道数据是用来调整占空比的。其他通道类似。
最后来设置一个死区时间。死区时间能设置成0-255,具体这个数值不知道代表多少时间,我这里先设置成10,看看实际效果。
最后导出代码,记得要使能PE GPIO的时钟,可以看到输出的波形是正常,分别是第一通道、第二通道、第三通道,占空比分别为10%、40%、80%。至于为什么测量到的占空比不是设置的值,那是因为加入了死区。死区时间大致为83ns。至此定时器测试完毕。