微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 程序卡了,一个简单的串口程序,菜鸟不入门啊

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

时间: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还是没有发送出来。郁闷了都是按手册上来的

找些资料参考下就会明白了

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top