纠错:U0DBUF发送缓冲区,但是我在中文手册手册上没有找的到这个寄存器,手册上只有U0BUF,U0BUF编译会出错,
我去查了下英文手册,才发现原来是翻译人员翻译错误了,只有U0DBUF,建议看英文手册。

串口通信:
P_2 接收端 P_3发送端(单片机和电脑的电频不同,通过PL2303转换,这是针对zigbee模块的
,想51单片机可以通过232,485来转换)。
TTL 输出:低电平小于0.8,高电平大于2.4 。TTL 输入:低电平小于1.2,高电平大于2

P_2和P_3可以复用到串口,也可以复用到SPI

#include <string.h>
void *memcpy(void *, const void *, size_t);//复制函数
void *memset(void *, int, size_t);//设置函数,注意是传递的指针,这些很基础,是C语言库里面的函数接口,自己下个C语言完全手册看 
int memcmp(const void *, const void *, size_t);

CLKCONCMD &= ~0x40;               //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40);          //等待晶振稳定为32M
CLKCONCMD &= ~0x47;               //设置系统主时钟频率为32MHZ

void UartSendString(char *Data, int len)//串口发送函数Data:发送缓冲区   len:发送长度
{
    uint i;
    
    for(i=0; i<len; i++)
    {
        U0DBUF = *Data++;//我猜测U0DBUF发送缓冲区,但是我在手册上没有找的到这个寄存器,手册上只有U0BUF
        while(UTX0IF == 0);
        UTX0IF = 0;//发送完后UTX0IF自动设置成1
    }
}

void InitUart(void)

    PERCFG = 0x00;           //外设控制寄存器 USART 0的IO位置:0为P0口位置1 
    P0SEL = 0x0c;            //P0_2,P0_3用作串口(外设功能)
    P2DIR &= ~0XC0;          //P0优先作为UART0
    
    U0CSR |= 0x80;           //设置为UART方式
    U0GCR |= 11; //1011 有       
    U0BAUD |= 216;           //波特率设为115200
    UTX0IF = 0;              //UART0 TX中断标志初始置位0
U0CSR |= 0x40;           //允许接收 
    IEN0 |= 0x84;            //开总中断允许接收中断 
}

#pragma vector = URX0_VECTOR 
__interrupt void UART0_ISR(void) 

    URX0IF = 0;       // 接受中断标志 清中断标志 
    RxBuf = U0DBUF;    //我猜测应该还有个发送中断,发送完了应该也可以中断                       
}
 U0CSR &= ~0x40;                    //禁止接收 发送的时候必须把这个禁止了
 U0CSR |= 0x40;                     //允许接收 
 
用到的寄存器如下:
U0CSR 寄存器
Bit[7] USART模式选择 0:SPI模式 1:UART模式 
Bit[6]  UART接收器使能 0: 禁用接收器 1: 接收器使能 
Bit[5] SP 主或者从模式选择 0: SPI 主模式 1: SPI 从模式 
Bit[4] UART 帧错误状态 0: 无帧错误检测 1: 字节收到不正确停止位级别 
Bit[3] UART 奇偶错误状态 0: 无奇偶错误检测 1: 字节收到奇偶错误 
Bit[2]  接收字节状态 0: 没有收到字节 1: 准备好接收字节 
Bit[1] 传送字节状态 0 字节没有被传送 1 写到数据缓存寄存器的最后字节被传送 
Bit[0] USART 传送/接收主动状态、在 SPI 从模式该位等于从模式选择 0: USART 空闲 1: 在传送或者接收模式USART 忙碌

P2DIR (0xFF) – 端口 2 方向和端口 0 外设优先级控制
[7:6]外设优先级控制。当 PERCFG 分配给一些外设 到 相同引脚的时候,这些位将确定优先级。
详细优先级列表:
00:第1优先级:USART0第2优先级:USART1 第3优先级:定时器 1
01:第1优先级:USART1第2优先级:USART0 第3优先级:定时器 1
10:第1优先级:定时器1通道0-1第2优先级:USART1第3优先级:USART0第4优先级:定时器 1 通道 2 – 3
11 :第 1 优先级:定时器1通道 2-3第2优先级:USART0第3优先级:USART1第4优先级:定时器 1 通道 0 – 1
[5]  不使用
[4:0] P2 . 4 到 P2 . 0 的 I/O 方向 0 : 输入 1 : 输出

PERCFG (0xF1) – 外设控制
[7]  没有使用
[6]定 时器1的I/O位置0 :备用 位置 1 1 :备用 位置 2
[5]定 时器3的I/O位置0 :备用 位置 1 1 :备用 位置 2
[4]定 时器4的I/O位置0 :备用 位置 1 1 :备用 位置 2
[3:2] 没有使用
[1]USART1的I/O位置0备用位置1 1:备用位置2
[0]USART0的I/O位置0备用位置1 1:备用位置2

U0GCR (0xC5) – USART 0 通用控制
位 名称 复位 描述
[7]SPI 的时钟极性0:负时钟极性 1:正时钟极性
[6]SPI 时钟相位0:当SCK从CPOL倒置到CPOL时数据输出到MOSI,并且当SCK从CPOL倒置到 
CPOL 时数据输入抽样到 MISO 。1:当SCK从CPOL倒置到CPOL时数据输出到 MOSI 并且当 
SCK 从 CPO L倒置到 CPOL 时数据输入抽样到 MISO 。
[5] 传送位顺序 0 : LSB 先传送 1 : MSB 先传送
[4:0] BAUD_E[4:0] 波特率指数值。 BAUD_E 和 BAUD_M 决定了 UART 波特率 和 SPI 的主 SCK 时
钟频率。

