📄 main.c
字号:
/****************************************************
*名 称: UART测试文件 *
*功 能: UART串口发送 *
*备 注: 2011.1.9 *
*贞明电子: http://shop58972409.taobao.com *
*****************************************************/
/**************** 头文件调用&&宏定义 ****************/
#include "LPC11xx.h"
#include "UART.h"
#include "stdio.h"
/******************* 全局变量定义 *******************/
extern volatile uint32_t UARTCount;
extern volatile uint8_t UARTBuffer[BUFSIZE];
/********************** 函数声明 ********************/
__inline void delay_ms(uint32_t a);
void AutoBaud(void);
/********************** 主函数 **********************/
int main(void)
{
SystemInit(); //系统初始化,包括使能时钟
UARTInit(); //初始化自动串口
AutoBaud(); //自动识别波特率
while(1)
{
UARTSend("贞明电子:http://shop58972409.taobao.com\r\n",42);
delay_ms(1000);
}
}
/********************** 函数定义 ********************/
/****************************************************
*名 称: 延时函数 *
*参 数: 延时时间 *
*备 注: 内联函数 *
*****************************************************/
__inline void delay_ms(uint32_t a) //1ms延时函数
{
uint32_t i;
while( --a != 0)
{
for(i = 0; i<5500; i++);
}
}
/****************************************************
*名 称: AutoBaud *
*参 数: 延时时间 *
*备 注: 串口波特率自动识别 *
*****************************************************/
void AutoBaud(void)
{
char str[64];
uint32_t baud;
uint32_t dlm, dll;
/* 启动自动波特率测量 */
LPC_UART->ACR = 0x03; // 允许自动波特率
while ((LPC_UART->ACR & 0x01) != 0x0); // 等待自动波特率测量完成
/* 测量结束 */
LPC_UART->ACR |= 0x01 << 8; // 清除自动波特率中断标志
LPC_UART->IER &= ~(0x01 << 8); // 禁止自动波特率中断
NVIC_DisableIRQ(UART_IRQn);
/* 读取除数锁存器和小数波特率发生器的值 */
LPC_UART->LCR = 0x83; // DLAB=1
dlm = LPC_UART->DLM;
dll = LPC_UART->DLL;
LPC_UART->LCR = 0x03;
/* 计算并发送当前波特率 */
baud = ((SystemFrequency/LPC_SYSCON->SYSAHBCLKDIV) / (16 * (256 * dlm + dll)));
sprintf(str, "LPC1114 ZhengMing Hello! Baud is %4d bps \n", baud);
UARTSend(str,45);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -