本帖最后由 yueyinji1989 于 2012-10-16 15:37 编辑
你们好,我在做LPC2138串口通信的时候遇到这样个问题,找了很久都没答案。请各位指教!
做串口通信时,ARM与PC串口相连,使用串口助手时可以接到数据,但是无论我在源代码如何修改发送的字符,串口助手接到的数据都是一样的不变。
此外,连接超级终端的时候,超级终端却显示不出什么。请问这是什么问题呢?谢谢!
(串口线测过,波特率都设置好的了)
源代码:
/**************************************************************
*文件名:uart0.c
*功能:向串口发送数据
*说明:使用外部11.0592MHz晶振、根据CONFIG.H文件配置,
* Fpclk=11.0592MHz,通信波特率为115200,8位数据位,1位停止位,
* 无奇偶效验
**************************************************************/
#include"config.h"
#include"Target.h"
#define UART_BPS 115200
uint8 const SEND_STRING[]="Hello world!";
/***********************************************************
*名称:DelayNS()
*功能: 长软件延时
*入口参数: dly
*出口参数: 无
**********************************************************/
void DelayNS(uint32 dly)
{
uint32 j;
for(; dly>0; dly--)
for(j=0; j<50000; j++);
}
/***********************************************************
*名称:UART0_Ini()
*功能: 初始化串口。设置为8位数据位,1位停止位,无奇偶校验位
* ,波特率为115200
*入口参数: 无
*出口参数: 无
**********************************************************/
void UARTO_Ini()
{
uint16 Fdiv;
U0LCR=0x83; //DLAB=1,可设置波特率,8位字符长度,
Fdiv=(Fpclk/16)/UART_BPS; //设置波特率
U0DLM=Fdiv/256;
U0DLL=Fdiv%256;
U0LCR=0x03; //DLAB=0;
}
/***********************************************************
*名称:UART0_SendByte()
*功能: 向串口发送字节数据,并等待发送完毕
*入口参数: data,要发送的数据
*出口参数: 无
**********************************************************/
void UART0_SendByte(uint8 data)
{
U0THR=data; //发送数据
while((U0LSR&0X40)==0); //等待数据发送完毕
}
/***********************************************************
*名称:UART0_SendStr()
*功能: 向串口发送一字符串
*入口参数: str,要发送字符串的指针
*出口参数: 无
**********************************************************/
void UART0_SendStr(uint8 const *str)
{
while(1)
{
if(*str=='\0') break;
UART0_SendByte(*str++); //发送数据
}
}
/***********************************************************
*名称:main()
*功能: 主函数,向串口发送字符串“Hello world!”
**********************************************************/
int main(void)
{
PINSEL0=0x00000005; //设置I/O口为UART0
UARTO_Ini();
while(1)
{
UART0_SendStr(SEND_STRING);
DelayNS(10);
}
} |