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.

[参考译文] TM4C123GH6PM:TM4C123x API 函数和实际寄存器之间的映射?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/590184/tm4c123gh6pm-mapping-between-tm4c123x-api-functions-and-actual-registers

器件型号:TM4C123GH6PM
主题中讨论的其他器件: TM4C123

使用 TM4C123 Tiva Launchpad 一直很有趣。  目前、我已经学习了如何使用 DMA 执行 UART。  由于除了 UDMA_DEMO 程序之外、没有太多演示、因此这很有挑战性。  这个程序看起来正是我想要了解的操作方法、但我的问题是它大量使用 TM4C123x API 函数。  我非常喜欢使用实际的寄存器地址操作、因为它允许我遵循 TM4C123GH6PM 数据表、详细了解每个寄存器的功能并更好地了解正在发生的情况。

在 UDMA_DEMO 中、我必须使用"Tiva C 系列 TM4C123x ROM 用户指南"(也称为 SPMU367.pdf)来查找每个 API 函数调用、然后使用该信息来确定函数调用所使用的寄存器和寄存器中的位。  这很耗时、有点痛苦。  必须有更好的方法。  有人吗?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:
    了解您对 API 内幕揭秘如何工作的好奇心。 API 的目的是提供硬件抽象、以便人们更容易开发他们的软件、而不是花费大量的时间来了解硬件的每个细节。 根据您的学习需求、我建议您使用基于闪存的 API、而不是基于 ROM 的 API。 这样、您就可以通过 API 函数单步执行(使用调试器中的步进按钮)、并查看正在执行的代码。 同时、您可以在寄存器浏览器窗口中查看相应的寄存器、并查看寄存器如何根据数据表中的说明发生变化的影响。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Charles -大家好、感谢您的回复。 不错的建议 我不知道基于闪存的 API。 我只是尝试在 Google 中搜索它、但没有找到任何东西。 是否有您可以指向我的 PDF?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:
    对于您在示例中看到的每个基于 ROM 的 API、还有一个等效的基于闪存的 API。 只需删除 ROM_PREFIX 并重新编译工程即可。 例如,您可能在 UDMA_DEMO 示例中看到 ROM_uDMAChannelEnable()。 只需删除 ROM_,它就会在编译期间链接基于闪存的 API uDMAChannelEnable()。
    我将在这里提供另外两条说明。 首先、如果您不关心代码优化、请在重建代码之前在项目属性中将其关闭。 这样可以更轻松地调试代码。 否则、当您单步执行代码时、您可能会看到光标在来回跳跃。 其次、当您进入 API 函数时、它可能会首先抱怨它无法找到 API 所在的文件。 发生这种情况时、只需单击"locate file"按钮并提供 driverlib 的路径。 通常、这类似于 c:\ti\TivaWare_C_Series-2.1.4.178\driverlib。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    啊、明白了。 再次感谢您!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想建议、除了供应商 Charles 提供的合理建议之外、您对"外设驱动程序用户指南"的研究应该证明它具有巨大的优势。

    此708页指南详细介绍了大多数 API 函数-解释了必要的"输入/输出"-这些函数可简化和加快您对 API 的使用和利用。

    如果您使用(正常)文件结构、可在 TivaWare\docs\中找到此指南。

    另一个主要优势(API 享有直接注册或汇编之外的优势)是代码的"预测试和验证"-(仅限)存在于 API 中。   与此形成鲜明对比的是、每个/每个"直接注册或 ASM "工作-注册为"未制表的冒险!"   (确实、您会有"以权威为傲"的感觉-但代价高昂-而且风险极高。)   如果您(有)对项目效率感兴趣、并且这里很少有"帮助者"愿意"深入探讨"来帮助那些"必须"使用 DRM 的人、那就不是很好了!   (多个 MCU 手册-开放-(始终)要求!)   (最常有一个有趣的球类比赛!)

    Charles & I 注意到、(无)会阻止您 在 API (成功)代码流期间审核密钥寄存器(使用和行为)。   崩溃/烧写-在 DRM 下很常见-很好地公开 MCU 寄存器-但仅(可能也可能)在"龟群速度"。   在项目完成和交付后、这里的大多数客户都"获得付款"-大多数客户都是"匆忙"-使用 API 可提供压倒性优势!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CB1 -感谢您的见解。 我只是在学习、因此我欣赏这样的见解。 在我对该领域缺乏了解的情况下、我本以为 API 更多地是用于对 TM4C123x 进行编程的"下载"界面、而专业人士不会使用它、但在阅读完您的帖子后、我的想法已发生逆转。 是否正确地认为该领域的专业人员更常使用 API? 很好奇。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的"喜欢"Bob -一直很感激。 (我们在供应商的"低线程数 T 恤衫"和"高质量"咖啡杯上运行"有点低"-(同时、我们会不公平地"调节")、所以任何"积极"都是一个大加分项!)

    让我们来看看、"愚蠢的"-您不是单独在(非常开始)评估中!   在"巨大的(令人兴奋的)细节(708个 pgs)和尝试-真实-测试?"的东西上、它是"自卸"还是"背对背"?   速度和易用性的价值是什么-特别是对于一个"新 Bob "-他刚刚来到这里?

    大多数人将需要技术指导-迟早。   也许(更多)对于您的"帮助者"来说、对(大多数)适当的 API 函数进行2分钟回顾-或者花一个小时(可能更多)"页面搜索/翻"-勇敢地努力获得"所有关键/关键32位 MCU 寄存器中的每个/每个位、MCU 寄存器(假设我们可以"发现"这些、 无指导)完全正确?

    作为一家小型技术公司的所有者-我知道迄今为止最高的利润-被授予"他"尽早、恰当地"进入市场!   当团队专门使用 DRM (或 ASM)时、这种"先入/先入市场"是否会产生?

    而且-在这个星球上的任何客户-是否可能"支付额外费用"、因为我们的"及时交付、MCU 产品-是通过 DRM 开发的(仅限)?"

    “迟到”——或者根本不是——可能是一个更严重的罪吗?    我们都不应该努力"利用一切"阳光下的优势"来推动成功吗?

    每一个“比较”(我更喜欢“宰杀”一词)都站在“API”的一边——什么都不近!

    您知道、我们的世界现在是全球-竞争从"全方位"开始-牺牲发展"速度和效率"、以摆脱"愚蠢"的标签-似乎不是"深思熟虑的目标!"   而且-那些"有空闲时间"和/或"好奇心"的人可能会在我们发货后翻动 MCU 手册页面-但在开发过程中不会这样做-这将是愚蠢的!

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

    Bob、

    您是否遇到过 Luis Afonso 在 DMA 上的页面?

    https://sites.google.com/site/luiselectronicprojects/tutorials/tiva-tutorials

    几年前、当我开始处理 DMA 时、我从这方面学到了很多。

    [引用 user="Bob Jennings"]我真的更喜欢使用实际的寄存器地址操作

    有一个选项"中间的某个位置":使用 Tivaware 函数来提高效率/可靠性/可读性、并且只需单步调试其中的每条线。 大多数情况下、IDE 在第一次运行时找不到源代码、但如果您只指向正确的文件位置、您可以像使用自己的代码一样逐行查看 Tivaware。

    此致

    布鲁尼

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

    [引用 user="Bruno Saraiva"]。您可以逐行查看 Tivaware、就像使用自己的代码一样

    上面的引号(缺少)一个关键/关键"但书"-如果用户(始终)的"未经测试/未验证" DRM/ASM 代码出现错误-(许多)"故障 ISR"代码列表中的一个-将(相反)问候此类用户...

    "中间"(某处)过状态。   API 代码的"每行/每行"是否需要进行审核?   如果不是--哪一个--以及如何作出这样的决定?   而且-这种额外的"时间/精力"是否不会延迟项目交付-同时(严重)"打破程序员(适当/必要)的总关注点?"    程序 的代码流、竞争代码方法/方法的挑战 以及"淘汰"最佳、互连的代码块必须保持主导地位/核心地位!

    灵感四射、高效的代码最常产生于极端关注-为计划细节扫汗-而不是"改道"、"远离路线!"   (即使在"声称"此类改道"为"中途运输"时、尤其是在这种情况下。)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您提供的其他有趣的见解、CB。 我可能应该用一个免责声明来澄清我的"愚蠢的"声明、我并不是说这是贬损性的。 在我的软件开发经验中、在功耗和易用性之间有一个总体的权衡。 如所示、当某种产品更易于使用时、其功能就会变弱。 或者、换一种方式、当某种产品更易于使用时、其功能或灵活性会降低。 作为汽车类比-自动变速器和斗杆换档之间的差异。

    非常感谢您的想法。 我获得的每一位信息都有助于使 TM4C123开发生态系统更清晰。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Bruno Saraiva"]

    您是否遇到过 Luis Afonso 在 DMA 上的页面?

    https://sites.google.com/site/luiselectronicprojects/tutorials/tiva-tutorials

    [/报价]

    不,我没有。  我现在仔细看了一下、研究这个问题并尝试他的 DMA 闪烁 LED 示例确实会有所帮助。  谢谢、Bruno。  

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

    我非常喜欢您的"自动变速器与斗杆换档"类比、尤其是像过去(和短暂)旧金山居民一样、在爬(非常)陡峭的山坡时、说"斗杆"并强制"停下"(通过灯光或标志)!  然后、汽车"在我身后"-接近"英寸"-从我的保险杠上。  我被告知,在这种事件发生后,对"精神健康"设施的访问达到高峰,随后很快就访问了"auto-xmsn"。 "汽车经销商。  (即"API"经销商)

    您确实会注意到、"一般性权衡、功能较弱、功能或灵活性较差"-所有这些都是 API 强加的。  然而,“API 资产的洗衣清单”并不是越长,远远超过 API 引入的那些(可能/可能的)弱点(可能的)?   必须是"净增益或净损失"吸收了我们的注意力-不是吗?

    没有 API 可以完全预测(所有)用户需求-确实如此。  然而、总的来说、"1000页以上" MCU 手册可以清晰、快速或高效地"指导每位用户-了解他的"确切主题"。

    我的经验是、API "避免"了您的大部分(适当/潜在)异议、并且令人惊叹的是、"加快、简化和增强" MCU 项目开发!   几乎所有这些都应该是目标一!

    很明显、您的"自下而下"描述是"方便的"、而不是"深思熟虑的"。   相反-您的 "一般"、"预先存在的怀疑"、在您阅读/审查/使用和分析此供应商的 API 时、不是"被"卸载"您的?   这是我(几乎)的某些决定。  (由工程学和法律学院提供)

     很确信您会(快速)放弃"怀疑" 、因为您会( 反复)从(这)供应商强大、全面且高效 的 API 中获益...