摘要:使用 PWM 或定时器外设来生成输出脉冲。
首先,CPU 的时钟速度与实际代码执行速度有着复杂的关系,在许多 CPU 中,不同的执行阶段涉及不止一个时钟频率。例如,您引用的芯片有几个内部时钟源。此外,每条单独的指令可能需要不同数量的时钟来执行,并且一些内核可以同时执行部分(或全部)几条指令。
要在不使用定时中断或其他硬件设备的情况下严格创建一个需要 12.5 µs 执行的循环,需要用汇编语言仔细手工编码,并仔细计算每条指令的执行时间。
但是您是用 C 语言编写的,而不是汇编程序。
所以你要问的第一个问题是你的循环实际上生成了什么机器代码。第二个问题是您是否启用了优化器,以及启用到什么级别。
正如所写,一个体面的优化器将确定循环for (i=0; i<1000; i++) ;
没有可见的副作用,因此只是一种缓慢的编写方式;
,可以完全删除。
如果它确实编译了循环,则可以使用多达 5 条指令或少至一两条指令来天真地编写它。我个人并不熟悉这种特定的 TI CPU 架构,因此我不会尝试猜测最佳实现方式。
综上所述,了解 CPU 架构及其效率对于构建可靠且高效的嵌入式系统非常重要。但考虑到该芯片内置了为 PWM(脉冲宽度调制)输出以及通用硬件定时器/计数器提供硬件支持的外围设备,您最好学习使用硬件为您生成波形。
我会首先收集 CPU 内核及其外围设备上的所有可用文档,尤其是应用说明和示例代码。
C 编译器可以选择生成和保存汇编语言源文件。我将以此为指导来研究为关键循环和其他瓶颈生成的代码结构,以及编译器各种优化级别的影响。
该工具套件应该有一种机制来分析您的运行代码。在开始追求优化的英雄措施之前,首先使用它来确定实际的瓶颈。即使它缺乏像样的配置文件,您也可能有备用的 GPIO 引脚,可以在代码的关键部分进行切换并使用逻辑分析仪或示波器进行测量。