This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TM4C129ENCPDT:使用 PWM 生成信号

Guru**** 2330830 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/593475/ccs-tm4c129encpdt-signal-generation-with-pwm

器件型号:TM4C129ENCPDT

工具/软件:Code Composer Studio

大家好、我需要生成五个(10 20 30 40 45) KHz 的差分信号、 我已经配置了两个 PWM 输出来为我生成20和40 KHz 信号、 但是、在输出端、只有第一个信号具有正确的周期、第二个信号具有与第一个信号相同的周期、但对占空比进行了修改、尽管我已经用 50%的占空比配置了这两个信号。 代码如下:

#include 
#include 
include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"

#include "driverlib/debug.h"
#include "driverlib/fpu.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib_rom.idt.inc"driverlib"#driverlib.idt/driverf.idt.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.idr.id












G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);

SysCtlPWMClockSet (SYSCTL_PWMDIV_1);

SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);
SysCtlPeripheralEnable (SYSCTL_Periph_PWM1);

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);

GPIOPinConfigure (GPIO_PF0_M0PWM0);
GPIOPinConfigure (GPIO_PF1_M0PWM1);

GPIOPinTypePWM (GPIO_PORTF_BASE、GPIO_PIN_0);
GPIOPinTypePWM (GPIO_PORTF_BASE、GPIO_PIN_1);

PWMGenConfigure (PWM0_BASE、PWM_GEN_0、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_SYNC);
PWMGenConfigure (PWM0_BASE、PWM_GEN_1、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_SYNC);

PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、6000);
PWMGenPeriodSet (PWM0_BASE、PWM_GEN_1、3000);

PWMPulseWidthSet (PWM0_BASE、PWM_OUT_0、PWMGenPeriodGet (PWM0_BASE、PWM_GEN_0)/(2));
PWMOutputState (PWM0_BASE、PWM_OUT_0_BIT、TRUE);
PWMGenEnable (PWM0_BASE、PWM_GEN_0);

PWMPulseWidthSet (PWM0_BASE、PWM_OUT_1、PWMGenPeriodGet (PWM0_BASE、PWM_GEN_1)/(2));
PWMOutputState (PWM0_BASE、PWM_OUT_1_BIT、TRUE);
PWMGenEnable (PWM0_BASE、PWM_GEN_1);
while (1)
{
}
} 

