这个程序是LPC2210的UART1查询方式发送数据hello word,可是用EASYARM监视到发送的数据全部是FF(为16进制显示).我前前后后的检查,也没发觉不对的地方啊。这个程序有问题吗?请教一下,谢谢
#include "config.h"
/******************************************************************** * 名称:DelayNS() * 功能:长软件延时 * 入口参数:dly 延时参数,值越大,延时越久 * 出口参数:无 ******************************************************************/ void DelayNS(uint32 dly) { uint32 i;
for(; dly>0; dly--) for(i=0; i<5000; i++); }
#define UART_BPS 115200 /* 定义通讯波特率 */
/**************************************************************** * 名称:UART1_Ini() * 功能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波特率为115200 * 入口参数:无 * 出口参数:无 *******************************************************************/ void UART1_Ini(void) { uint16 Fdiv; U1LCR = 0x80; /* 允许访问分频因子寄存器 */ Fdiv = (Fpclk / 16) / UART_BPS; /* 设置波特率 */ U1DLM = Fdiv / 256; U1DLL = Fdiv % 256; U1LCR = 0x03; /* 设置为8,1, */ } /**************************************************************** * 名称:UART0_SendByte() * 功能:向串口发送字节数据,并等待发送完毕。 * 入口参数:data 要发送的数据 * 出口参数:无 *****************************************************************/ void UART1_SendByte(void) { U1THR = data; // 发送数据 while( (U1LSR&0x40)==0 ); // 等待数据发送完毕 }
/***************************************************************** * 名称:UART1_SendStr() * 功能:向串口发送一字符串 * 入口参数:srt 要发送的字符串的指针 * 出口参数:无 *******************************************************************/ void UART1_SendStr(uint8 const *str) { while(1) { if( *str == '\0' ) break; UART1_SendByte(*str++); // 发送数据 } } uint8 const SEND_STR[] = "Hello World!\n"; /******************************************************************** * 名称:main() * 功能:向串口UART0发送字符串"Hello World!" *******************************************************************/ int main(void) { PINSEL0 = (PINSEL0 & 0xfff0ffff) | 0x50000; /*选择管脚为UART1*/ UART1_Ini(); while(1) { UART1_SendStr(SEND_STR); DelayNS(10); } return(0); }
|