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:无法访问 SysTick andeler

Guru**** 2049780 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/1005247/tm4c123gh6pm-can-not-access-the-systick-handeler

器件型号:TM4C123GH6PM

大家好、团队、

我的客户 无法访问 SysTick 处理程序来执行其代码、即使他们启用了控制寄存器中的中断位、他们在该位使用该位只是为了对延迟进行正常计数、而这种首选也不需要启用 NVIC。

e2e.ti.com/.../GPIO_5F00_TEST6.rar

此致、

Renan

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

    您好!

     -如果代码打算生成 SysTick 中断,那么我看不到矢量表中声明的 SysTick 矢量。 在矢量表的第85行、它指向 IntDefaultHandler、而不是特定的 SysTick ISR。  

    - TivaWare 库中有一个 SysTick 示例。 您可以在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\peripheral\SysTick 中找到。 该示例将 SysTick 配置为每1秒生成一次中断。  

    -您显示的代码是自定义驱动程序。 是否有理由不使用成熟的 TivaWare 外设驱动程序? 我建议您将您的驱动程序与 TivaWare 进行比较。  

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

    您好、Charles、

    祝你一切正常、感谢您的回答。

    我的客户回复如下:

    在 tm4c123gh6m_startup_ccs.obj 文件中、当我在矢量表中将 DefaultIntHandler 替换为 SysTickIntHandler 以进行定义时、它会给我带来错误。

    此致、

    Renan

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

    Renan、您好!

    [引用 tm4c123gh6m_startup_ccs.obj 文件中的 userid="392209" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1005247/tm4c123gh6pm-can-not-access-the-systick-handeler/3716411 #3716411"]当我在矢量表中将 IntDefaultHandler 替换为 SysTickIntHandler 以进行定义时,它会给我错误。

     您能更具体地说明什么错误吗? 您遇到编译器/链接器错误吗? 您在  矢量表中声明 SysTickIntHandler、但是否在源文件中定义了此 ISR 函数?

     您是否有机会运行我提到的 SysTick 示例?  

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

    您好、Charles、

    请参阅以下我的客户回复:

    我更新了代码以将 intDefaultHandler 替换为 tm4c123gh6m_startup_ccs.c 中的 SysTickIntHandler、以便在矢量表中定义它、它会给我"错误#20:标识符"SysTickIntHandler"未定义"。 else.please 会检查代码。

    e2e.ti.com/.../GPIO_5F00_TEST6_5F00_2.rar

    提前感谢您

    此致、

    Renan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="392209" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1005247/tm4c123gh6pm-can-not-access-the-systick-handeler/3720898 #3720898"]我更新了代码,将 tm4c123gh6m_startup_ccs.c 中的 IntDefaultHandler 替换为 SysTickIntHandler,以便在矢量表中定义它,它会给我“错误#20:标识符“SysTickIntHandler”未定义”。[/quot]

     tm4c123gh6m_startup_ccs.c 需要 SysTickIntHandler 函数的声明。

    尝试添加:

    Fullscreen
    1
    2
    3
    4
    5
    6
    //*****************************************************************************
    //
    // External declarations for the interrupt handlers used by the application.
    //
    //*****************************************************************************
    void SysTickIntHandler(void);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

     您好、Charles、

    请参阅以下我的客户回复:

    正如您提到的、我更新了代码、但我出现了新错误"../main.c"、第10行:致命错误#1965:无法打开源文件"tm4c123gh6m_startup_ccs.h"问题仍然存在。

    提前感谢您

    此致、

    Renan

     

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

    Renan、您好!

     我不明白为什么您拒绝了切斯特的回答、即谁是我们的社区贡献者、而没有首先验证他的解决方案是否正确。 首先、 没有像 tm4c123gh6pm_startup_ccs.h 这样的文件、而 是 tm4c123gh6m_startup_ccs.c 文件。 我只需按照 Chester 的建议将下面的行添加到 tm4c123gh6m_startup_ccs.c、所有内容都可以编译。  

    extern void SysTickIntHandler (void);

    这是修改后的项目。  

    e2e.ti.com/.../GPIO_5F00_TEST6.zip

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

    Carles、您好!

    感谢您的回答。 我们已经修复 了 SysTick 处理程序、但仍然面临问题。 代码
    SysTick single_interval (50000000,fFun);
    当我把它放入 while (1){...}时
    作为时间结束定期执行有趣代码是行不通的。它在不进入处理程序的情况下循环、但在 while (1)之前放置此代码时有效  

    提前感谢。

    此致、

    Renan

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

    当您处于 while (1)中时、 您通过反复调用 SysTK_Single_interval 来继续重新初始化 SysTick 计时器。 定时器 被不断地重新初始化为预加载值50000000。 在它有机会计数到0以生成中断之前,它将再次初始化为 50000000 。 这就是它不起作用的原因。  

    我想切斯特和我已经解决了你原来 的问题。 如果您有新问题、请打开一个新主题、而不是继续在同一主题上处理 不同的问题。 这是为了避免按照论坛指南混乱线程。