在了解ek-lm3s811时,看到uart_echo的demo,想要用到自己的项目中,但后来出现不能回显得问题,所以就新建了一个项目,将uart_echo项目中的源码拷贝到新项目中,一切都按照demo中的项目配置,编译下载后,仍然出现不能回显得问题,而且项目配置一样的情况下,生成的code大小还是不一样,所有的文件不一样的地方在startup.s文件中,但是这个文件是keil自动生成的,这个会有影响吗?都是使用的同样的库函数,我想差别就在其他的配置上。图片上显示的一个是TI(原demo)一个 Luminary(自己项目生成),这个影响应该很大,里面的代码也有几行不一样。问题会是出现在这里吗,如何解决这个问题
此帖出自
小平头技术问答
//
// 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!
;
; 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
用到了中断的话,得在startup.s里注册
另外,我记得那个例程是有点问题的,发送字符比较长的时候,会有丢字符的问题。
好像是因为调用的函数问题,它调用的串口函数把要发送的字符丢了就跑的,没有考虑fifo是否满,没有考虑前面字符是否发送完毕。
问题确实出在这个地方,需要在startup文件里申明中断处理。这个问题真不会想到会出现在这个自动生成的文件中。
一周热门 更多>