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.
大家好、团队、
我的客户 无法访问 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
tm4c123gh6m_startup_ccs.c 需要 SysTickIntHandler 函数的声明。
尝试添加:
//***************************************************************************** // // External declarations for the interrupt handlers used by the application. // //***************************************************************************** void SysTickIntHandler(void);
您好、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);
这是修改后的项目。
Carles、您好!
感谢您的回答。 我们已经修复 了 SysTick 处理程序、但仍然面临问题。 代码
SysTick single_interval (50000000,fFun);
当我把它放入 while (1){...}时
作为时间结束定期执行有趣代码是行不通的。它在不进入处理程序的情况下循环、但在 while (1)之前放置此代码时有效
提前感谢。
此致、
Renan
当您处于 while (1)中时、 您通过反复调用 SysTK_Single_interval 来继续重新初始化 SysTick 计时器。 定时器 被不断地重新初始化为预加载值50000000。 在它有机会计数到0以生成中断之前,它将再次初始化为 50000000 。 这就是它不起作用的原因。
我想切斯特和我已经解决了你原来 的问题。 如果您有新问题、请打开一个新主题、而不是继续在同一主题上处理 不同的问题。 这是为了避免按照论坛指南混乱线程。