大家好:
我的板子是EVM6678LE,CCS是v5.0.版本 ,我已经实现了PC与dsp进行串口通信,之前我把发送和接收写在一个线程里时,发现如果发送单个字的时候,可以接收,如果发送一串,比如hello时,就只能显示hlo,,但是,打断点跑,发现hello都已经存进了buf里面。然后,我就把接收和发送用两个线程写了,当发送hellokity的时候,只显示helkt,想问下大家觉得是哪里的问题?还是6678串口有bug?
非常感谢!
mao chen:
回复 noaming:
你好,以下是我接收和发送的主程序,您能帮我看下需要完善哪些地方吗?我加了延迟好像还是不行的。
int master_main(void){ int res; uint8_t buf; res=platform_uart_init(); res=platform_uart_set_baudrate(9600); platform_write_configure(PLATFORM_WRITE_PRINTF); while(1) { res=platform_uart_read(&buf,1); Task_sleep(100); if(res==Platform_EOK) {
platform_uart_write(buf);
} Task_sleep(50); }}
谢谢
noaming:
回复 mao chen:
你好,单步的时候,如果buf已经是你要写入的字符串了,那么问题在platform_uart_write(buf);函数里。
你要查看一下这个函数的用法。。。看他设计的时候是不是用来发字符串的。
noaming:
回复 noaming:
原函数:
Platform_STATUS platform_uart_write(uint8_t buf){ UartWriteData(buf);
return Platform_EOK;}
UartWriteData(buf);函数:
/****************************************************************************** * * Function: UartWriteData * * Description: This function writes a byte of data to UART device * * Parameters: uint8_t uchAddress – Address of 8-bit register * uint8_t uchByte – 8-bit data to write to THR * * Return Value: none ******************************************************************************/void UartWriteData(uint8_t uchByte)
{ while (!(CSL_FEXT(hUartRegs->LSR, UART_LSR_THRE))) { platform_delaycycles(10000); } CSL_FINS(hUartRegs->THR, UART_THR_DATA, uchByte); return;}
所以说,这个函数设计的时候,就是用来发送一个字节的字符的。
noaming:
回复 mao chen:
Task_sleep(50);不是延时函数。。。你自己设计一个延时函数吧。
mao chen:
回复 noaming:
谢谢你,我在改改我的程序,不懂在问你。
chen xie:
回复 noaming:
麻烦问一下链接里的问题http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/31537.aspx