U0BAUD (0xC2) – USART 0 波特率控制
[7:0]BAUD_M[7:0]波特率小数部分的值。BAUD_E和BAUD_M决定了UART的波特率和SPI的主SCK时钟频率。
注意:BAUD_E[4:0]和BAUD_M[7:0]决定波特率
表 16-1 32 MHz 系统时钟常用的波特率设置
波特率 ( b ps) UxBAUD.BAUD_M UxGCR.BAUD_E   误差 ( % )
2400                59          6             0.14
4800                59          7             0.14
9600                59         8 0.14
14400              216     8 0.03
19200              59 9 0.14
28800 216 9 0.03
38400 59 10 0.14
57600 216 10 0.03
76800 59 11 0.14
115200 216 11 0.03
230400 216 12 0.03

zigbee学习之串口通信相关推荐

  1. vivado学习第二 串口通信之奇偶校验位

    vivado学习第二 串口通信之奇偶校验位 奇偶校验位  奇偶校验位分为奇数校验位和偶数校验位,奇数和偶数的判断标准是依据发送一串或者一帧数据中"1"的个数.  奇数校验:发送的数 ...

  2. STM8学习笔记---串口通信中如何自己定义通信协议

    在单片机刚开始学习的时候,串口通信是经常要用到的,但是实际产品中串口通信是需要通信协议的.好多人不明白为什么要用通信协议,如何定义通信协议,带通信协议的程序要怎么写.今天就来说一下如何串口通信协议是如 ...

  3. 蓝桥杯模块学习10——串口通信(深夜学习——单片机)

    一.什么是串口通信? 51单片机--串口通信详解(STC89C51为例)_佛科院深夜学习的博客-CSDN博客 二.IAP15F2K60S2与STC89系列的区别: 1.16位自动重装载模式下波特率的计 ...

  4. wemos学习之串口通信和ESP8266wifi模块的调用

    1.ESP8266的应用模式:ESP266支撑单AP模式.单STA模式和混合模式.简单的来说就是: AP:可以将ESP8266作为热点,可以让其他的设备连接上它: STA:可以连接上当前环境下的WIF ...

  5. HAL库学习之串口通信

    目录 一.串口通讯协议简介 一.物理层 1.电平标准 二.协议层 1.波特率 2.通讯的启示和停止信号 3.数据校验 三.STM32的串口简介 四.软件实现 1.通过图形化软件CubeMX配置 2.程 ...

  6. 单片机学习笔记 —— 串口通信原理

    一.串口通信电路 电路图: 说明:当RXD TXD为低电平时,对应的led灯会亮起 二.串口通信控制寄存器 下图为80C51串行口的结构: SCON(serial Control Register): ...

  7. 【嵌入式学习-STM32F103-USART串口通信】

    目录 1.串口通信协议(简介+软硬件规则) 2.STM32内部的USART外设 3.USART基本结构(江科大简化) 4.串口发送代码 4-1 基本流程 4-2 整体代码 4-2-1 main.c 4 ...

  8. STM32学习——UART串口通信学习

    1.UART简介 UART(Universal Asyvhronous Receiver Transmitter)统称为通用异步收发器,是一种通用的串行.异步通信总线,有两条数据线,可以实现全双工的发 ...

  9. c++学习 | MFC —— 串口通信(四)发送数据

    文章目录 一.写串口函数 1.源函数 2.API 函数详解 (1)ClearCommError()函数--读取串行端口现在的状态 (2)PurgeComm()函数--清空缓冲区 (3)WriteFil ...

  10. STM32F103ZET6学习记录-串口通信部分

         开发板原理图 本次实验使用的串口是USART1串口,而它的读写管脚挂接在GPIOA的9.10脚上.如下图 2.   准备工作(此次实验根据上一次的PWM的程序进行改造得来) 串口的使用对于单 ...

最新文章

  1. GitHub超全机器学习工程师成长路线图,开源两日收获3700+Star!
  2. lLinux 下 Stress 压力测试工具
  3. 如何添加java环境变量_如何配置java环境变量
  4. 2030年,逾1亿中国人需要学习新技能并转换岗位,这就是摩擦性失业
  5. 计算机应用技术教程的答案,计算机应用技术教程第3章办公自动化答案
  6. SystemVerilog——任务和函数(Tasks and Functions)[转]
  7. [蓝桥杯][2014年第五届真题]生物芯片(数论)
  8. 心痛!你的快递可能已经被烧毁,13吨快递“无一生还”
  9. 为防范“手机低头族”出交通事故 韩国开发行人警示系统
  10. 下载电子书,给电子书添加总目录页面
  11. 2021-2025年中国灯光调光开关行业市场供需与战略研究报告
  12. C语言项目实战之简单的文本编辑器
  13. mysql有关时间教程_MySQL教程21-日期和时间类型
  14. 引用 中国计算机学术权威期刊
  15. hdu5773The All-purpose Zero
  16. Docker搭建ElasticSearch
  17. R语言绘制中国地图:着色省份、标注省份名称
  18. 个性化品牌开始繁荣?为设计师和代工厂牵线的平台Maker's Row获得100万美元融资 | 36氪...
  19. 起用 RabbitMQ (二)
  20. 方差与偏差的意义与推导过程

热门文章

  1. hget和get redis_redis get hget 区别
  2. 组策略禁止自动锁定计算机,让Win10自动锁屏的设置技巧
  3. C++高阶 每个对象都有一个this指针
  4. java 读取 excel 科学计数
  5. 电子科技大学生物信息学 重点
  6. 什么是java全栈工程师
  7. 神经网络应用论文题目,神经网络应用论文选题
  8. Python实现求矩阵的伴随矩阵
  9. Mac下phpstorm 浏览器出现 502 bad gateway 解决办法
  10. 【eos系列】智能合约 私链激活 基本操作