5093|10

4

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于ek-lm3s811 uart_echo的疑问 [复制链接]

在了解ek-lm3s811时,看到uart_echo的demo,想要用到自己的项目中,但后来出现不能回显得问题,所以就新建了一个项目,将uart_echo项目中的源码拷贝到新项目中,一切都按照demo中的项目配置,编译下载后,仍然出现不能回显得问题,而且项目配置一样的情况下,生成的code大小还是不一样,所有的文件不一样的地方在startup.s文件中,但是这个文件是keil自动生成的,这个会有影响吗?
都是使用的同样的库函数,我想差别就在其他的配置上。图片上显示的一个是TI(原demo)一个 Luminary(自己项目生成),这个影响应该很大,里面的代码也有几行不一样。问题会是出现在这里吗,如何解决这个问题

startup.jpg (36.96 KB, 下载次数: 0)

startup.jpg

startup1.jpg (32.42 KB, 下载次数: 0)

startup1.jpg

最新回复

嗯,有所了解,刚好做到这一块,等板做回来,就可以操作了。单单看TI的资料还不是很能理解的,在网上下了几份朋友们的解读,有点体会了,到时在板上跑下,或许才能完全透彻。  详情 回复 发表于 2011-10-26 18:03
 
点赞 关注

回复
举报

31

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
//*****************************************************************************
//
// uart_echo.c - Example for reading data from and writing data to the UART in
//               an interrupt driven fashion.
//
// Copyright (c) 2005-2011 Texas Instruments Incorporated.  All rights reserved.
// Software License Agreement
//
// Texas Instruments (TI) is supplying this software for use solely and
// exclusively on TI's microcontroller products. The software is owned by
// TI and/or its suppliers, and is protected under applicable copyright
// laws. You may not combine this software with "viral" open-source
// software in order to form a larger program.
//
// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
// DAMAGES, FOR ANY REASON WHATSOEVER.
//
// This is part of revision 7611 of the EK-LM3S811 Firmware Package.
//
//*****************************************************************************

Firmware版本已到7611!
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
这里要确定是发送的问题,还是OLED的显示问题。
 
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

4
 

回复 板凳 microli 的帖子

;******************************************************************************
;
; External declaration for the interrupt handler used by the application.
;
;******************************************************************************
        EXTERN  UARTIntHandler
.....
.....
        DCD     IntDefaultHandler           ; GPIO Port C
        DCD     IntDefaultHandler           ; GPIO Port D
        DCD     IntDefaultHandler           ; GPIO Port E
        DCD     UARTIntHandler              ; UART0 Rx and Tx
        DCD     IntDefaultHandler           ; UART1 Rx and Tx
        DCD     IntDefaultHandler           ; SSI0 Rx and Tx
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

5
 

原帖由 academic 于 2011-9-22 21:48 发表 ;****************************************************************************** ; ; External declaration for the interrupt handler used by the application. ; ;************************************* ...

 

用到了中断的话,得在startup.s里注册

 

另外,我记得那个例程是有点问题的,发送字符比较长的时候,会有丢字符的问题。

好像是因为调用的函数问题,它调用的串口函数把要发送的字符丢了就跑的,没有考虑fifo是否满,没有考虑前面字符是否发送完毕。

 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼 David_Lee 的帖子

例程里是用到了接收中断,我再仔细看下startup.s里有哪些区别。那个发送字符的问题我也遇到过问题,不过好像是我定义的字符串的问题,同时发送几十个字符不会出太大问题。几百上千的没试过。
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

7
 
原帖由 academic 于 2011-9-22 21:48 发表
;******************************************************************************
;
; External declaration for the interrupt handler used by the application.
;
;************************************* ...


问题确实出在这个地方,需要在startup文件里申明中断处理。这个问题真不会想到会出现在这个自动生成的文件中。
 
 
 

回复

1万

帖子

16

TA的资源

版主

8
 

那个文件不是自动生成的,只是每建个工程时都要自动考一份

楼主的问题出现在,没改.s文件UART的中断相量名称,就是中断子程序的名称。应用EXTERN 子程序名称;
           DCD  子程序名称;
声明一下。当然主程序里应有这个子程序的函数体


                 OVER
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 5楼 David_Lee 的帖子

我将源文件中UARTSend函数中的发送命令UARTCharPutNonBlocking(UART0_BASE, *pucBuffer++);改为UARTCharPut(UART0_BASE, *pucBuffer++);尝试发送几十个字符没有出现漏发的问题。在这篇帖子里https://bbs.eeworld.com.cn/thread-291294-1-8.html发现了这两个函数的说明。
 
 
 

回复

80

帖子

0

TA的资源

纯净的硅(初级)

10
 
漏发的问题,是你采用的函数不对,两个函数都是把你要发送的数据往发送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++;
        }
    }
}
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(中级)

11
 
嗯,有所了解,刚好做到这一块,等板做回来,就可以操作了。单单看TI的资料还不是很能理解的,在网上下了几份朋友们的解读,有点体会了,到时在板上跑下,或许才能完全透彻。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表