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.
工具/软件:TI C/C++编译器
大家好、
我正在尝试使用 TM4C129ENCPDT MCU 进行裸机编程。
关于如何开始这项工作的好导游-也许是一个开始工作的好向导。
我正在使用 EK-TM4C129EXL LaunchPad。
提前感谢。 )
如果 您尚未下载 Code Composer Studio、或使用在线版本。 然后下载 TivaWare 库。 安装完这两个文件后、您可以打开 Code Composer 并执行 File -> Import ->
选择"CCS Projects"以导入示例、然后单击"Next"。
浏览至 TivaWare 中的"闪烁"示例。 默认情况下、它将位于"C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c129exl\blinky"中
单击"Copy projects into workspace"。
我们强烈建议不要执行直接寄存器写入、因为这会增加编程难度并增加错误数量。 我已复制过帖子"[FAQ]***张贴前阅读!*** TM4C 论坛通用指南"中的项目#4。
4) 4)避免仅使用直接寄存器修改(DRM)编程、而是使用 TivaWare。
TivaWare 的主要用途之一是无需单个用户了解 DRM 编程的来龙去脉。 因此、我们将无法为仅与 DRM 编程有关的任何问题提供支持。
对于那些真正想了解如何使用 DRM 对器件进行编程以便更好地理解的人、TI 建议首先使用 TivaWare 对项目进行编码、然后将 TivaWare API 部分逐段替换为它们执行的 DRM 代码。 由于 TivaWare API 是开源的、因此该选项对所有用户开放。
***这不适用于可能需要几次 DRM 调用来补充 TivaWare 或解决勘误项***的情况
Bob、您好!
我想了解更多有关用于教育目的的 DRM 编程的教程或示例代码。
是的、正如您提到的、最好的选择是使用 TivaWare、但此处并非如此。
非常感谢您的回答。 )
此致、
Arunava。
由于我们不建议直接修改寄存器、因此我们没有教程或示例。 我可以向您展示一个使用 DRM 使 LED 闪烁的简单程序、但这就是我可以为您提供的所有支持。 我怀疑您的教授是否直接向寄存器写入数据、以便您详细阅读数据表并更好地了解器件中的外设。
#include #include "inc/tm4c1294ncpdt.h" //********* // //! \addtogroup example_list //!Blinky (闪烁)
//! //! 一个非常简单的示例、使用直接寄存器 //! 访问。 //// ***************** // // //闪烁板载 LED。 //// ***************** int main (void) { volatile uint32_t ui32Loop; // //启用用于板载 LED 的 GPIO 端口。 // SYSCTL_RCGCGPIO_R = SYSCTL_RCGCGPIO_R12; // //执行虚拟读取以在启用外设后插入几个周期。 // ui32Loop = SYSCTL_RCGCGPIO_R; // //为 LED (PN0)启用 GPIO 引脚。 将方向设置为输出、然后 //启用 GPIO 引脚以实现数字功能。 // GPIO_PORTN_DIR_R = 0x01; GPIO_PORTN_DEN_R = 0x01; // //永久循环。 // while (1) { // //打开 LED。 // GPIO_PORTN_DATA_R |= 0x01; // //延迟一位。 // for (ui32Loop = 0;ui32Loop < 200000;ui32Loop +) { } // //关闭 LED。 // GPIO_PORTN_DATA_R &=~(0x01); // //延迟一位。 // for (ui32Loop = 0;ui32Loop < 200000;ui32Loop +) { } }
所有寄存器的定义由文件"tm4c1294ncppdt.h"提供、该文件可在 TivaWare 目录"C:\ti\TivaWare_C_Series-2.2.0.295\inc"中找到
尊敬的 Bob Crosby:
非常感谢您的帮助。
BTW、我是一名专业工作人员。 我目前正在使用桌面应用程序、并愿意转向嵌入式系统。 这方面的任何指导都将非常有帮助。
此致、
Arunava。
我建议您不要花时间尝试使用直接寄存器修改来编写代码。 相反、从使用 TivaWare 库的示例开始。 在调试代码时、当您认为 C 代码不执行所需的操作时、请使用反汇编窗口和汇编步进。 (我的代码有一种执行我所说的操作的平均习惯、而不是我想要执行的操作。) 如果外设不符合您的预期、请使用寄存器窗口查看您的代码如何对每个寄存器进行编程、并使用数据表中的详细寄存器说明检查它们是否正确。 这是您在寄存器级别获得器件知识的方法。 玩得开心! 嵌入式代码编写可能会令人沮丧且有益。
尊敬的 Bob Crosby:
非常感谢您的建议。 他们真的很乐于助人。
经过一些研究、甚至我也得出结论、使用 TI 的 API 将是最佳选择。
是的、有时它会令人沮丧、但它始终证明是有回报的。
此致、
Arunava。