工具/软件:Code Composer Studio
您好!
我构建了一个程序、尝试在 TI-RTOS 内开发读取 UART 数据和发送 UART 数据的程序。
我已经运行了 uartecho.c 演示、它运行良好、但是当我尝试将此代码放入当前的 TI-ROTS 程序时、我发送的每个字符都会返回 FF 或 FE。 某些字符返回 FF FF FE。 我不能找出这种行为的原因。
下面是主线程的代码、uarty 初始化和回波所在的空闲函数。 (我在一项任务中尝试执行此操作、但我以前无法使其正常工作)。
//***** 首页文件 // XDC 模块头文件 #include // XDC“基本类型”-必须先包括 #include // xdc.runtime pkg #include 中使用的 XDC 常量/类型 //对于在 RTOS .cfg 文件 #include 中静态创建的所有 BIOS 实例 //用于错误处理(例如错误块) #include // XDC 系统函数(例如 System_abort()、System_printf()) #include // TI-RTOS 内核头文件 #include // BIOS 模块 API #include //任务 API #include //信号量 API #include //时钟 API #include #include //标准 C 头文件 #include //标准整数类型 #include //标准变量类型和宏 //外设驱动程序头文件 #include "ti_drivers_config.h" // SYSCFG 板/驱动程序头文件 #include // TI GPIO 驱动程序头文件 #include "myGpio.h" // myGpio.c 的头文件 #include "myTimers.h" #include "myADC.h" #include "myUART.h" // *=== main ==== *//***** 原型 //***** 全局变量 Task_handle sensorRead、motorActuationDecirion、buttonPressed、uartRx; Task_Params 任务参数; Error_Block EB; UART_Handle UART; UART_Params uartParams; //***** 主循环 int main (void) { Board_init(); myGpio_init(); myTimers_init(); myADC_init(); myUart_init(); Task_Params_init (&taskParams); taskParams.priority=2; taskParams.STACKSIZE=512; // uartRx = Task_create (uartRxFxn、&taskParams、Error_IGNORE); // S_UartRX = Semaphore_create (0、NULL、Error_IGNORE); BIOS_start(); }
上面是我的主代码。 请注意、myUart_init 如下所示。
// XDC 模块头文件 #include // XDC“基本类型”-必须先包括 #include // xdc.runtime pkg #include 中使用的 XDC 常量/类型 //对于在 RTOS .cfg 文件 #include 中静态创建的所有 BIOS 实例 //用于错误处理(例如错误块) #include // XDC 系统函数(例如 System_abort()、System_printf()) #include #include #include /*驱动程序头文件*/ #include #include /*驱动程序配置*/ #include "ti_drivers_config.h" //***变量********* // extern UART_Handle UART; extern UART_Params uartParams; extern const char echoPrompt[]; unsigned char rxBuffer; void myUart_init (){ UART_INIT(); UART_PARAMS_INIT (uartParams); uartParams.writeDataMode = UART_DATA_BINARY; uartParams.readDataMode = UART_DATA_BINARY; uartParams.readReturnMode = UART_return_full; uartParams.readEcho = UART_ECHO_OFF; uartParams.baudrate = 115200; UART = UART_OPEN (CONFIG_UART_0、uartParams); //uart_write (UART、echoPrompt、sizeof (echoPrompt));//注意如果我取消注释,整个程序将中断。 }
最后、我的空闲函数代码位于 UART 读取和写入的位置下面。
// XDC 模块头文件 #include // XDC“基本类型”-必须先包括 #include // xdc.runtime pkg #include 中使用的 XDC 常量/类型 //对于在 RTOS .cfg 文件 #include 中静态创建的所有 BIOS 实例 //用于错误处理(例如错误块) #include // XDC 系统函数(例如 System_abort()、System_printf()) #include // TI-RTOS 内核头文件 #include // BIOS 模块 API #include //标准 C 头文件 #include //标准整数类型 #include //标准变量类型和宏 //外设驱动程序头文件 #include #include "ti_drivers_config.h" // SYSCFG 板/驱动程序头文件 #include // TI GPIO 驱动程序头文件 #include "myGpio.h" #include char rxUART; extern UART_Handle UART; extern UART_Params uartParams; const char echoPrompt[]="回显字符:\r\n"; void myIdleFxn (void) { UART_WRITE (UART、echoPrompt、sizeof (echoPrompt));//这不起作用! UART 上没有显示任何数据。 while (1){ UART_READ (UART、&rxUART、1);//rxUART 的 Loginfo 此处显示127。 UART_WRITE (UART、&rxUART、1); } }
请提供任何帮助。