我想知道是否可以使用 PWM 生成5个信号、每个信号具有各自的周期。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    虽然我们不使用该 MCU、但我相信各个"PWM 发生器"最多可以支持两个 PWM 输出-每个/任何一个"用户可编程占空比"-但(两者)设置为相同的频率/周期!

    这就要求(直接)使用"五个"这样的 PWM 发生器-来产生"五个不同的"PWM 频率/周期。  (我有超过90%的"肯定"(不要打赌农场))

    那么该怎么办?   (假设您的 MCU 不包含5个独立的 PWM 发生器)

    • 设置为 PWM 模式的定时器提供"合理的"PWM 功能。   (缺乏对 PWM 发生器的精细/完全控制)
    • 可以将40KHz PWM 输出信号路由到"定时器输入"引脚-并实现"二分频"(产生所需的20kHz)和"四分频"(产生所需的10kHz)。   我怀疑通过一个简单的"触发器"(肯定会对频率进行积分分频)来实现这一点会更简单/更快、我不确定是否会保持占空比-尽管"FF"会在信号边沿计时-这几乎可以确保 PWM 调制丢失!
    • 最令人惊喜的是(在上面运行"关闭电源轨"之后)、您会看到您使用了四个 PWM 发生器(在一个 PWM 模块中)、从而产生四个所需的频率。 PWM 信号-通过第2个 PWM 模块(相信这是"PWM1_Base-"或通过您的任一定时器-再次强制进入 PWM 模式。

    我声称"注意力分散或暂时的精神错乱"是针对"第2项"(上面)、而我(现在)认为这项"没有机会"维持占空比-而是输出了50%的占空比(仅限)。

    "讲师、老板、某人"能够让您使用有利的 API、而不是" S L O W  M O T I O N"(对您和帮助者而言)"耗尽"和"出错"(否则为"令人愉快") DRM、这是一件很好的事情。

    虽然这是一个以 MCU 为中心的论坛、但此类应用可能会通过硬件(FPGA 或 CPLD)实现更快/更轻松/更好的实施。   MCU 无法高效地完成所有任务!   (尊敬的先生/女士 主持人)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    塞尔吉奥
    请看这篇文章、它将帮助您找到 PWM 术语。
    e2e.ti.com/.../2034434
    我几乎确定您可以使用 PWM 执行您想要的操作... 希望外设全部连接到方便的引脚上!
    此致
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    然而-作为两个不同 PWM 发生器输出的海报"成功"-他的问题(实际上)是否是"术语?"

    更有可能、单个 PWM 发生器的"无法在2个输出上产生不同的频率/周期"?   

    同样、占空比可单独调节、但 PWM 频率/周期(必须)是共享的!  (在任何双通道 PWM 发生器内)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    CB1、

    海报的问题可能是术语、难以配置输出、甚至只是常规冷-从这里很难确定... 但是、从上一篇文章中深入了解 PWM 问题不会受到影响。

    该特定的 p/n 具有"一个脉宽调制器(PWM)模块、其中包含四个 PWM 发生器模块和一个控制模块、总共8个 PWM 输出"

    由于有4个发生器块、他当然可以创建4个不同的周期。 第5个需要使用计时器创建-这并不是一个大问题、只需在 PWM 模式下使用计时器即可。

    那些用作 PWM 配置的宏很棘手(很容易混淆)、因为它们具有相似的名称-所以虽然我现在无法重现/测试他的代码、但我认为问题可能只是一个错误的参数...

    件、

    布鲁诺

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、Bruno、
    谢谢。 你总是比我的反应快。 :-)

    您好、Sergio、
    正如 CB1和 Bruno 所说的、每个 GEN 块控制两个 PWM、这意味着它们共享相同的时基/频率。 您可以从每个 GEN 块的两个 PWM 中产生两个不同的占空比。

    您是否看到 PWM_OUT_1输出25%占空比?

    在下面的行中、您尝试将 PWM_OUT_1的占空比设置为 GEN_1周期的50%。 请注意、PWM_OUT_0和 PWM_OUT_1共享相同的 GEN_0。 由于 GEN_1周期是 GEN_0的一半、因此、您应该会在 PWM_OUT_1上看到25%占空比。

    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_1、PWMGenPeriodGet (PWM0_BASE、PWM_GEN_1)/(2));
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引述用户="Charles Tsaaa">谢谢。 你总是比我的反应快。 :-)[/报价]

    在我的情况下-至少-这是(唯一的)因为我今天在旧金山附近-我的旅行方向-是"下坡"。

    讲师、培训师、老板"必须知道"(Bruno 确认)、该 MCU "只有"四个 PWM 发生器-因此需要一些"方向错误"才能实现第5个 PWM 输出。

    我的(第一篇文章-回应)确实建议使用" PWM 模式中的计时器"来满足"讲师、培训师、老板"的要求...

    哦,查尔斯——不是 CB1“那么好的连线”,因为知道“小队 Bob”——正在为那个“著名的事件”——五月的第一个星期六——明天在 KY 会发生什么?   (CB1也会成为这一旅程的目标)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    布鲁诺-我的朋友-和"仪表的介绍者"。    我们必须同意不同意。    有趣的是(至少对你/我来说)你的"术语"论点很有意义-当针对"仪表"时。

    然而-事实(相当严重)偏我(法庭室)-正如海报绝对有四个 PWM 信号工作-他唯一的能力是在单个 PWM 发生器上实现独立频率!      你、查尔斯和这位记者都同意,不能这样做。   因此-没有/没有"术语缺陷"-执行了他的 PWM 输出!

    至(完全)"打破"您的术语请求-海报到底是如何实现的、"每个 PWM 输出的单独频率控制-在同一个发生器中?"   哪些术语定义定义明确/描述-"单独的频率控制?"    很明显-没有!     因此问题是"理解"而不是术语!

    实际上、您(过去)为更好地识别 PWM "命名规则"的"输入/输出"(该词为0.25 (美元))所做的努力是有帮助的-但海报(再次)让 PWM 输出自动完成!   他唯一的"失败"就是实现了四种不同的频率-即使你的"好"(但过去的帖子)也无法纠正!   我记得,我是一个(也许是唯一一个)承认并称赞你过去的职位的人。   但是-它今天不在这里发挥作用!

    我不相信 MCU 手册或驱动程序库用户指南(具体而言)中曾提到/建议"可单独设置一代中的占空比-频率很常见!"    在(某些)点、可能会添加此类信息、但不可能很快添加到-因为"PF0/PD7攻击用户"在"NMI 果味平原"继续造成伤害(现在是5年)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 USER="CB1_MOBILE "]这一"著名事件"- 5月的第一个星期六-明天在 KY 会发生什么?  [/报价]

    希望看到另一个美国法老。 享受!明天我将乘坐飞机。 :-)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    塞尔吉奥

    CB1告诉我什么事情是不能做的、没有什么比它更"幸运"了。

    这是您的代码、祝您愉快。 很抱歉、我也没有时间为45KHz 信号添加计时器配置... 晚上10点过去。

    如果您有 EK-TM4C1294 Launchpad、则信号将位于接头 C1-1、C1-2、C1-4和 C2-3上。

    此致

    布鲁诺

    #include "main_PWM01.h"
    
    uint32_t systemClock;
    
    void main (void)
    {
    系统时钟= SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_GPIOF)));
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_GPIOG)));
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_GPIOK)));
    SysCtlPWMClockSet (SYSCTL_PWMDIV_1);
    SysCtlPeripheralDisable (SYSCTL_Periph_PWM0);
    SysCtlPeripheralReset (SYSCTL_Periph_PWM0);
    SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_PWM0)));
    //阅读此 文档了解相关说明:e2e.ti.com/.../344373
    // PWM0_BASE:0是引脚名称上 M0PWM3的0
    // PWM_OUT_3和 PWM_OUT_3_BIT:3是引脚名称上 M0PWM3的3
    // PWM_GEN_1:Gen_0用于 PWM0和 PWM1、GEN_1用于 PWM2和 PWM3、GEN_2用于 PWM4和 PWM5、GEN_3用于 PWM6和 PWM7
    GPIOPinTypePWM (GPIO_PORTF_BASE、GPIO_PIN_1 | GPIO_PIN_2);
    GPIOPinTypePWM (GPIO_PORTG_base、GPIO_PIN_0);
    GPIOPinTypePWM (GPIO_PORTK_base、GPIO_PIN_5);
    GPIOPinConfigure (GPIO_PF1_M0PWM1);
    GPIOPinConfigure (GPIO_PF2_M0PWM2);
    GPIOPinConfigure (GPIO_PG0_M0PWM4);
    GPIOPinConfigure (GPIO_PK5_M0PWM7);
    PWMGenConfigure (PWM0_BASE、PWM_GEN_0、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC | PWM_GEN_MODE_DBG_RUN);
    PWMGenConfigure (PWM0_BASE、PWM_GEN_1、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC | PWM_GEN_MODE_DBG_RUN);
    PWMGenConfigure (PWM0_BASE、PWM_GEN_2、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC | PWM_GEN_MODE_DBG_RUN);
    PWMGenConfigure (PWM0_BASE、PWM_GEN_3、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC | PWM_GEN_MODE_DBG_RUN);
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、系统时钟/10000);
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_1、系统时钟/20000);
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_2、系统时钟/30000);
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_3、系统时钟/40000);
    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_1、系统时钟/20000);
    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_2、系统时钟/40000);
    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_4、系统时钟/60000);
    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_7、系统时钟/80000);
    PWMGenEnable (PWM0_BASE、PWM_GEN_0);
    PWMGenEnable (PWM0_BASE、PWM_GEN_1);
    PWMGenEnable (PWM0_BASE、PWM_GEN_2);
    PWMGenEnable (PWM0_BASE、PWM_GEN_3);
    PWMOutputState (PWM0_BASE、PWM_OUT_1_BIT | PWM_OUT_2_BIT | PWM_OUT_4_BIT | PWM_OUT_7_BIT、TRUE);
    while (1)
    {
    }
    }
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Bruno Saraiva"]有四个 PWM 发生器-它们不需要共享频率!

    Bruno -你在战斗中-正如明确指出的-首先是 Moi -然后是 Charles -这个共用频率发生在一个 PWM 发生器中!    (作为"术语 Maven "、您(应该)知道这一点。)

    因此、即使有四个 PWM 发生器、也只能产生四个 PWM 输出频率。   我注意到的-第一个帖子。

    因此-我们必须将其归结为"太累了的 Bruno "、以错误地陈述 CB1索赔。   再说一次-即" 在单个 PWM 发生器中发生共享频率!"


    您认为我告诉您"什么事情不能做-什么时候可以做?"    只有当您可以将单个 PWM 发生器的两个不同频率同轴电缆时、这种情况才会证明、当然、您不能!

    您可以自由地先找到-然后准确地引用我-同时证明您可以做到这一点。   (我们知道-您不能这样做)

    睡得好——所以(也许)明天你会更容易出错——因为马匹和 CB1队沉醉于“Mint Juleps”。    (很可能已经混合/准备好-通过由两个输出共享的单频 PWM、在单个 PWM 发生器中!)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、CB1、各位好!

    我的立场得到了纠正、您从未说过一台发电机可以提供两种不同的频率-抱歉。 周五晚上肯定不会帮助快速阅读、我觉得您说过海报所需的内容是不可能的!

    至于 OP 的第一个请求、由于提供一个简单的示例不会有任何影响、下面是可生成他所需的全部5个频率的代码:

    #include "main_PWM01.h"
    
    uint32_t systemClock;
    
    void main (void)
    {
    系统时钟= SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_GPIOF)));
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_GPIOG)));
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_GPIOK)));
    
    SysCtlPWMClockSet (SYSCTL_PWMDIV_1);
    SysCtlPeripheralDisable (SYSCTL_Periph_PWM0);
    SysCtlPeripheralReset (SYSCTL_Periph_PWM0);
    SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_PWM0)));
    //阅读此 文档了解相关说明:e2e.ti.com/.../344373
    // PWM0_BASE:0是引脚名称上 M0PWM3的0
    // PWM_OUT_3和 PWM_OUT_3_BIT:3是引脚名称上 M0PWM3的3
    // PWM_GEN_1:Gen_0用于 PWM0和 PWM1、GEN_1用于 PWM2和 PWM3、GEN_2用于 PWM4和 PWM5、GEN_3用于 PWM6和 PWM7
    GPIOPinTypePWM (GPIO_PORTF_BASE、GPIO_PIN_1 | GPIO_PIN_2);
    GPIOPinTypePWM (GPIO_PORTG_base、GPIO_PIN_0);
    GPIOPinTypePWM (GPIO_PORTK_base、GPIO_PIN_5);
    GPIOPinConfigure (GPIO_PF1_M0PWM1);
    GPIOPinConfigure (GPIO_PF2_M0PWM2);
    GPIOPinConfigure (GPIO_PG0_M0PWM4);
    GPIOPinConfigure (GPIO_PK5_M0PWM7);
    PWMGenConfigure (PWM0_BASE、PWM_GEN_0、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC | PWM_GEN_MODE_DBG_RUN);
    PWMGenConfigure (PWM0_BASE、PWM_GEN_1、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC | PWM_GEN_MODE_DBG_RUN);
    PWMGenConfigure (PWM0_BASE、PWM_GEN_2、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC | PWM_GEN_MODE_DBG_RUN);
    PWMGenConfigure (PWM0_BASE、PWM_GEN_3、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC | PWM_GEN_MODE_DBG_RUN);
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、系统时钟/10000);
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_1、系统时钟/20000);
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_2、系统时钟/30000);
    PWMGenPeriodSet (PWM0_BASE、PWM_GEN_3、系统时钟/40000);
    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_1、系统时钟/20000);
    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_2、系统时钟/40000);
    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_4、系统时钟/60000);
    PWMPulseWidthSet (PWM0_BASE、PWM_OUT_7、系统时钟/80000);
    PWMGenEnable (PWM0_BASE、PWM_GEN_0);
    PWMGenEnable (PWM0_BASE、PWM_GEN_1);
    PWMGenEnable (PWM0_BASE、PWM_GEN_2);
    PWMGenEnable (PWM0_BASE、PWM_GEN_3);
    PWMOutputState (PWM0_BASE、PWM_OUT_1_BIT | PWM_OUT_2_BIT | PWM_OUT_4_BIT | PWM_OUT_7_BIT、TRUE);
    
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_GPIOD)));
    SysCtlPeripheralDisable (SYSCTL_Periph_Timer1);
    SysCtlPeripheralReset (SYSCTL_Periph_Timer1);
    SysCtlPeripheralEnable (SYSCTL_Periph_Timer1);
    while (!(SysCtlPeripheralReady (SYSCTL_Periph_Timer1)));
    GPIOPinTypeTimer (GPIO_PORTD_base、GPIO_PIN_3);
    GPIOPinConfigure (GPIO_PD3_T1CCP1);
    TimerConfigure (Timer1_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_PWM);
    TimerLoadSet (Timer1_base、timer_B、系统时钟/45000);
    TimerMatchSet (Timer1_base、timer_B、系统时钟/90000);
    TimerControlLevel (Timer1_base、timer_B、false);//只是一个使计时器 PWM 高电平有效的示例
    TimerEnable (Timer1_base、timer_B);
    
    while (1)
    {
    }
    } 

    在 EK-TM4C1294 Launchpad 上、信号将位于接头 C1-1、C1-2、C1-4、C2-3 (用于 PWM 信号)上、加上 A1-7 (用于45KHz 计时器 PWM)。 下图显示了以下两个通道、一个为10kHz、另一个为45KHz -此示波器上没有可用的更多通道、我今天不会设置逻辑分析仪:

    此致

    布鲁诺

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bruno、

    你已经(再次)"超越/超越"-做得好-海报应该非常感激。   (我注意到-您之前的代码将 Sys Clk 设置为120MHz -但您的"PWM 分频"基于"100MHz..."。)  (即10、000分频)

    随着"血液酒精计数减少"、"讲师/老板/组群"可能已经知道"四个 PWM 发生器限值"(您已确定)、并试图看到我们的海报"如何或如何"克服。

    考虑到(两者)您/我"牺牲了所有四个 PWM 发生器"-可能会(仅)使用2.5个 MCU 计时器已证明" MCU 功能吸收较少"-同时(仍)满足海报的"五个 PWM 输出目标?"   (我认为、由于我们通过选择 PWM 发生器"对4个 PWM 输出进行了"浪费"、因此没有理由在这项(简单)任务中使用 PWM 发生器的功率和功能。)

    如果海报可以请求"讲师/老板/组群"对"为什么需要5个 PWM 输出?"的评论、这将是值得关注的。

    我和您在一起、Bruno -逻辑分析仪在芝加哥也不太可能活过来。   (假设小艇飞越山峰-今天晚些时候安全返回...)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很棒的一天 CB1

    小工艺品肯定会飞越许多山峰-或者在某些情况下、四处逛逛-无论我是不是相信这些小机器会让我的生活充满活力!

    现在、如果 OP 与某种学校运动相关-在这种情况下、我可能已经毁坏了-我想让一些挑战挂起:

    -使所有5个信号同步。

    -为较慢的信号配置两个输出:一个为1000Hz,另一个为500Hz。

    然后、学生将获得我的好机会、继续进入他的下一个级别。

    布鲁诺

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对之前的答复:是的、我同意对这些简单的 PWM 信号使用 TCCP、而不是 PWM 硬件本身、这是"较低的消耗"。

    该读数是否正确、在项目中选择哪一个?

    PWM 硬件具有特殊功能、例如直接同步、保证死区以及从一个单个发生器轻松获得相对信号-它们具有专门针对运动控制的功能。 在大多数器件型号中、只有1个块和4个发生器-有些没有、有一些(如果有)有2个。
    -计时器是简单的多用途串行器、正如本文中的代码所证明的、也可以非常轻松地生成方波脉冲。 TM4C 中的 TCCP 更丰富、与找到 PWM 引脚相比、找到 TCCP 更容易。

    总之、我对项目的引脚多路复用阶段确实有一些注意事项...

    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我要将"PWM 硬件"更改为"PWM 发生器硬件"。
    并且-除非需要 PWM 发生器的"特性"中的(很多)-使用、"能力较差的资源"(即计时器)符合教科书的批准...