程序卡了,一个简单的串口程序,菜鸟不入门啊

2019-07-16 10:14发布

用的是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还是没有发送出来。。。。郁闷了都是按手册上来的
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
200662105
1楼-- · 2019-07-16 10:53
 精彩回答 2  元偷偷看……
嗷呜嗷呜
2楼-- · 2019-07-16 14:28
200662105 发表于 2013-4-18 12:15
找些资料参考下就会明白了

弄串口弄了好几天了,还是不明白,连示例程序的返回显示波特率也没有出来,我觉得错在同个地方了

一周热门 更多>