使用STM32的单个普通定时器产生4路不同频率的方波

发布者:VelvetSoul最新更新时间:2021-04-01 来源: eefocus关键字:STM32  定时器  频率  方波 手机看文章 扫描二维码
随时随地手机看文章

1)设置计数器为向上计数模式,将自动重装载寄存器设置为0xFFFF;这样计数器会循环计数。


2)每个定时器通道设置为输出比较模式,并设置比较匹配时对应的输出管脚翻转输出。


3)按照输出波形的半波周期计算出一个数值称作Half_Cyc。例如:定时器的时钟频率是72MHz,需要产生3456Hz的方波,则Half_Cyc = 72M/(3456*2) = 41667;如需要产生200kHz的方波,则Half_Cyc = 72M/(200k*2) = 180。


4)设置每个通道在输出比较匹配时产生中断,在中断中将比较寄存器的数值读出并加上Half_Cyc的数值,如果计算出的数值超过16位则舍弃超出的部分,再把这个新的数值写回相应的比较寄存器;这样下次比较成功将刚好发生在一个半波周期之后,对应的管脚将被翻转。


上述方法在要求频率不高时十分有效,但如果频率较高时会有频繁的中断产生,这时可以使用DMA加以改善。


上述方法的基础是通过不断改变输出比较的匹配点进而产生管脚翻转输出,我们可以事先计算好这些比较匹配点,并通过DMA在每次匹配时逐次更新比较寄存器的内容:


方法一、使用两个DMA缓冲区,在DMA控制器操作一个缓冲区时,程序计算好另一个缓冲区的数据,然后在DMA传输结束的中断处理中切换DMA操作的缓冲区。


方法二、使用一个大的DMA缓冲区,先计算好半个缓冲区的内容,启动DMA为循环模式并设置它在DMA传送一半和完成时均产生中断;启动DMA后继续计算好另外半个缓冲区的内容,当发生DMA中断时表示有一半缓冲区变空,这时在中断处理中计算好这半个缓冲区。


只要DMA缓冲区开的足够大,方法二可以保证CPU有充足的时间进行数据处理,并且保证不断地输出波形。


声明:以上说明没有经过实际验证,只是一个原理说明,也许还有没考虑周全的地方。


关键字:STM32  定时器  频率  方波 引用地址:使用STM32的单个普通定时器产生4路不同频率的方波

上一篇:一款基于STM32的便携式二氧化碳监测仪设计
下一篇:STM32单片机的具体介绍和技术知识

推荐阅读最新更新时间:2024-11-11 05:04

STM32串口1发送,串口2接收
/** ****************************************************************************** * @file Project/STM32F10x_StdPeriph_Template/stm32f10x_it.c * @author MCD Application Team * @version V3.5.0 * @date 08-April-2011 * @brief Main Interrupt Service Routines. * This file provides template for all exceptions
[单片机]
通过51单片机定时器/计数器实现精确延时
  MCS-51单片机内部共有两个16位可编程定时器,计数器,即TO、Tl。既有定时功能,又有计数的功能。每个定时器都是由两个8位的特殊功能寄存器THi和TLi组成(i=0、1)。TMOD是TO和Tl的工作方式控制寄存器,TCON是TO和Tl的运行状态控制寄存器。在实际应用时,应首先根据需要对这些寄存器进行初始化,即设置TO和Tl的工作方式并对TO和Tl定时器装入初始值以得到精确的定时时间。TO和Tl的工作方式及运行状态是由TMOD和TCON两个特殊功能寄存器控制的,而TMOD和TCON是由用户所编的程序控制的。      定时器的核心是一个加l计数器,加l计数器的脉冲有两个来源:一个是系统时钟振荡器,另一个是外部脉冲,计数器对脉
[单片机]
通过51单片机<font color='red'>定时器</font>/计数器实现精确延时
STM32程序_低功耗设置
STM32F103R8和RC的停机模式的休眠电流还不一样,R8停机模式实测为11uA,RC停机模式实测为30uA,还以为又是我的程序哪里没做好呢,仔细看了PDF,这两个芯片PDF上标的值的确有区别,和我测的值差不多,那我就没有再深究的意义了! 结合下文的高手经验,反复摸索, standby模式1.9uA,PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); stop模式:11uA, PWR_EnterSTANDBYMode(); 实验证明,将IO端口设成IPU/IPD/AIN/PPOUT=1/PPOUT=0/ODOUT=0,电流是基本相
[单片机]
<font color='red'>STM32</font>程序_低功耗设置
STM32位带操作全解
本文属于知识整理,内容主要来自本人的学习笔记,主要参考书籍为《Cortex M3和M4权威指南》、《Cortex M3权威指南(中文版)》《野火零死角玩转STM32》,由于本人学习笔记很多为个人理解的内容,可能有错漏的地方,如果您阅读本文过程中发现有说得不对的,您可以在评论区留言指出,本人将感激不尽。 本文将从下面几个问题展开进行介绍: 什么是位带操作、什么是位带区、什么是位带别名区、怎么使用位带操作、为什么要使用位带操作(或者说位带操作有什么优点)、什么时候使用位带操作。 一、什么是位带操作? 使用过51单片机的小伙伴应该有过类似的操作,想要点亮一个LED灯只要一个P2^1 = 0;就可以实现了,非常方便,其实,所谓
[单片机]
STM32单片机的八种IO口模式讲解
八种IO口模式 STM32有八种IO口模式,分别是:模拟输入、浮空输入、上拉输入、下拉输入、开漏输出、推挽输出、复用开漏输出和复用推挽输出。 1、模拟输入 GPIO_Mode_AIN模拟输入,即关闭施密特触发器,将电压信号传送到片上外设模块(不接上下拉电阻)。 2、浮空输入 GPIO_Mode_IN_FLOATING浮空输入。浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。 3、上下拉输入 GPIO_Mode_IPD下拉输入,GPIO_Mode_IPU上拉输入。一般来讲,上拉电阻为1K-10K,电阻越小,驱动能力越强。 电阻的作用:防止输入端悬空,减少外部电流
[单片机]
<font color='red'>STM32</font>单片机的八种IO口模式讲解
STM32读保护功能和清除读保护功能设置
1、STM32对内部Flash的保护措施 所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问 - 写保护和读保护。 1)、读保护即大家通常说的 加密 ,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出: 通过调试器(JTAG或SWD); 从RAM中启动并执行的程序; 2)、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志。 读与写设置的效果见下表: 读保护写保护 对Flash的操作功能
[单片机]
STM32学习笔记13——DAC
DAC 简介 DAC 模块是 12 位电压输出数模转换器。DAC 可以按 8 位或 12 位模式进行配置,并且可与 DMA 控制器配合使用。在 12 位模式下,数据可以采用左对齐或右对齐。DAC 有两个输出 通道,每个通道各有一个转换器。在 DAC 双通道模式下,每个通道可以单独进行转换;当 两个通道组合在一起同步执行更新操作时,也可以同时进行转换。可通过一个输入参考电压引脚 VREF+ (与 ADC 共享)来提高分辨率。 DAC 主要特性 ● 两个 DAC 转换器:各对应一个输出通道 ● 12 位模式下数据采用左对齐或右对齐 ● 同步更新功能 ● 生成噪声波 ● 生成三角波 ● DAC 双通道单独或同时转换 ● 每个通道都具有
[单片机]
<font color='red'>STM32</font>学习笔记13——DAC
STM32中断及NVIC概述
参考资料《STM32F4xx 中文参考手册》第十章-中断和事件、《 ARM Cortex™-M4F 技术参考手册》-4.3 章节:NVIC 和 4.4章节:SCB—4.4.5的 AIRCR。 对51单片机有一定了解的都知道51单片机有5个中断源,2个优先级,通过对IP这个寄存器赋值来进行中断优先级的处理而STM32的中断非常强大,每个外设都可以产生中断,那么STM32如何进行中断优先级的分配呢,这时就用到了NVIC(嵌套向量中断控制器), 支持为数众多的系统异常和外部中断。 下表即为STM32F42系列的中断向量表(了解即可),即中断类型 灰色部分即为内核的系统异常,灰色以外的其他部分即为片上所有外
[单片机]
<font color='red'>STM32</font>中断及NVIC概述
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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