收藏 分销(赏)

ARM之间串口通信.doc

上传人:仙人****88 文档编号:8954437 上传时间:2025-03-09 格式:DOC 页数:7 大小:46.54KB
下载 相关 举报
ARM之间串口通信.doc_第1页
第1页 / 共7页
ARM之间串口通信.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述
#include "..\config.h" #define UART_BPS 38400 /* 串口通信波特率 */ INT8U const send[]="0xfd 0x0a 0x00 0x01 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09\r\n"; /********************************************************************************************************* ** Function name: delayNS ** Descriptions: 延时函数 ** input parameters: ulDly: 延时值 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void delayNS (INT32U ulDly) { INT32U i; for (; ulDly > 0; ulDly--) { for (i = 0; i < 5000; i++); } } /********************************************************************************************************* ** Function name: uartInit ** Descriptions: 串口初始化,设置为8位数据位,1位停止位,无奇偶校验,波特率为115200 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void uart0Init (void) { INT16U usFdiv; U0LCR = 0x83; /* 允许设置波特率 */ usFdiv = (FPCLK / 16) / UART_BPS; /* 设置波特率 */ U0DLM = usFdiv / 256; U0DLL = usFdiv % 256; U0LCR = 0x03; /* 锁定波特率 */ U0FCR = 0x06; } /********************************************************************************************************* ** Function name: uart0GetByte ** Descriptions: 从串口接收1字节数据,使用查询方式接收 ** input parameters: 无 ** output parameters: 无 ** Returned value: ucRcvData: 接收到的数据 *********************************************************************************************************/ INT8U uart0GetByte (void) { INT8U ucRcvData; while ((U0LSR & 0x01) == 0); /* 等待接收标志置位 */ ucRcvData = U0RBR; /* 读取数据 */ return (ucRcvData); } /********************************************************************************************************* ** Function name: uart0GetStr ** Descriptions: 串口接收字符串 ** input parameters: puiStr: 指向接收数据数组的指针 ** ulNum: 接收数据的个数 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void uart0GetStr (INT8U *puiStr, INT32U ulNum) { for (; ulNum > 0; ulNum--) { *puiStr++ = uart0GetByte (); } } /********************************************************************************************************* ** Function name: uart0SendByte ** Descriptions: 向串口发送子节数据,并等待数据发送完成,使用查询方式 ** input parameters: ucDat: 要发送的数据 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void uart0SendByte (INT8U ucDat) { U0THR = ucDat; /* 写入数据 */ while ((U0LSR & 0x40) == 0); /* 等待数据发送完毕 */ } /********************************************************************************************************* ** Function name: uart0SendStr ** Descriptions: 向串口发送字符串 ** input parameters: puiStr: 要发送的字符串指针 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void uart0SendStr (INT8U const *puiStr) { while (1) { if (*puiStr == '\0') { break; /* 遇到结束符,退出 */ } uart0SendByte (*puiStr++); } } /********************************************************************************************************* ** Function name: uartInit ** Descriptions: 串口初始化,设置为8位数据位,1位停止位,无奇偶校验,波特率为9600 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void uartInit (void) { INT16U usFdiv; U1LCR = 0x83; /* 允许设置波特率 */ usFdiv = (FPCLK / 16) / UART_BPS; /* 设置波特率 */ U1DLM = usFdiv / 256; U1DLL = usFdiv % 256; U1LCR = 0x03; /* 锁定波特率 */ U1FCR = 0x06; } /********************************************************************************************************* ** Function name: uart1GetByte ** Descriptions: 从串口接收1字节数据,使用查询方式接收 ** input parameters: 无 ** output parameters: 无 ** Returned value: ucRcvData: 接收到的数据 *********************************************************************************************************/ INT8U uart1GetByte (void) { INT8U ucRcvData; while ((U1LSR & 0x01) == 0); /* 等待接收标志置位 */ ucRcvData = U1RBR; /* 读取数据 */ return (ucRcvData); } /********************************************************************************************************* ** Function name: uart1GetStr ** Descriptions: 串口接收字符串 ** input parameters: pucStr: 指向接收数据数组的指针 ** ulNum: 接收数据的个数 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void uart1GetStr (INT8U *pucStr, INT32U ulNum) { for (; ulNum > 0; ulNum--){ *pucStr++ = uart1GetByte (); } } /********************************************************************************************************* ** Function name: uart1SendByte ** Descriptions: 向串口发送子节数据,并等待数据发送完成,使用查询方式 ** input parameters: ucDat: 要发送的数据 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void uart1SendByte (INT8U ucDat) { U1THR = ucDat; /* 写入数据 */ while ((U1LSR & 0x40) == 0); /* 等待数据发送完毕 */ } /********************************************************************************************************* ** Function name: uart1SendStr ** Descriptions: 向串口发送字符串 ** input parameters: puiStr: 要发送的字符串指针 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void uart1SendStr (INT8U const *pucStr) { while (1){ if (*pucStr == '\0') break; /* 遇到结束符,退出 */ uart1SendByte (*pucStr++); } } /********************************************************************************************************* ** Function name: main ** Descriptions: 串口查询方式接收发送数据。请用跳线冒短接JP14,全速运行程序用串口调试软件发送字 ** 符串,并在接收窗口查看返回数据,波特率为115200,上位机一次需要发送20个字符。 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ int main (void) { INT8U ucBuf[30] = {0}; targetInit(); /* 初始化目标板,切勿删除 */ pinInit(); /* 引脚初始化 */ PCONP = PCONP|0x18; /* 打开串口0,1功能 */ uart0Init (); /* 串口初始化 */ uartInit (); while (1) { uart1GetStr(ucBuf, 1); /* 从串口接收字符串 */ delayNS(5); uart0SendStr (ucBuf); /* 向串口发送字符串 */ delayNS(5); uart0GetStr(ucBuf, 1); /* 从串口接收字符串 */ delayNS(5); uart1SendStr (ucBuf); /* 向串口发送字符串 */ delayNS(5); } }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服