一、工具
1、硬件:gd32f30x系列单片机2、编译环境:keil
二、需求分析如下图所示,现要求控制单片机同时输出3路方波,并且每个方波的高低电平持续的时长是可调整的,因为对时长有着严格的要求,这就需要在方波开始输出后就不能再通过软件进行干预,完全交给单片机的硬件自己去完成。通过观察要输出方波的特点,除了led_pwm波具备pwm波形的特点,其它两个与pwm波形有着很大的不同,于是乎想使用单片机的定时器的pwm模式输出剩余两种波形很显然行不通。这时候应该想到单片机定时器另一种比较灵活的输出方波的模式就是“输出比较模式”,当然pwm模式也是输出比较模式的一种。
通过分析,似乎找到了输出以上波形的方法,至于能否实现还需要通过代码实现并调试去验证。那么还有一个需求也与以上输出的波形有关,那就是能够每次在t4时间段内进行电压采集,电压的变化也是受以上三个方波影响的(至于电压的采集方法我会在另一篇文章中介绍),为了保证采集的电压稳定,可以适当的在t4时间段内多次采集。熟悉单片机定时器的知道,想要每次都能够在t4时间段内采集电压,需要触发中断或者事件来实现,而能够触发中断或者事件点除了t4的开始和t4的结束也就是电平发生转换时,在t4中间是没法触发中断或者事件的,而如果只在t4的开始和t4的结束区采集电压,很可能采集到的电压并非所需要的电压。为了实现在t4时间内采集多次电压,我就想到了定时器的另一个还没有用的通道,如果让它也输出一个波形,并且使这个波形的电平能够在t4时间段内发生多次转换,那么我就可以通过触发中断的方式进行多次电压采集。理想的方式如下图紫色波形所示(当然也是我已经实现的结果,实际程序是不会输出紫色波形的,你现在看到的是我通过一个普通的io引脚在中断中反转得到的),黄色波形是上图mea_s2的波形。
这里需要指出,虽然我使用了定时器的一个输出比较通道输出一个波形用于采集电压,但这个波形并不占用引脚资源(你可以把这个引脚用作除定时器以外的功能),算是一个抽象出来的波形。如下图所示,通过对用户手册的解读以及实际验证,发现是可以屏蔽通道输出的。
在相关的寄存器中我们也可以找到相关的控制位,比如通道0,如下图所示,只要我们把该位置0就不要担心该引脚被用作其它功能了。
Tab-Ex 02工业平板电脑:支持Android 7.1 Nougat操作系统,配备八核处理器
飞思卡尔游戏耳机设计案例
单片机解密的常见问题
华捷艾米携手爱芒果联合打造MR概念电视
户外储能电池的可靠性和耐久性设计
单片机的输出比较是小思考
海信真空冰箱休眠二代:真空保鲜锁住食材原鲜本味
小米与联芯合作自主研发的“步枪”处理器猜测
武汉浙江两地工商联手将400多万枚假冒电池变废为宝”
智能驾驶面临的机遇及挑战分析
英伟达重启中国“特供版”AI芯片出货,性能缩水80%左右
华硕灵耀魔方Mesh支持Mesh 2.0 兼容各大芯片平台
ALBANY卷帘门的调试心得V1版
小米Note3开箱简评:骁龙660成中端标配 雷军目的欲打造爆款街机
警惕,你可能已经被“伪章”了……
颠覆传统设计逻辑 无限制业务拓展模式——阅面科技猎户人脸识别开发平台
中兴5G终端加速部署
霍尼韦尔在进博会与多个中国企业签订合作协议
蔡司三坐标测量仪定期保养的重要性
额温计用什么传感器比较好 额头温度计传感器推荐