关于ek-lm3s811 uart_echo的疑问

2019-03-24 15:29发布

在了解ek-lm3s811时,看到uart_echo的demo,想要用到自己的项目中,但后来出现不能回显得问题,所以就新建了一个项目,将uart_echo项目中的源码拷贝到新项目中,一切都按照demo中的项目配置,编译下载后,仍然出现不能回显得问题,而且项目配置一样的情况下,生成的code大小还是不一样,所有的文件不一样的地方在startup.s文件中,但是这个文件是keil自动生成的,这个会有影响吗?都是使用的同样的库函数,我想差别就在其他的配置上。图片上显示的一个是TI(原demo)一个 Luminary(自己项目生成),这个影响应该很大,里面的代码也有几行不一样。问题会是出现在这里吗,如何解决这个问题 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
ddllxxrr
1楼-- · 2019-03-25 10:37
楼主的问题出现在,没改.s文件UART的中断相量名称,就是中断子程序的名称。应用EXTERN 子程序名称;
           DCD  子程序名称;
声明一下。当然主程序里应有这个子程序的函数体


                 OVER
yhfathn
2楼-- · 2019-03-25 14:41
 精彩回答 2  元偷偷看……
weirgu
3楼-- · 2019-03-25 17:59
漏发的问题,是你采用的函数不对,两个函数都是把你要发送的数据往发送FIFO写,一个是写满了后,就把后面的数据丢掉了,一个是写满后,会一直等待有空位后在往里面写。
你需要加一个UARTSpaceAvail(UART0_BASE))来判断FIFO是不是还有空间。
void MCU_UART0Printf(const char *pucBuffer,...)
{
    char buf[MCU_UART0_TX_MAX_BUFF + 1u];
    unsigned long len , i = 0;
    va_list vArgs;
       
    buf[0] = (char)0u;
       
    va_start(vArgs, format);
    vsnprintf(( char *)buf, sizeof(buf) - 1, ( const char*)pucBuffer, vArgs);
    va_end(vArgs);
       
    len = Str_Len(buf);

    while(len)
    {
        if(UARTSpaceAvail(UART0_BASE))
        {
                /*Write the next character to the UART.*/
                UARTCharPutNonBlocking(UART0_BASE, buf);                     
                len--;
                i++;
        }
    }
}
暖暖美少
4楼-- · 2019-03-25 21:48
嗯,有所了解,刚好做到这一块,等板做回来,就可以操作了。单单看TI的资料还不是很能理解的,在网上下了几份朋友们的解读,有点体会了,到时在板上跑下,或许才能完全透彻。

一周热门 更多>

相关问题

    相关文章