主题中讨论的其他器件:TM4C123
工具/软件:Code Composer Studio
如果我们使用 F5 (Step-Into)执行、但使用 F8 (Resume)和 F6 (Step-over)执行、则与 UARTStudio 库一起使用的 UART printf 函数工作正常、代码仅在 printf (仅打印15个字符甚至打印更多字符串)后挂起、而执行 F5、F6按钮仅为 freez。 使用的微控制器是 TM4C123GH6PMI。
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.
工具/软件:Code Composer Studio
如果我们使用 F5 (Step-Into)执行、但使用 F8 (Resume)和 F6 (Step-over)执行、则与 UARTStudio 库一起使用的 UART printf 函数工作正常、代码仅在 printf (仅打印15个字符甚至打印更多字符串)后挂起、而执行 F5、F6按钮仅为 freez。 使用的微控制器是 TM4C123GH6PMI。
您的代码是什么样的。 我的示例(随附)似乎可以正常工作。
/cfs-file/__key/communityserver-discussions-components-files/908/EK_2D00_hello_2D00_long.zip
[引用 user="Gurudev Prasad"]UARTStudio 库使用的 UART printf 函数如果我们使用 F5 (Step-Into")执行、 但是、对于 F8 (Resume)和 F6 (Step-over)、代码会在 printf (仅打印15个字符、甚至打印更多的字符串)后挂起、而 F5、F6按钮只会自由运行。根据问题说明、可能是 CCS 调试器禁用了中断。
在 程序/存储器加载选项 调试属性中、CCS 可设置为在以下条件下禁用中断:
-组装步进时。
-源步进时。
-运行时。
在调试属性上、尝试取消勾选禁用中断的选项。
[引用 user="Gurudev Prasad"]为什么 F6/F8仅使用15个字符而 F5不会发生挂起? TM4C123 UART 具有16个字符的发送 FIFO。 当 uartstdio.c 配置为缓冲模式时、当定义 UART_buffered 宏时、 然后、当使用"long"字符串调用 UARTprintf 时、前16个字符将写入 UART 发送 FIFO、剩余的字符存储在软件缓冲区中、供 UART 中断处理程序传输(当 UART 发送 FIFO 中有可用空间时)。
当您描述了传输15个字符的问题时、我认为传输中断因某种原因而停止时会出现问题。
您能否确认 uartstudio.c 是否在缓冲模式下使用、并提供显示故障的示例项目?
我自己没有看到过这样的失败、因此不知道根本原因是不是:
a)程序中的竞态条件、仅在 CCS 调试器中步进时才会显示。
b) CCS 调试器导致中断处理不正确。
这可能是因为您有较旧版本的 TivaWare、或者您的 TivaWare 安装在不同的目录中。 此项目包含文件"uartstdio.c"作为链接。
右键单击文件并选择"属性"、您可以看到文件所在的位置:
如果您没有在目录"C:\ti\TivaWare_C_Series-2.1.4.178"中安装 TivaWare 版本2.1.4.178、Code Composer 将找不到此文件、并且 UARTprintf 和 UARTStudioConfig 的符号将不会被解析。
一种解决 方案是在 C:驱动器的默认位置安装最新版本的 TivaWare。 另一种解决方案是找到"uartstdio.c"和"uartstdio.h"文件、并将其复制到"ek-hello-long"项目中。