×
单片机 > 单片机程序设计 > 详情

LCP2131例程 UART0查询法

发布时间:2020-09-03 发布时间:
|
#include "config.h"

void DelayNS(uint32 dly)
{
    uint32 i;

    for(; dly > 0; dly--)
        for(i = 0; i  }

#define UART_BPS 115200

void UART0_Init(void)
{
    uint16 Fdiv;

    U0LCR = 0x83; //决定发送和接收的数据字符格式, 0x1000 0011 8位字符长度,1个停止位,禁止奇偶校验

    Fdiv = (Fpclk / 16) / UART_BPS;
    U0DLM = Fdiv /256;
    U0DLL = Fdiv % 256;
    U0LCR = 0x03; //设制好波特率后,再关闭不让设制。

}

uint8 UART0_GetByte(void)
{
    uint8 rcv_dat;

    while((U0LSR & 0x01) == 0);//U0LSR 线状态寄存器,提供UART Rx,Tx模块的状态信息;这里是判断是否接收数据就绪。

    rcv_dat = U0RBR;//接收缓存寄存器


    return(rcv_dat);
}

void UART0_GetStr(uint8 *s,uint32 n)
{
    for(;n > 0;n --)
    {
        *s++ = UART0_GetByte();
    }
}

void UART0_SendByte(uint8 dat)
{
    U0THR = dat; //U0THR 发送保持寄存器

    while((U0LSR & 0x40) == 0); //发送器空,等U0THR为空。也就是等它发送完成。

}

void UART0_SendStr(uint8 const *str)
{
    while(1)
    {
        if(*str == ') break;
        UART0_SendByte(*str++);
    }
}


int main()
{
    uint8 snd[32];
    PINSEL0 = 0x00000005;
    UART0_Init();

    while(1)
    {
    UART0_GetStr(snd,18);
    DelayNS(10);
    UART0_SendStr(snd);
    DelayNS(10);
    }
    
    return 0;
}


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何升级STM32单片机的代码