LPC11xx系列芯片增加串口打印信息

一 串口配置

Uart.c

#include <stdio.h>
#include "lpc11xx.h"

#pragma import(__use_no_semihosting)

struct __FILE 
{ 
    int handle; 

};
FILE __stdout; 

//改写了fputc,因为printf函数会调用fputc函数,在fputc函数中将字符输出到串口。
int fputc(int ch, FILE *f)
{
    LPC_UART->THR = ch;
    while((LPC_UART->LSR&0x40)==0);    
    return 0;
}

/************************************************/
/* 函数功能:初始化UART口                       */
/************************************************/
void uartInit(u32 baudrate)
{
    u32 DL_value,Clear=Clear;   // (用这种方式定义变量解决编译器的Warning)                       

    LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON时钟 
    LPC_IOCON->PIO1_6 &= ~0x07;    
    LPC_IOCON->PIO1_6 |= 0x01; //把P1.6脚设置为RXD
    LPC_IOCON->PIO1_7 &= ~0x07; 
    LPC_IOCON->PIO1_7 |= 0x01; //把P1.7脚设置为TXD
    LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON时钟

    LPC_SYSCON->UARTCLKDIV = 0x1;    //时钟分频值为1
    LPC_SYSCON->SYSAHBCLKCTRL |= (1<<12);//允许UART时钟
    LPC_UART->LCR = 0x83;   //8位传输,1个停止位,无几偶校验,允许访问除数锁存器
    DL_value = (SystemCoreClock/LPC_SYSCON->UARTCLKDIV/16)/baudrate ;  //计算该波特率要求的除数锁存寄存器值
    LPC_UART->DLM = DL_value / 256;      //写除数锁存器高位值 
    LPC_UART->DLL = DL_value % 256;     //写除数锁存器低位值
    LPC_UART->LCR = 0x03;    //DLAB置0
    LPC_UART->FCR = 0x07;    //允许FIFO,清空RxFIFO 和 TxFIFO
    Clear = LPC_UART->LSR;   //读UART状态寄存器将清空残留状态
}

二 增加LogCat宏定义

在lpc11xx.h文件中增加LogCat宏定义,然后就可以为所欲为的使用LogCat进行打印了。可以在工程的配置中增加一个CODE_DEBUG宏,这样就可以轻松的开关log了。

lpc11xx.h

#ifdef CODE_DEBUG
#define LogCat(format,...) printf("Line: %d: "format"\n", __LINE__, ##__VA_ARGS__) 
#else
#define LogCat(format,...) 
#endif

.......

三 使用案例

main.c

void main()
{
    .....
   uartInit(115200); 
   .....
   
   LogCat("打印信息");
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值