嵌入式学习——串口通信小试

目录

  • 嵌入式学习——串口通信小试
    • 1.了解串口协议和RS-232、485标准,以及RS-232、485电平与TTL电平的区别
      • 1.1 什么是串口协议
      • 1.2 RS-232标准
      • 1.3 RS-485标准
      • 1.4 RS-232、RS-485电平与TTL电平的区别:
    • 2. USB转串口CH340接线
    • 3. 完成一个STM32的USART串口通讯程序(查询方式即可)
      • 3.1 题目要求
      • 3.2 所需器件
      • 3.3 使用HAL库进行串口通信程序编写
        • 3.3.1 配置工程文件
        • 3.3.2调试并烧录
      • 3.4 使用MDK汇编语言进行串口通信程序编写
        • 3.4.1 创建工程
        • 3.4.2 写入程序
    • 4.keil观察管脚的时序波形

1.了解串口协议和RS-232、485标准,以及RS-232、485电平与TTL电平的区别

1.1 什么是串口协议

串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范

通信接口背景知识
设备之间通信的方式:
一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。它们的区别是:

串行通信的分类
1、按照数据传送方向,分为:

单工:数据传输只支持数据在一个方向上传输;
半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。
全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。

2、按照通信方式,分为:

同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口。
异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线。

在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。

在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。

在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大。
常见的串行通信接口:

1.2 RS-232标准

简介:

RS-232接口是电子工业协会(Electronic Industries Association,EIA) 制定的异步传输标准接口,同时对应着电平标准和通信协议(时序),其电平标准是采用负逻辑传送,即:+3V~+15V对应0,-3V~-15V对应1。

STM32的串口通信接口有两种,分别是:UART(通用异步收发器)USART(通用同步异步收发器)。而对于大容量STM32F10x系列芯片,分别有3个USART和2个UART。

UART引脚连接方法
RXD:数据输入引脚,数据接受;
TXD:数据发送引脚,数据发送。

若是芯片与PC机(或上位机)相连,除了共地之外,就不能这样直接交叉连接了。

尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。

RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。故,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成rs232类型,再交叉连接。如图:

RS-232通讯协议标准串口的设备间通讯结构图如下:

因此,单片机串口与PC串口通信遵循下面的连接方式:
在单片机串口与上位机给出的rs232口之间,通过电平转换电路,实现TTL电平与RS232电平之间的转换。

1.3 RS-485标准

简介:

RS-485标准专门弥补RS-232通讯距离短、速率低等缺点而产生。RS-485标准只规定了平衡发送器和接收器的特性。而没有规定接插件、传输电缆和应用层通讯协议。

RS-485有两线制和四线制两种接线,四线制只能实现点对点的通讯方式,现很少采用,多采用两线制接线方式。这种接线方式为总线式拓朴结构在同一总线上最多可以挂线32–128个结点。

在RS-485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。通讯协议采用按照设备地址查询的方式,其通讯的效率很低,不适合高速传输系统。一般速率不超过19200bps。波特率为9600Bps、1200Bps。RS-485标准的最大传输距离约为1219米,最大传输速率为10Mbps。

RS-485 的电气特性:

逻辑“1”以两线间的电压差为+(2—6) V 表示;

逻辑“0”以两线间的电压差为 -(2—6)V 表示;

接口信号电平比 RS -232-C 降低了,就不易损坏接口电路的芯片,且该电平与 TTL 电平兼容,可方便与 TTL 电路连接。

RS-485优点:

RS-485 接口的最大传输距离标准值为 4000 英尺,实际上可达 3000 米。

RS-485 接口在总线上是允许连接多达 128 个收发器,因 RS-485 接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。

RS-485传输线路:

因为 RS485 接口组成的半双工网络 ,一般只需二根连线,所以 RS485 接口均采用屏蔽双绞线传输。

1.4 RS-232、RS-485电平与TTL电平的区别:

RS-232逻辑电平:

逻辑“1”以两线间的电压差为-(3—15)V表示;

逻辑“0”以两线间的电压差为+(3—15)V表示;

RS-485逻辑电平:

逻辑“1”以两线间的电压差为+(2—6) V 表示;

逻辑“0”以两线间的电压差为 -(2—6)V 表示;

TTL逻辑电平:

逻辑“1”以两线间的电压差为+5 V 表示;

逻辑“0”以两线间的电压差为 0 V 表示;

2. USB转串口CH340接线

USB转串口模块可以使用5V、3V3电压供电,需要将跳线帽进行安装 (将5V和VCC盖住或者将3.3V与VCC盖住)。

由电脑USB通过板载稳压芯片供电,最大700mA。

测试USB转串口模块工作是否正常的步骤:

可以对USB转串口模块进行测试,将USB的电压引脚用跳帽接上,然后将RXD和TXD两个引脚用跳帽或者杜邦线接上。

然后打开串口终端,点击“手动发送”或者“自动发送”,如果在接收区可以接收到数据,说明USB转串口模块工作正常,否则需要检查接线是否正确、电路板元器件是否损坏。

USB转串口电路板与单片机的接线图,VCC接线是为了单片机供电,USB转串口的RXD引脚与单片机的TXD引脚相连,USB转串口的TXD引脚与单片机的RXD引脚相连,两者的GND引脚直接相连。如图:

3. 完成一个STM32的USART串口通讯程序(查询方式即可)

3.1 题目要求

完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求:
1)设置波特率为115200,1位停止位,无校验位;
2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。

3.2 所需器件

STM32F103C8T6最小核心板

USB转TTL

CH340驱动(USB串口驱动)_XP_WIN7共用 (如果串口调试助手能够检测到端口就不需要这个驱动,如有需要请参考次博客:【嵌入式09】STM32串口通信,发送Hello Windows示例)

串口调试助手

链接:https://pan.baidu.com/s/1WyvtnCJad_BqXbwTzhcofw

提取码:h2xc

3.3 使用HAL库进行串口通信程序编写

3.3.1 配置工程文件

下载STM32CubeX以及新建工程步骤请看参考次博客:https://blog.csdn.net/qq_66144143/article/details/127309228?spm=1001.2014.3001.5501

这里是本次学习所需改变的配置:

选择时钟:外部时钟源(Crystal/Ceramaic Resonator)

再点击connectivity,然后选择USART2(通用同步异步收发器),再选择Asynchronous

然后进行时钟设置:

然后按照刚刚发的参考博客,设置好之后再点开keil文件即可。

3.3.2调试并烧录

然后在打开的keil文件里面打开main.c文件,找到while循坏,把下面的代码复制进去:

   char data[]="hello windows!\n";HAL_UART_Transmit(&huart2, (uint8_t *)data, 15, 0xffff);//高电平点亮A12HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);HAL_Delay(100);//低电平熄灭A12HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);HAL_Delay(900);

如图:

然后就可以进行调试了,调试成功之后就可以烧录了,需要注意的是这里我们使用的是USART2接口,查询STM32F103C8T6的引脚图可知,USART2对应的RXD和TXD为PA2和PA3接口,进行串口调试的时候,需要把烧录的时候连接PA10和PA9的接口改为连接PA2和PA3接口。引脚图:

烧录HEX文件:

串口调试助手效果:

3.4 使用MDK汇编语言进行串口通信程序编写

3.4.1 创建工程

配置请参考博客:https://blog.csdn.net/qq_66144143/article/details/127199953

3.4.2 写入程序

复制下面的汇编语言:

;RCC寄存器地址映像
RCC_BASE            EQU    0x40021000
RCC_CR              EQU    (RCC_BASE + 0x00)
RCC_CFGR            EQU    (RCC_BASE + 0x04)
RCC_CIR             EQU    (RCC_BASE + 0x08)
RCC_APB2RSTR        EQU    (RCC_BASE + 0x0C)
RCC_APB1RSTR        EQU    (RCC_BASE + 0x10)
RCC_AHBENR          EQU    (RCC_BASE + 0x14)
RCC_APB2ENR         EQU    (RCC_BASE + 0x18)
RCC_APB1ENR         EQU    (RCC_BASE + 0x1C)
RCC_BDCR            EQU    (RCC_BASE + 0x20)
RCC_CSR             EQU    (RCC_BASE + 0x24) ;AFIO寄存器地址映像
AFIO_BASE           EQU    0x40010000
AFIO_EVCR           EQU    (AFIO_BASE + 0x00)
AFIO_MAPR           EQU    (AFIO_BASE + 0x04)
AFIO_EXTICR1        EQU    (AFIO_BASE + 0x08)
AFIO_EXTICR2        EQU    (AFIO_BASE + 0x0C)
AFIO_EXTICR3        EQU    (AFIO_BASE + 0x10)
AFIO_EXTICR4        EQU    (AFIO_BASE + 0x14) ;GPIOA寄存器地址映像
GPIOA_BASE          EQU    0x40010800
GPIOA_CRL           EQU    (GPIOA_BASE + 0x00)
GPIOA_CRH           EQU    (GPIOA_BASE + 0x04)
GPIOA_IDR           EQU    (GPIOA_BASE + 0x08)
GPIOA_ODR           EQU    (GPIOA_BASE + 0x0C)
GPIOA_BSRR          EQU    (GPIOA_BASE + 0x10)
GPIOA_BRR           EQU    (GPIOA_BASE + 0x14)
GPIOA_LCKR          EQU    (GPIOA_BASE + 0x18) ;GPIO C口控制
GPIOC_BASE          EQU    0x40011000
GPIOC_CRL           EQU    (GPIOC_BASE + 0x00)
GPIOC_CRH           EQU    (GPIOC_BASE + 0x04)
GPIOC_IDR           EQU    (GPIOC_BASE + 0x08)
GPIOC_ODR           EQU    (GPIOC_BASE + 0x0C)
GPIOC_BSRR          EQU    (GPIOC_BASE + 0x10)
GPIOC_BRR           EQU    (GPIOC_BASE + 0x14)
GPIOC_LCKR          EQU    (GPIOC_BASE + 0x18) ;串口1控制
USART1_BASE         EQU    0x40013800
USART1_SR           EQU    (USART1_BASE + 0x00)
USART1_DR           EQU    (USART1_BASE + 0x04)
USART1_BRR          EQU    (USART1_BASE + 0x08)
USART1_CR1          EQU    (USART1_BASE + 0x0c)
USART1_CR2          EQU    (USART1_BASE + 0x10)
USART1_CR3          EQU    (USART1_BASE + 0x14)
USART1_GTPR         EQU    (USART1_BASE + 0x18) ;NVIC寄存器地址
NVIC_BASE           EQU    0xE000E000
NVIC_SETEN          EQU    (NVIC_BASE + 0x0010)
;SETENA寄存器阵列的起始地址
NVIC_IRQPRI         EQU    (NVIC_BASE + 0x0400)
;中断优先级寄存器阵列的起始地址
NVIC_VECTTBL        EQU    (NVIC_BASE + 0x0D08)
;向量表偏移寄存器的地址
NVIC_AIRCR          EQU    (NVIC_BASE + 0x0D0C)
;应用程序中断及复位控制寄存器的地址
SETENA0             EQU    0xE000E100
SETENA1             EQU    0xE000E104 ;SysTick寄存器地址
SysTick_BASE        EQU    0xE000E010
SYSTICKCSR          EQU    (SysTick_BASE + 0x00)
SYSTICKRVR          EQU    (SysTick_BASE + 0x04) ;FLASH缓冲寄存器地址映像
FLASH_ACR           EQU    0x40022000 ;SCB_BASE           EQU    (SCS_BASE + 0x0D00) MSP_TOP             EQU    0x20005000
;主堆栈起始值
PSP_TOP             EQU    0x20004E00
;进程堆栈起始值             BitAlias_BASE       EQU    0x22000000
;位带别名区起始地址
Flag1               EQU    0x20000200
b_flas              EQU    (BitAlias_BASE + (0x200*32) + (0*4))
;位地址
b_05s               EQU    (BitAlias_BASE + (0x200*32) + (1*4))
;位地址
DlyI                EQU    0x20000204
DlyJ                EQU    0x20000208
DlyK                EQU    0x2000020C
SysTim              EQU    0x20000210 ;常数定义
Bit0                EQU    0x00000001
Bit1                EQU    0x00000002
Bit2                EQU    0x00000004
Bit3                EQU    0x00000008
Bit4                EQU    0x00000010
Bit5                EQU    0x00000020
Bit6                EQU    0x00000040
Bit7                EQU    0x00000080
Bit8                EQU    0x00000100
Bit9                EQU    0x00000200
Bit10               EQU    0x00000400
Bit11               EQU    0x00000800
Bit12               EQU    0x00001000
Bit13               EQU    0x00002000
Bit14               EQU    0x00004000
Bit15               EQU    0x00008000
Bit16               EQU    0x00010000
Bit17               EQU    0x00020000
Bit18               EQU    0x00040000
Bit19               EQU    0x00080000
Bit20               EQU    0x00100000
Bit21               EQU    0x00200000
Bit22               EQU    0x00400000
Bit23               EQU    0x00800000
Bit24               EQU    0x01000000
Bit25               EQU    0x02000000
Bit26               EQU    0x04000000
Bit27               EQU    0x08000000
Bit28               EQU    0x10000000
Bit29               EQU    0x20000000
Bit30               EQU    0x40000000
Bit31               EQU    0x80000000 ;向量表 AREA RESET, DATA, READONLY DCD    MSP_TOP            ;初始化主堆栈 DCD    Start              ;复位向量 DCD    NMI_Handler        ;NMI Handler DCD    HardFault_Handler  ;Hard Fault Handler DCD    0                   DCD    0 DCD    0 DCD    0 DCD    0 DCD    0 DCD    0 DCD    0 DCD    0 DCD    0 DCD    0 DCD    SysTick_Handler    ;SysTick Handler SPACE  20                 ;预留空间20字节 ;代码段 AREA |.text|, CODE, READONLY ;主程序开始 ENTRY                            ;指示程序从这里开始执行
Start ;时钟系统设置 ldr    r0, =RCC_CR ldr    r1, [r0] orr    r1, #Bit16 str    r1, [r0] ;开启外部晶振使能  ;启动外部8M晶振 ClkOk           ldr    r1, [r0] ands   r1, #Bit17 beq    ClkOk ;等待外部晶振就绪 ldr    r1,[r0] orr    r1,#Bit17 str    r1,[r0] ;FLASH缓冲器 ldr    r0, =FLASH_ACR mov    r1, #0x00000032 str    r1, [r0] ;设置PLL锁相环倍率为7,HSE输入不分频 ldr    r0, =RCC_CFGR ldr    r1, [r0] orr    r1, #(Bit18 :OR: Bit19 :OR: Bit20 :OR: Bit16 :OR: Bit14) orr    r1, #Bit10 str    r1, [r0] ;启动PLL锁相环 ldr    r0, =RCC_CR ldr    r1, [r0] orr    r1, #Bit24 str    r1, [r0]
PllOk ldr    r1, [r0] ands   r1, #Bit25 beq    PllOk ;选择PLL时钟作为系统时钟 ldr    r0, =RCC_CFGR ldr    r1, [r0] orr    r1, #(Bit18 :OR: Bit19 :OR: Bit20 :OR: Bit16 :OR: Bit14) orr    r1, #Bit10 orr    r1, #Bit1 str    r1, [r0] ;其它RCC相关设置 ldr    r0, =RCC_APB2ENR mov    r1, #(Bit14 :OR: Bit4 :OR: Bit2) str    r1, [r0]      ;IO端口设置 ldr    r0, =GPIOC_CRL ldr    r1, [r0] orr    r1, #(Bit28 :OR: Bit29)          ;PC.7输出模式,最大速度50MHz  and    r1, #(~Bit30 & ~Bit31)   ;PC.7通用推挽输出模式 str    r1, [r0] ;PA9串口0发射脚 ldr    r0, =GPIOA_CRH ldr    r1, [r0] orr    r1, #(Bit4 :OR: Bit5)          ;PA.9输出模式,最大速度50MHz  orr    r1, #Bit7 and    r1, #~Bit6 ;10:复用功能推挽输出模式 str    r1, [r0]    ldr    r0, =USART1_BRR   mov    r1, #0x271 str    r1, [r0] ;配置波特率-> 115200 ldr    r0, =USART1_CR1   mov    r1, #0x200c str    r1, [r0] ;USART模块总使能 发送与接收使能 ;71 02 00 00   2c 20 00 00 ;AFIO 参数设置             ;Systick 参数设置 ldr    r0, =SYSTICKRVR           ;Systick装初值 mov    r1, #9000 str    r1, [r0] ldr    r0, =SYSTICKCSR           ;设定,启动Systick mov    r1, #0x03 str    r1, [r0] ;NVIC                     ;ldr   r0, =SETENA0 ;mov   r1, 0x00800000 ;str   r1, [r0] ;ldr   r0, =SETENA1 ;mov   r1, #0x00000100 ;str   r1, [r0] ;切换成用户级线程序模式 ldr    r0, =PSP_TOP                   ;初始化线程堆栈 msr    psp, r0 mov    r0, #3 msr    control, r0 ;初始化SRAM寄存器 mov    r1, #0 ldr    r0, =Flag1 str    r1, [r0] ldr    r0, =DlyI str    r1, [r0] ldr    r0, =DlyJ str    r1, [r0] ldr    r0, =DlyK str    r1, [r0] ldr    r0, =SysTim str    r1, [r0] ;主循环
main            ldr    r0, =Flag1 ldr    r1, [r0] tst    r1, #Bit1                 ;SysTick产生0.5s,置位bit 1 beq    main                  ;0.5s标志还没有置位       ;0.5s标志已经置位 ldr    r0, =b_05s                ;位带操作清零0.5s标志 mov    r1, #0 str    r1, [r0] bl     LedFlas mov    r0, #'H' bl     send_a_charmov    r0, #'e' bl     send_a_charmov    r0, #'l' bl     send_a_charmov    r0, #'l' bl     send_a_charmov    r0, #'o' bl     send_a_charmov    r0, #' ' bl     send_a_charmov    r0, #'w' bl     send_a_charmov    r0, #'o' bl     send_a_charmov    r0, #'r' bl     send_a_charmov    r0, #'l' bl     send_a_charmov    r0, #'d' bl     send_a_charmov    r0, #'\n' bl     send_a_charb      main;子程序 串口1发送一个字符
send_a_char push   {r0 - r3} ldr    r2, =USART1_DR   str    r0, [r2]
b1 ldr    r2, =USART1_SR  ldr    r2, [r2] tst    r2, #0x40 beq    b1 ;发送完成(Transmission complete)等待 pop    {r0 - r3} bx     lr ;子程序 led闪烁
LedFlas      push   {r0 - r3} ldr    r0, =Flag1 ldr    r1, [r0] tst    r1, #Bit0 ;bit0 闪烁标志位 beq    ONLED        ;为0 打开led灯 ;为1 关闭led灯 ldr    r0, =b_flas mov    r1, #0 str    r1, [r0] ;闪烁标志位置为0,下一状态为打开灯 ;PC.7输出0 ldr    r0, =GPIOC_BRR ldr    r1, [r0] orr    r1, #Bit7 str    r1, [r0] b      LedEx
ONLED       ;为0 打开led灯 ldr    r0, =b_flas mov    r1, #1 str    r1, [r0] ;闪烁标志位置为1,下一状态为关闭灯 ;PC.7输出1 ldr    r0, =GPIOC_BSRR ldr    r1, [r0] orr    r1, #Bit7 str    r1, [r0]
LedEx        pop    {r0 - r3} bx     lr ;异常程序
NMI_Handler bx     lr HardFault_Handler bx     lr SysTick_Handler ldr    r0, =SysTim ldr    r1, [r0] add    r1, #1 str    r1, [r0] cmp    r1, #500 bcc    TickExit mov    r1, #0 str    r1, [r0] ldr    r0, =b_05s  ;大于等于500次 清零时钟滴答计数器 设置0.5s标志位 ;位带操作置1 mov    r1, #1 str    r1, [r0]
TickExit    bx     lr ALIGN            ;通过用零或空指令NOP填充,来使当前位置与一个指定的边界对齐 END

然后调试即可。

4.keil观察管脚的时序波形

开始观察前,需要点击魔法棒配置虚拟仿真,见博客:https://blog.csdn.net/qq_66144143/article/details/127309228?spm=1001.2014.3001.5501

需要注意的是:只观察PA2和PA3口是不会出现波形的,需要通过另外设置一个GPIO口作为输出来观察波形。

波形如图:

参考博客:

【嵌入式09】STM32串口通信,发送Hello Windows示例

RS485通讯标准协议解读

嵌入式学习——串口通信小试相关推荐

  1. Linux ROS与嵌入式的串口通信

    1.根据ros wiki的官方教程 学习即可,并且有许多例子可供学习 http://wiki.ros.org/rosserial_arduino/Tutorials 2.用ASIO读写设备串行口 AS ...

  2. FPGA学习—串口通信

    FPGA学习系列 接下来介绍串口通信控制,本次就不用串口回环了,像正点原子,野火等fpga教程都会教串口回环,所以本文我将介绍如何串口控制去执行一些操作.之后也将拓展FPGA控制串口屏. 目录 FPG ...

  3. 第5-6周-实验作业-串口通信小试

    目录 一.寄存器写流水灯 1.在Cube_Mx选择F103C8芯片包 2.设置GPIO 3.设置时钟 4.生成函数后对main函数进行修改 5. 利用寄存器写流水灯,代码如下 二.串口通信 1.串口初 ...

  4. 【实验】串口通信小试

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理. 二.代码编写 三.所用软 ...

  5. 嵌入式开发—串口通信

    文章目录 1 概述 1.1 串口通信是什么 1.2 波特率 1.3 串口通信的用途 2 串口收发 2.1 波特率发生器 2.2 收发FIFO 2.3 DMA 3 串口收发程序设计 3.1 串口发送数据 ...

  6. MSP430f2619学习—串口通信

    1.初始化 USCI_A0引脚:P3.4.P3.5: UCA0CTL0:配置寄存器0,可配置奇偶校验位.数据位.通信模式等参数: UCA0CTL1:配置寄存器1,可配置时钟源等参数: 串口0初始化配置 ...

  7. STM32串口通信学习总结

                                                                             STM32串口通信学习总结 1.概述 1.1学习目的 ...

  8. ESP32学习记录<三>串口通信

    ESP32学习记录<三>串口通信 文章目录 ESP32学习记录<三>串口通信 前言 一.通过串口打印出数据 1.初始化串口 2.打印数据 二.串口控制LED亮灭 1.接收串口发 ...

  9. 【正点原子FPGA连载】第十四章 串口通信实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

