单片机的输出比较是小思考

发布者:平和的心态最新更新时间:2024-12-16 来源: elecfans关键字:单片机  输出比较 手机看文章 扫描二维码
随时随地手机看文章

一、工具
1、硬件:GD32F30x系列单片机2、编译环境:KEIL


二、需求分析

如下图所示,现要求控制单片机同时输出3路方波,并且每个方波的高低电平持续的时长是可调整的,因为对时长有着严格的要求,这就需要在方波开始输出后就不能再通过软件进行干预,完全交给单片机的硬件自己去完成。通过观察要输出方波的特点,除了LED_PWM波具备PWM波形的特点,其它两个与PWM波形有着很大的不同,于是乎想使用单片机的定时器的PWM模式输出剩余两种波形很显然行不通。这时候应该想到单片机定时器另一种比较灵活的输出方波的模式就是“输出比较模式”,当然PWM模式也是输出比较模式的一种。

000318a0-a44b-11ee-9ee2-92fbcf53809c.png?imageView2/2/w/1000

通过分析,似乎找到了输出以上波形的方法,至于能否实现还需要通过代码实现并调试去验证。那么还有一个需求也与以上输出的波形有关,那就是能够每次在t4时间段内进行电压采集,电压的变化也是受以上三个方波影响的(至于电压的采集方法我会在另一篇文章中介绍),为了保证采集的电压稳定,可以适当的在t4时间段内多次采集。熟悉单片机定时器的知道,想要每次都能够在t4时间段内采集电压,需要触发中断或者事件来实现,而能够触发中断或者事件点除了t4的开始和t4的结束也就是电平发生转换时,在t4中间是没法触发中断或者事件的,而如果只在t4的开始和t4的结束区采集电压,很可能采集到的电压并非所需要的电压。为了实现在t4时间内采集多次电压,我就想到了定时器的另一个还没有用的通道,如果让它也输出一个波形,并且使这个波形的电平能够在t4时间段内发生多次转换,那么我就可以通过触发中断的方式进行多次电压采集。理想的方式如下图紫色波形所示(当然也是我已经实现的结果,实际程序是不会输出紫色波形的,你现在看到的是我通过一个普通的IO引脚在中断中反转得到的),黄色波形是上图MEA_S2的波形。

00131944-a44b-11ee-9ee2-92fbcf53809c.png?imageView2/2/w/1000

这里需要指出,虽然我使用了定时器的一个输出比较通道输出一个波形用于采集电压,但这个波形并不占用引脚资源(你可以把这个引脚用作除定时器以外的功能),算是一个抽象出来的波形。如下图所示,通过对用户手册的解读以及实际验证,发现是可以屏蔽通道输出的。

002ce8b0-a44b-11ee-9ee2-92fbcf53809c.png?imageView2/2/w/1000

在相关的寄存器中我们也可以找到相关的控制位,比如通道0,如下图所示,只要我们把该位置0就不要担心该引脚被用作其它功能了。

003ea582-a44b-11ee-9ee2-92fbcf53809c.png?imageView2/2/w/1000


关键字:单片机  输出比较 引用地址:单片机的输出比较是小思考

上一篇:【GD32F303红枫派开发板使用手册】第十一讲 ADC-电源电压单通道ADC检测实验
下一篇:【GD32F303红枫派开发板使用手册】第二十四讲 DHT11温湿度传感器检测实验

推荐阅读最新更新时间:2026-03-20 12:27

MEMS麦克风中PDM和I²S数字输出接口的比较和选择
本文将详细讨论脉冲密度调制 (PDM) 和集成电路内置音频 (I²S) 两种数字接口,简介它们的独特特性以及在系统设计时的优缺点。工程师具体选择哪一种,将取决于对两种技术的研究,并要了解哪种协议对于特定应用更适合。具体要考虑的几个关键因素包括: 音质 功耗 物料成本 设计的空间限制 硬件的运行环境 如果您在MEMS 麦克风的数字输出接口选择上有需求,相信本文会有所帮助。 麦克风用在嵌入式系统中已经有很多年了。自其诞生以来,由于家居、汽车和可穿戴设备中基于语音的应用范围不断扩大,MEMS 麦克风的市场使用率迅速增加。MEMS 麦克风不仅具有显著减少电路板空间、低功率要求和提高抗电噪声能力的优点,而且还具有更高的设
[嵌入式]
MEMS麦克风中PDM和I²S数字<font color='red'>输出</font>接口的<font color='red'>比较</font>和选择
总结一下定时器的几种输出比较模式
1 背景 最近有接触到通过可控硅的方式来控制交流风机或者电烙铁功率,STM32的定时器输出比较模式,刚好可以满足这种需求,借此机会总结一下定时器的几种输出模式。 2 STM32的定时器比较输出 STM32的定时器比较输出一共有8种,记录一下初始化方法和逻辑分析仪的波形。 在官网搜索对应的型号找到用户手册,比如STM32F103ZET6 找到比较模式相关配置的描述 TIMx capture/compare mode register 1 (TIMx_CCMR1) Address offset: 0x18 Reset value: 0x0000 The channels can be used in input (capture
[单片机]
总结一下定时器的几种<font color='red'>输出</font><font color='red'>比较</font>模式
分享STM32定时器输出比较模式的理解
初学STM32,我这个地方卡了很久,现在终于有些明白了,现在把我的理解写下与大家共享,如果有不对的地方,还请指出。 TIM_OCMode选择定时器模式。该参数取值见下表: TIM_OCInitStructure.TIM_Pulse = CCR1_Val; //设置跳变值,当计数器计数到这个值时,电平发生跳变 TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIMx在CCR1上的预装载寄存器 TIM_ARRPreloadConfig(TIM3, ENABLE); //使能TIMx在ARR上的预装载寄存器 OCxREF就是一个参考信号,并且约定:OCxREF=1,称O
[单片机]
分享STM32定时器<font color='red'>输出</font><font color='red'>比较</font>模式的理解
函数信号发生器对两路同步窄脉冲信号的输出能力比较
方案1:普源信号发生器DG5000系列 Fig1 普源DG5000系列函数信号发生器 Fig2 普源DG5000系列脉冲波指标 根据实测,普源DG5000函数信号发生器在当需要输出一个10kHz周期重复,5Vpp峰峰值,脉宽为5ns的脉冲时,双通道具备同步输出设置 Fig3 正脉宽设置为5ns 通过示波器观察到实际波形如下: Fig4 正脉宽设置5ns时,输出的脉冲波形 由Fig 4 可以看出,输出5ns脉宽方波时,正脉宽的顶端是尖的,不是很平,这是由于当前条件下的函数信号发生器输出最窄脉宽到了极限,所以有些失真。 当设置脉宽取10ns时,DG5000信号发生器的输出波形近似脉冲矩形,顶端较平。 Fig5 用5
[测试测量]
函数信号发生器对两路同步窄脉冲信号的<font color='red'>输出</font>能力<font color='red'>比较</font>
mc9s12dg128使用定时器的输出比较产生定时中断代码亮1S灭1S
#include hidef.h /* common defines and macros */ #include mc9s12dg128.h /* derivative information */ #pragma LINK_INFO DERIVATIVE mc9s12dg128b unsigned int i; void main(void) { DDRB=0XFF;//PORTBÉ趨ΪÊä³ö PORTB=0XFF;//PORTB³õʼ»¯ÎªÈ«¸ß TSCR1=0x90;//¶¨Ê±Æ÷ʹÄÜÇÒTFLG1Äܱ»×Ô¶¯Çå³ý TSCR2=0x00;//¶¨Ê±Æ÷Ô¤·ÖƵÏ
[单片机]
通过TIM输出比较做一个定时器
TIM是定时器模块的简称。TIM的核心是一个16位的自由定时器(TCNT)。有8个完整的16位的捕捉/比较(IC/OC)通道。 模块运行时,16位的自由定时器按照设定的时钟频率在0x0000~0xFFFF之间循环计时。 本例通过MC9S12XS128的TIM模块的输出比较做一个简单的定时器。 以下为本例所用到的寄存器的介绍: TIOS寄存器 TIOS 寄存器用于指定各个通道的功能,即工作于 IC还是 OC方式 当 IOSn=0 时,对应的通道 n 为输入捕捉(1C)通道 当 IOSn=1 时,通道 n为输出比较(OC)通道 OC7M寄存器 OC7 具有特殊地位,它匹配时可以直接改变其他 7 个输出引脚的状态,并
[单片机]
通过TIM<font color='red'>输出</font><font color='red'>比较</font>做一个定时器
飞思卡尔MC9S12X Time输出比较
今天带着大家看下飞思卡尔MC9S12 Time模块的输出比较。 具体代码如下 /*************************************************************/ /* 初始化锁相环 */ /* 使用外部晶振:16MHz */ /* 设置总线频率:16MHz */ /*************************************************************/ void INIT_PLL(void) { CPMUPROT=0x26; //解
[单片机]
STM32用一个定时器输出多路不同频率及占空比的PWM(输出比较
我们使用STM32输出PWM时会使用定时器的PWM输出模式来进行生成,但是这样子生成PWM是有局限的,它只能生成四路频率相同的PWM,当你设定了TIMx_PSC(预分频寄存器)和TIMx_ARR(自动重装载寄存器),这时PWM的频率就被定下来了,为系统的时钟/TIMx_PSC+1/TIMx_ARR+1,你可以通过改变各个通道的CCR寄存器来改变占空比。但是如果我们想生成多路不同频率的PWM的话,使用这个方法只能使用多个定时器了,这样对于定时器资源较少的板子无疑是不可取的,在前几周准备蓝桥杯比赛的时候我发现了32定时器有一个输出比较的模式,可以生成多路不同频率及占空比的PWM。 配置代码如下: __IO u16 CCR1
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved