CC32xx器件包括一个应用处理器和一个网络处理器。
一、API Descriptions
1.Display_printf
1.1 IDE Console(Host)
DisplayHost没有调用限制。
#include <ti/display/Display.h>
Display_Handle display;
display=Display_open(Display_Type_HOST,NULL);
...
Display_printf(display,0,0,"Count=%d and it's address is 0x%x\n",count,&count);
1.2 UART
UART接口有两种类型:
- DisplayUartAnsi:以占用空间为代价的功能丰富的模块。
- DisplayUartMin:简单的UART管理,功能较少,但体积更小。大多数示例的默认值是DisplayUartMin。
如果使用的是RTOS,只能从task或pthread调用DisplayUart。如果不适用RTOS,可以从main调用DisplayUart。
#include <ti/display/Display.h>
Display_Handle display;
display=Display_open(Display_Type_UART,NULL);
...
Display_printf(display,0,0,"Count=%d and it's address is 0x%x\n",count,&count);
2.System_printf
仅当应用进程使用TI-RTOS时,System_printf才可用。
系统模块允许应用进程插入不同的系统代理。代理负责底层实现。两个主要的支持代理是SysMin和SysCallback。
可以在内核配置文档(例如.cfg文档)中分配代理。
System.SupportProxy=SysMin;
无论基础代理是什么,顶级System_printf都是相同的。
#include <xdc/runtime/System.h>
System_printf("Count=%d and it's address is 0x%x\n",count,&count);
SysMin(ROV/IDE控制台输出)模块将ASCII数据存储到内部缓冲区中。内部缓冲区的大小是可配置的。在指示这样做之前,数据不会刷新到CIO缓冲区。因此,SysMin不会像Display_printf或printf那样影响实时性能。
SysCallback(UART输出)模块允许用户插入一个类似putchFxn的函数,该函数在格式化完成后在System_printf中调用。
3.UART_PRINT
UART_PRINT仅在SimpleLink CC32xx SDK中可用。此API仅支持通过UART输出。
#include "uart_term.h"
InitTerm();
UART_PRINT("Count=%d and it's address is 0x%x\n",count,&count);
总结
API | RTOS Dependency | Summary |
printf | None | 易于使用,使用默认设置时会影响实时性能 |
printf over UART | None | 易于使用,具有可能的调用限制 |
Displat_printf | None | 附加设置,但灵活且独立于操作系统/IDE |
System_printf | TI-RTOS | 灵活且对应用进程的潜在影响最小 |
UART_PRINT | None | 仅在CC3220设备上可用 |
UARTprintf | No-RTOS | 使用非RTOS时在MSP432E4上可用 |
二、封装比较
1.控制台输出
以下是向IDE控制台和UART显示时不同调试API的比较,显示了添加一个调试调用的额外内存影响。测试字符串是以下字符串之一:
printf("This is a debug string %d,0x%x,%f\n",1,&someVariable,3.14);
Display_printf(display,0,0,"This is a debug string %d,0x%x,%f\n",1,&someVariable,3.14);
System_printf("This is a debug string %d,0x%x,%f\n",1,&someVariable,3.14);
UART_PRINT("This is a debug string %d,0x%x,%f\n",1,&someVariable,3.14);
2.UART输出
三、注意点
1.CC26x2R1开发板如图所示,要确保跳线帽的连接无误,这样才能烧录程序。
2.大多数示例都将SysCallback作为默认系统代理,而默认函数什么也不做。可以通过以下三种方式来将输出字符串放置在可以通过ROV查看的内部缓冲区中。
- 将release.cfg文档更改以使用SysMin:最简单的方法,但应该看看是否会对使用此内核项目的其他项目产生影响。
- 创建新的内核项目:复制粘贴release内核项目,重命名它,使用SysMin并将GPIO中断指向新的内核项目。这将最大限度地减少对其他项目的影响。
- 移动到调试内核项目:调试内核项目使用SysMin以及许多其他调试功能。