你好,这是我写的一段UART的代码,
/*串口声明*/
char input;
UART_Handle uart;
UART_Params uartParams;
static PIN_State ledPinState;
const char echoPrompt[]="\fEchoing characters:\r\n";
PIN_Config ledPinTable[] = {
Board_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
Board_LED2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
PIN_TERMINATE
};
void echoFxn(UArg a0,UArg a1)
{
while(1)
{
UART_read(uart, &input, 1);
UART_write(uart, &input, 1);
}
}
int main(void)
{
/**************************GPIO灯********************************************/ PIN_Handle ledPinHandle;
Board_initGeneral();
ledPinHandle = PIN_open(&ledPinState, ledPinTable);
PIN_setOutputValue(ledPinHandle, Board_LED1, 1);
/*************************串口***********************************************/
UART_init(); //USart ini
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 = 9600; //波特率
uartParams.stopBits=UART_STOP_ONE;
uartParams.parityType=UART_PAR_NONE;
uart = UART_open(Board_UART0, &uartParams); //打开串口
UART_write(uart, echoPrompt, sizeof(echoPrompt));// UART_read(uart, &input, 1);
// UART_write(uart, &input, 1);
// System_flush();
// /* This example has logging and many other debug capabilities enabled */
// System_printf("This example does not attempt to minimize code or data "
// "footprint\n");
// System_flush();
//
// System_printf("Starting the UART Echo example\nSystem provider is set to "
// "SysMin. Halt the target to view any SysMin contents in "
// "ROV.\n");
// /* SysMin will only print to the console when you call flush or exit */
// System_flush();
/* Start BIOS */
BIOS_start();
return (0);
}
在TI-RTOS例程基础上改了一点,请问有什么问题啊,无法打印出来,求指教!
Maka Luo:
Board_initUART();
/* Construct BIOS objects */ Task_Params_init(&taskParams); taskParams.stackSize = TASKSTACKSIZE; taskParams.stack = &task0Stack; Task_construct(&task0Struct, (Task_FuncPtr)echoFxn, &taskParams, NULL)
Task初始化咋没有了,你这改动不是一点。应该是无法启动任务执行。
wenjing guo:
回复 Maka Luo:
你好,刚才把任务初始化了,还是无法进行串口打印,在进行仿真中,发现主要问题是单步调试可以执行 UART_write(uart, echoPrompt, sizeof(echoPrompt));,却无法执行UART_write(uart, &input, 1);,请问是什么问题呢,input声明过了,程序没有报错。想再请教一下您,谢谢啦
wenjing guo:
回复 Maka Luo:
这个问题我卡了好久了,求解答呀,不胜感激!!
wenjing guo:
回复 Maka Luo:
求指教啊,谢谢啦
xin wang22:
回复 wenjing guo:
我在调试uart例程的时候也发现修改后可以打印字符串,但是不能打印input,但input那句是例程里写的应该没有问题,但因为不需要直接把他删了,也没有细想,当时猜测可能是input未赋值的原因
wenjing guo:
回复 xin wang22:
我现在也没有用input那句了只用了UART_write(uart, echoPrompt, sizeof(echoPrompt)); ,单步调试时可以进入UART_write(uart, echoPrompt, sizeof(echoPrompt)); ,但是无法通过串口助手讲字符打印出来,是怎么回事啊,没有配置成功吗?请教
xin wang22:
回复 wenjing guo:
意思是说你可以运行通过这句代码,但串口助手没有打印是吗?
wenjing guo:
回复 xin wang22:
对呀,运行通过这句代码,但是串口助手没有显示
xin wang22:
回复 wenjing guo:
uart初始化部分如果你是照搬例程的应该没有问题,你尝试下在bios启动后,也就是任务的回调函数中使用uartwrite,如果不行的话就应该是串口连接的问题了,不知道你用的什么连接方式
wenjing guo:
回复 xin wang22:
按您的方法试了一下,发现我的程序执行不到BIOS_start();,请问是什么问题啊
TI中文支持网
