OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2832|回复: 0

STM32F103ZET6 定时器中断最短时间

[复制链接]

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2014-2-18
在线时间
4 小时
发表于 2019-11-28 22:02:01 | 显示全部楼层 |阅读模式
1金钱
设计目标:用的原子哥的精英板,自带12位DAC,通过定时器中断实现输出锯齿波,周期20ms(由0上升至最大值时间为13.5ms,由最大值下降到0的时间为4.5ms,保持0的时间为2ms,循环此过程),幅值为0~(2700/4095)*3.3= 0~2.176V。

设计方法与实验现象:希望产生的锯齿波尽量精准,就每次进中断计数器cnt自加1,DAC输出计数器也自加1,因此一次定时器中断时间为13.5ms/2700 = 5us。据此设置定时器。定时器中断中程序如下。
  1. if(cnt < 2700)
  2. {
  3. num++;
  4. DAC_SetChannel1Data(DAC_Align_12b_R, num);
  5. }
  6. else if(cnt < 3599)
  7. {
  8. DAC_SetChannel1Data(DAC_Align_12b_R, num);
  9. }
  10. else if(cnt < 3999)
  11. {
  12. num = 0;
  13. DAC_SetChannel1Data(DAC_Align_12b_R, num);
  14. }
  15. else
  16. {
  17. cnt = 0;
  18. num = 0;
  19. }
复制代码

用示波器观察输出结果:波形和幅值与预期相符,但是周期不是20ms。

原因分析:考虑可能是实际定时器中断时间与设计时间不符。

解决方法与结果:于是在定时器中断中加入信号灯反转程序,观察定时器中断时间是否是设置的5us,结果发现定时器中断时间并不是5us。改成50us和500us后,输出波形与预期相符。

疑惑:在此请教一下定时器中断(我用的是定时器2,普通定时器)时间最小能设置成多少。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-27 19:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表