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/TM4C123GH6PGE:TM4C123GH6PGE

Guru**** 2455560 points
Other Parts Discussed in Thread: TM4C123GH6PGE

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/639289/ccs-tm4c123gh6pge-tm4c123gh6pge

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

工具/软件:Code Composer Studio

大家好、

我的平台是 TM4C123GH6PGE

CCS 版本6.2、

 我无法构建我的项目。 我遇到复位故障问题。

在我的项目中、

  我正在进行太阳能水泵项目,在此项目中,我使用 ADC、PWM、SD_CARD、GSM、LCD,并通过中断来并行使用。

我的代码无需使用 SD_CARD 或 GSM 代码(任何一个)即可完美运行。

但使用并行端口(SD_CARD 和 GSM)时、 会 发生 RESET_ISR_Fault。

请帮我...为什么?

出现此问题?

谢谢!  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Satya、
    您能否先通过在寄存器浏览器窗口的 SYSCTL 模块中读取 RESC 寄存器来找出导致复位的原因? 我建议您在启动 SC_CARD 或 GSM 代码之前、首先在寄存器浏览器窗口中向 RESC 寄存器写入0来清除 RESC 寄存器。 然后、您将继续运行 SC_CARD 或 GSM 代码。 如果您收到复位、请读取 RESC 以找出复位的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢主席作出回应,
    在我的代码中,SIR 没有任何语法错误,也没有任何链接错误.....
    但问题在运行时发生(我的代码正在工作、但会产生一段时间 ResetISr_Fault)。

    SIR 请告诉我清除 RESC 寄存器的代码语法(CCS_V6.2)。

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

    您好 Satya、

    我没有问您是否有编译/链接错误。 我要求您检查 RESC 寄存器。 请参阅以下屏幕截图。 RESC 寄存器是 SYSCTL 模块中的寄存器。 通过向寄存器写入0 (您可以直接在 CCS 寄存器浏览器中执行此操作)来确保 RESC 寄存器是清零的、并在 SD_CARD/GSM 代码运行后检查 RESC。   

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

    谢谢主席先生,

    但是、SIR 在执行此过程之后、在问题发生之前也是如此、并且 CCS 调试窗口显示如下所示(在"附加图像"中)。

    这样、plese 会向我发送代码 syntex 来解决这个问题。

                 谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请查看您发布的图片。 RESC 显示软件复位位位为高电平。 这意味着您在代码中的某个位置生成软件复位。 仔细查看您自己的代码、看看可能导致此类软件复位的原因。 此外、您还可以使用观察点调试功能来查看哪条指令可能已写入 CPU 内核中的 APINT (应用中断和复位控制)寄存器。 APINT 寄存器位于地址0xE000ED0C。 有关如何使用观察点功能、请参阅 CCS。 配置完成后、它将观察要写入的地址0xE000ED0C、并将停止 CPU。 我认为这些是您在软件开发过程中想要获得的功能。

    API:
    SysCtlReset()-生成软件复位的函数
    SysCtlResetBehaviorGet -用于返回发出的复位类型的函数
    SysCtlResetCauseClear -用于清除指定复位位位的函数。

    有关详细信息、请参阅外设驱动程序库用户指南。

    我不理解您对代码语法解决问题的含义。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这张海报(现在)是否"未经注意"已"占用了"关键 T.I.职员"的形象-这是"不正确"-不是吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、先生、

     我试图搜索… 为什么会出现这个问题…

    根据我的说法,我在我的程序中使用了9个中断,就像这样...


    IntMasterEnable();

    IntPrioritySet (INT_TIMER0A、0x00);

    2. IntPrioritySet (INT_PWM0_0_TM4C123、0x20);

    IntPrioritySet (INT_PWM0_1_TM4C123、0x40);

    4. IntPrioritySet (INT_PWM0_2_TM4C123、0x60);

    5. IntPrioritySet (INT_ADC0SS0_TM4C123、0x80);

    6. IntPrioritySet (INT_HIBERY_TM4C123、0xA0);

    7. IntPrioritySet (INT_TIMER1A、0xC0);

    8.内部权限集(INT_TIMER2A、0xE0);

    9. IntPrioritySet (FAULT_SysTick、0xFF);

     可能是该问题是由中断....引起的

    请建议我… 如何解决此问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您仅运行 GSM 或 SD_card、但禁用了其他所有功能、尤其是休眠、该怎么办?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    主席先生,
    我的项目要求所有流程都并行工作(如 GSM 和 SD_card)。
    先生、我将休眠用于 SD_card 用途。


    所有这些模块是否可以并行?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Satya、

    我所要求的只是一种方法、通过找出单独运行 GSM 或 SD_card (没有其他外设运行且器件处于正常运行模式、而不是休眠模式)是否会导致复位、来确定/隔离问题。 我不要求您更改最终的应用要求。 我知道调试并不简单、但我建议您从简单的方法开始。 如果单独运行 GSM 或 SD_CARD 将创建复位、则更容易缩小问题的根本原因。 如果运行 GSM/SD_CARD 不会导致复位、那么您可以逐个添加其他外设、直到获得复位。 这样、您就会发现哪个外设是违规模块、在某些未知情况下会导致您遇到的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="CB1_MOBI"]是否"通过未注明"此海报(现在)"占用了"TI 关键员工"的图像-这是"不当"-不是?

    [/报价]
    我认为这不应该通过未记录的测试。 尽管 TI 的幕后联系可能就足够了。
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢您-请注意、"幕后"工作已经启动。
    在他的代码上有更多的海报时间-在头像选择上减少-似乎是可取的...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    主席先生,
    我的代码在没有 SD_CARD (使用 GSM)的情况下运行得非常完美、但在这种情况下使用 SD_CARD 时、会出现 CPU 暂停问题。
    当定时器中断运行 SD_CARD 代码时,会出现此问题...
    如果我将 SD_CARD 代码作为正常条件(无中断)执行、那么它也可以正常运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴听到您正在取得一些进展。 我假设您的 SD 卡是通过 SPI 接口访问的、对吧?
    如何设置计时器中断?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢主席先生、

    是的!
    听说我使用的是 SD_CARD 的 SPI 接口。
    计时器中断设置与此类似..........
    步骤1:-
    SysCtlPeripheralEnable (SYSCTL_Periph_TIMER2);
    SysCtlPeripheralSlepEnable (SYSCTL_Periph_TIMER2);
    步骤2:-
    IntPrioritySet (INT_TIMER2A、0xc0);
    步骤3:-
    TimerConfigure (TIMER2_base、TIMER_CFG_A_PERIODICRACASE);
    TimerLoadSet (TIMER2_base、timer_A、3*SysCtlClockGet ());
    IntEnable (INT_TIMER2A);
    TimerIntEnable (TIMER2_base、TIMER_TINA_TIMEOUT);
    步骤4:-
    TimerEnable (TIMER2_base、TIMER_A);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Satya、
    不确定这是不是问题。 您可以在下面尝试一下吗? 如果只想将 TIMERA 用作16位计时器、则需要使用 TIMER_CFG_SPLIT_PAIR 来分隔 TIMERA 和 TIMERB。

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

    G'Day Charles、

    应该注意的是、海报已经将这个定时器中断的优先级设定为(极低)?

    (即"IntPrioritySet (INT_TIMER2A、0xC0);")  "0xE0"是有史以来最低的-"0xC0"(上升)-但也很小!   (海报可能"颠倒了"他的"中断优先级?"的感觉)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、
    谢谢。 我没有查看海报的中断优先级。 是的、它很低。 但是、我无法连接这些点、以了解中断优先级或仅使用计时器中断会如何导致复位。 我的建议仍然是让他监控 RESC 寄存器并单步执行他的代码、直到他获得复位、在这种情况下、他可以读取 RESC 的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    关于"连接点"-这是一致同意的。 也就是说、在这样一个"要求苛刻的多外设环境"中、需要"高度关注细节"、并且正如这种(相当肯定的)优先级错误选择所暗示的那样、此类"关注"可能不会(完全)存在... (这是海报的工作-不是我们的工作...)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Charles Tsaa"]我的建议仍然是让他监控 RESC 寄存器并单步执行其代码、直到他重置、在这种情况下、他可以读取 RESC 的原因

    或者、如果工具支持它、则在复位时使用带有断点的跟踪、此时您不仅可以看到原因、还可以返回源(可能)。 这不是一项简单的任务、但有时我们必须突破大工具的限制。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Robert、
    如果海报具有正确的调试探针(如 XDS200或 JLink)以方便通过 SWO 进行跟踪、这是一个很好的建议。 我还想知道在堆栈返回期间 PC 是否损坏、从而使其看起来像复位。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢  Charles 先生 和所有社区成员(CB1_MOBILE 和  Robert Adsett...)、

    最后、我通过你们所有人的帮助解决了我的问题。

    这个问题是由 IntPrioritySet 发生的,因此我提高了优先级并解决了这个问题。

    非常感谢所有人!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Satya、
    很高兴您的问题得到解决。 信用额度用于质疑优先级水平的 CB1。 但是、我想知道低中断优先级为什么会导致复位。 您能不能解释一下。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如今、这里的绿色流量比芝加哥河中的绿色流量更多 稻田日!"    (当城市“烧掉钱”,“染(亚洲卡普感染)河”绿色!)

    它仍然存在(不可解释)- API 创建者如何以及为什么选择"最低值"来表示"最高 ISR 优先级!"    这就是"制造克莱兹"(几乎像"死河"),难道不是吗?

    (如果臂内置(搜索)如此低的值(这可以通过"位反转"轻松实现)清楚地标出"不自然/意外!"