分享
分销 收藏 举报 申诉 / 7

类型ARM之间串口通信.doc

  • 上传人:仙人****88
  • 文档编号:8954437
  • 上传时间:2025-03-09
  • 格式:DOC
  • 页数:7
  • 大小:46.54KB
  • 下载积分:10 金币
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    ARM 之间 串口 通信
    资源描述:
    #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折扣优惠下载文档

    提示  咨信网声明:本文档由用户上传并分享,仅供学习交流、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。

    咨信网小贴示:
    1、浏览或下载可查看了解,请点击【咨信网告知】。
    2、下载文件中如有侵权或不适当内容,将立即纠正。
    3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
    4、开具发票登录电脑端申请,请点击【索取发票】。

    咨信网客服组:【微信客服】

    自信AI创作助手
    关于本文
    本文标题:ARM之间串口通信.doc
    链接地址:https://www.zixin.com.cn/doc/8954437.html

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork