程序卡了,一个简单的串口程序,菜鸟不入门啊
时间:10-02
整理:3721RD
点击:
用的是ARM7 LPC2400系列的,ads编译,头文件全是复制周立功示例程序里面的
都是按手册,判断是否发送完成,但是停在while((U0LSR & 0x00000040) == 0);了
#include "config.h"
#include "LPC2400.h"
#define UARTBAUD 115200
char snd = 'a';
void delay (int x)
{ int i,j;
for (i=0;i<x;i++)
for(j=0;j<100;j++);
}
void UART_SendByte(char dat)
{
U0THR = dat;
while((U0LSR & 0x00000040) == 0);
}
void UART0_Init(void)
{
uint16 Fdiv = 0;
PCONP |= 1 << 3;
PINSEL0 = (0x01 << 4)|(0x01 << 6);
U0LCR = 0x83;
Fdiv = (Fpclk/16)/UARTBAUD;
U0DLM = Fdiv/256;
U0DLL = Fdiv%256;
U0LCR = 0x03;
U0FCR = 0x81;
}
int main(void)
{
UART0_Init();
while(1)
{
//while((U0LSR & 0x40) == 0);
UART_SendByte(snd);
U0IER |=0x02;
delay(5);
}
return(0);
}
去掉这一句的话,程序虽然能全部运行,但是串口助手没有收到数据,说明U0THR还是没有发送出来。郁闷了都是按手册上来的
都是按手册,判断是否发送完成,但是停在while((U0LSR & 0x00000040) == 0);了
#include "config.h"
#include "LPC2400.h"
#define UARTBAUD 115200
char snd = 'a';
void delay (int x)
{ int i,j;
for (i=0;i<x;i++)
for(j=0;j<100;j++);
}
void UART_SendByte(char dat)
{
U0THR = dat;
while((U0LSR & 0x00000040) == 0);
}
void UART0_Init(void)
{
uint16 Fdiv = 0;
PCONP |= 1 << 3;
PINSEL0 = (0x01 << 4)|(0x01 << 6);
U0LCR = 0x83;
Fdiv = (Fpclk/16)/UARTBAUD;
U0DLM = Fdiv/256;
U0DLL = Fdiv%256;
U0LCR = 0x03;
U0FCR = 0x81;
}
int main(void)
{
UART0_Init();
while(1)
{
//while((U0LSR & 0x40) == 0);
UART_SendByte(snd);
U0IER |=0x02;
delay(5);
}
return(0);
}
去掉这一句的话,程序虽然能全部运行,但是串口助手没有收到数据,说明U0THR还是没有发送出来。郁闷了都是按手册上来的
找些资料参考下就会明白了
弄串口弄了好几天了,还是不明白,连示例程序的返回显示波特率也没有出来,我觉得错在同个地方了