3700|1

67

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

4【学习LPC1768库函数】之串口实验 [复制链接]

本帖最后由 cxmdz 于 2019-7-30 10:28 编辑

LPC1768有四个串口可以使用,本章用串口0和串口2作为实验,其中串口0配置发送和中断接收。
 

/************************************************************************************************
** 函数名: void UARTInit( uint32_t PortNum, uint32_t baudrate)
** 函数功能:串口初始化程序
** 输入参数: UARTNum 选择串口号,baudrate串口波特率大小
** 输出参数 :无
** 返回值:无
*************************************************************************************************/
void UARTInit( uint32_t UARTNum, uint32_t baudrate)
{


if ( UARTNum == 0 )
{
//第一步 设置P0.2 P0.3为串口功能
Chip_IOCON_PinMux(LPC_IOCON, 0, 2, IOCON_MODE_INACT, IOCON_FUNC1);//设置P0.2为串口功能管脚
Chip_IOCON_PinMux(LPC_IOCON, 0, 3, IOCON_MODE_INACT, IOCON_FUNC1);        //设置P0.3为串口功能管脚
//第二步 初始化串口0
Chip_UART_Init(LPC_UART0);//初始化串口0
//第三步 //设置波特率
Chip_UART_SetBaud(LPC_UART0, baudrate);//设置波特率
//第四步 //8 bits, 无校验, 1 个停止位 
Chip_UART_ConfigData(LPC_UART0, UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS);// 8 bits, 无校验, 1 个停止位 
//第五步 //使能发送
Chip_UART_TXEnable(LPC_UART0);//使能发送
//第六步 //使能接收中断
Chip_UART_IntEnable(LPC_UART0,UART_IIR_INTSTAT_PEND);//使能接收中断
//第七步 ////使能串口0中断
NVIC_EnableIRQ(UART0_IRQn);//使能中断
}
else if ( UARTNum == 2 )
{

Chip_IOCON_PinMux(LPC_IOCON, 0, 10, IOCON_MODE_INACT, IOCON_FUNC1);//设置P0.10为串口功能管脚
Chip_IOCON_PinMux(LPC_IOCON, 0, 11, IOCON_MODE_INACT, IOCON_FUNC1);        //设置P0.11为串口功能管脚        
Chip_UART_Init(LPC_UART2);//初始化串口2
Chip_UART_SetBaud(LPC_UART2, baudrate);//设置波特率
Chip_UART_ConfigData(LPC_UART2, UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS); // 8 bits, 无校验, 1 个停止位 
Chip_UART_TXEnable(LPC_UART2);//使能发送



}
}


/************************************************************************************************
** 函数名:void UART0_SendByte (int ucData)
** 函数功能:串口0发送字节程序
** 输入参数:ucData 一个字节数据
** 输出参数 :无
** 返回值:无
*************************************************************************************************/
void UART0_SendByte (uint8_t ucData)
{
  //判断发送线是否有数据,没有数据,则可以发送。有数据,等待
while (!(Chip_UART_ReadLineStatus(LPC_UART0) & UART_LSR_THRE)); /*读bit5 0 为有数据,1 为发送完成*/
Chip_UART_SendByte(LPC_UART0,ucData);
}


/************************************************************************************************
** 函数名: int UART0_GetChar (void) 
** 函数功能:串口0接收字节数据
** 输入参数:无
** 输出参数 :无
** 返回值:一个字节数据
*************************************************************************************************/
int UART0_GetChar (void) 
{
  //判断接收线是否有数据,没有数据,则等待。有数据,则读出
while (!(Chip_UART_ReadLineStatus(LPC_UART0) & UART_LSR_RDR)); /*读bit0 0 为空,1 为接收到数据*/
return Chip_UART_ReadByte(LPC_UART0);        
}
/************************************************************************************************
** 函数名:void UART0_IRQHandler(void)
** 函数功能:串口0中断服务函数
** 输入参数:无
** 输出参数 :无
** 返回值:无
*************************************************************************************************/
void UART0_IRQHandler(void)
{
         //判断中断接收标志,读取该位,中断标志自动清零
        if(((Chip_UART_ReadIntIDReg(LPC_UART0)>>2&0x01)))
   
                                                                                                          
        buffer[num]=UART0_GetChar();             
                                num++;
                                rxd_flag=1;
           
                        
                
}

【04】LPC1768_串口实验.rar (248.61 KB, 下载次数: 24)



此内容由EEWORLD论坛网友cxmdz原创,如需转载或用于商业用途需征得作者同意并注明出处

此帖出自NXP MCU论坛

最新回复

PJB
谢谢共享,学习了   详情 回复 发表于 2019-11-12 13:00
点赞 关注
 

回复
举报

7

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

谢谢共享,学习了

此帖出自NXP MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表