TI中文支持网
TI专业的中文技术问题搜集分享网站

用TM4C129 串口发送数据只能一次发送不多于9个字节

    用TM4C129 串口发送数据只能一次发送不多于9个字节,超过9个字节也能发出去,但是之后就不能再发数据了。用的UARTCharPut函数,循环发送,循环9次之后必须要等一段时间再发,才能正常发出,这是什么原因呢?

xyz549040622:

把你的代码贴上来,用的哪个串口,中断方式还是阻塞方式,贴上来我这里测试下。

lei zhou96:

回复 xyz549040622:

你好,用的uart0,阻塞方式,在enet_s2e这个项目里改的程序。一个串口任务里,每隔一段时间循环发送9个字节没问题,如果循环发送10个字节,就只能发出去一次,之后就发不出去了,电脑的串口调试助手只能收到10个字节,代码如下:

static void SerialTask(void *pvParameters){ int i=0, j=0, m; int v[MAX_S2E_PORTS]; while(1) { for(j=0; j<30000; j++) { m=5; } for(i=0;i<9;i++)//改成10就只能发出1次10字节,之后发送不出去了 { UARTCharPut(g_ui32UARTBase[0], i); } }

xyz549040622:

回复 lei zhou96:

是不是和MAX_S2E_PORTS这个参数有关呢,因为你用的是以太网转串口,应该是以太网那边的缓冲限制了吧。

lei zhou96:

回复 xyz549040622:

示例程序用的是UART3和4。我用的是UART0和1。我发现中断处理函数在startup_rvmdk.S里声明的地方要换一下。要改成:

DCD SerialPort0IntHandler ; UART0 Rx and Tx DCD SerialPort1IntHandler ; UART1 Rx and Tx

。。。

DCD IntDefaultHandler ; UART3 Rx and Tx DCD IntDefaultHandler ; UART4 Rx and Tx

这个可以在startup_rvmdk.S文件里直接改吗?

xyz549040622:

回复 lei zhou96:

对的,你需要在startup_rvmdk.S中把默认的DCDIntDefaultHandler 对应位置中加上UART3和4中断函数的名称,并编写中断函数才可以的。原来问题出在这里了,问题是,你用阻塞方式的话,不开启中断也是可以的呀。

赞(0)
未经允许不得转载:TI中文支持网 » 用TM4C129 串口发送数据只能一次发送不多于9个字节
分享到: 更多 (0)