最新文章

  1. 通俗理解tf.nn.conv2d() tf.nn.conv3d( )参数的含义 pytorhc 卷积
  2. 北大华为鹏城联合首次提出视觉 Transformer 后量化算法!
  3. Nagios监控linux服务器
  4. C语言math.h中的常用函数实例详解
  5. freeRtos学习笔(1)内核剪裁
  6. 大话PM | 产品经理必备利器——UML
  7. Flutter 下拉刷新花式玩法
  8. 免费注册丨全国社会媒体处理大会(SMP 2020)召开,98场报告日程全公开
  9. C# ASP.NET程序员整合Java门户单点登录PHPwind论坛博客软件集成项目经验总结
  10. c++ 写入文件_利用Python把数据存储在csv文件中
  11. win7 oracle数据库删除用户名,win7操作系统、 oracle10g 数据库创建、卸载 用户名的创建 、删除...
  12. HEX2BIN不能在win7_64位下执行的Keil官方解决方案
  13. anaconda安装LabelImg
  14. Android NDK 建立cocos2dx项目
  15. TSINGSEE青犀视频开发AI人脸对比如何输出多个对比相似度的人脸?
  16. 微信小程序实现身份证识别功能
  17. 网络web渗透工程师-教你怎么喝着茶,把甲方爸爸的活干了。
  18. python 微信公众号网页接口调用_Python调用微信公众平台接口操作示例
  19. 长坂坡被赵云挑翻50多员武将资料全部资料(转)
  20. 解密 富士白光HAKKO触摸屏上传密码解密

热门文章

  1. SAS盘和SATA盘_wentfar·tsao
  2. 编译安装kubernetes 1.15.3
  3. 设置字符串shell中文件处理及字符串处理
  4. 《python爬虫练习2》爬取网站表情包
  5. 支付宝沙箱支付 Java
  6. 城市地下综合管廊监控系统
  7. 织梦DedeCms列表{dede:list}标签实现按文章权重weig
  8. 避免DHCP冲突的主路由器和分路由器的连接方式
  9. 易筋经韦驮劲十二势图及拳谱
  10. 重磅!景联文科技通过ISO27701、ISO27001、ISO9001体系认证