蓝桥杯嵌入式——第五届省赛-双通道方波频率检测与倍频输出

蓝桥杯嵌入式——第五届省赛-双通道方波频率检测与倍频输出

一、赛题分析

这一届的赛题涉及到的模块有LED、LCD、按键、输入捕获、PWM输出、定时器、EEPROM、串口通信等。其中大部分的内容都是比较常规的,需要注意的就是输入捕获,如何同时捕获两路的PWM信号,这个在我的一篇博客中有写到,https://blog.csdn.net/qq_43715171/article/details/113854043,还有就是如何让PWM输出高电平和低电平,也就是输出占空比100%和0的情况,这个在我做上一届赛题之后,也写过总结,https://blog.csdn.net/qq_43715171/article/details/113662361,然后就是把各个模块整合起来,逻辑部分还是比较简单的,就是配置的时候要细心一些。
在这里插入图片描述

二、问题总结

  1. 在初始化各个外设的时候,中断千万不要多开,用到了什么开什么,不然可能会由于不停进入中断的原因,导致程序卡死。我在写PWM程序的时候,实际只用到了通道1和通道2,但是在复制程序的时候,直接复制过来,把通道3和通道4的中断也打开了TIM_ITConfig(TIM3, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);,就导致程序会不停进入中断,程序就卡死了,后面经过排查,把通道3和通道4的中断去掉之后,就正常了。
  2. 我在写程序的时候,使用的是IDLE空闲中断来接收串口的数据,开始没有问题,后面在程序的内容越来越多,程序越来越复杂的时候,串口的接收就出问题了,后面我将利用闲时中断来接收不定长数据改成了使用定时器的方式来接收不定长的数据之后,就没有问题了,至于具体原因,我也不知道为什么,可能空闲中断本身就容易出问题吧,所有后面在做题的时候,还是用定时器的方式好了。

三、代码

码云
GitHub

猜你喜欢

转载自blog.csdn.net/qq_43715171/article/details/114319453
今日推荐