0%

stm32_note_10day

===========================
2022-8-26
===========================

一.温故知新

    74HC138->数码管的公共端
        是一个三八译码器,功能是一个选择器
        16管脚的封装形式
        VCC GND
        A0 A1 A2(三个输入)
        E1 E2 E3(控 模式)
        Y0 - Y7(8个输出)
    74HC595->数码管的数据段
        是一个可以把串行数据转换成并行数据的模块
        16管脚的封装形式
        VCC GND
        DS(串行数据的输入)
        Q0 - Q7(并行数据的输出)
        Q7’级联
        OE(输出使能)
        MR(主复位)
        SH_CP
        ST_CP
        由三个部分组成
        (<8bit移位寄存器><8bit存储寄存器><状态输出>)

选择器

    派发STM32F407ZGT6开发板

二.串行的接口

    1.串口的简介
    串口也叫做串行的接口,串行的通讯接口或者串行的通信接口
    (在Windows系统环境中串口表现为COM接口)
    (在Linux系统环境中串口表现为tty设备</dev/ttyxx>)
    串行的通信指的是数据一位一位的按顺序(高位先出 | 低位先出)进行传输
    串行的接口操作起来比较简单,只需要一条数据线就可以完成传输数据
    注意 : 并口也叫做并行的接口.指的是数据多位多位进行传输
    并不是说并口可以一次发送多位数据,就要比串口传输速度快,不一定
    2.串口的工作模式
        单工模式		A---->------B
        A设备只发送数据,B设备只接收数据,数据线上只有一种传输方向
        半双工模式	A-->-----<--B
        A设备可以收发数据,B设备也可以收发数据
        但是在同一时间,数据线上只能有一种传输方向
        发送的同时不能接收,接收的同时不能发送
        全双工模式	  ------>-----
                A	    B
                  ------<-----
        A设备可以收发数据,B设备也可以收发数据
        发送的同时可以接收,接收的同时可以发送
    3.不同电平标准的串口
    注意 : 如果两个设备需要通过串口进行通信,首先要确保电平标准一致
    如果电平标准不一致,需要使用电平转换模块
        TTL电平标准的串口
            0V代表数据0	3.3V/5V代表数据1
            传输距离差不多1米左右
        RS232电平标准的串口
            (3V - 12V)代表数据0	(-3V - -12V)代表数据1
            传输距离差不多15米左右
        RS485电平标准的串口(工业级的总线<抗干扰性极强>)
            在单工模式或者半双工模式下最少需要两条数据线
            在全双工模式下需要四条数据线
            因为传输的是两条电线的电压差
            传输距离差不多1000米左右
    4.我们开发板上串口的分类
    在STM32F103RBT6芯片中串口的分类
    SPI、I²C、I²S、USART/UART、CEC、USB、CAN、以太网接口、SDIO
    本次主要讲的是USART/UART
    5.USART/UART
    USART : 通用的同步异步收发器
        既支持同步模式也支持异步模式
    UART   : 通用的异步收发器
        只支持异步模式
    6.同步和异步
    同步 : 发送方发出数据之后,需要等待接收方回复应答,接收到应答之后再发送
        下一个数据包
        同步是阻塞模式
    比如说 : I²C、SPI属于同步的通信
    异步 : 发送方发出数据之后,不需要等待接收方回复应答,直接发送下一个数据包
        异步是非阻塞模式
    比如说 : UART属于异步的通信

    7.我们开发板上的USART/UART
    我们使用的STM32F103RBT6芯片中一共有3个USART/UART
    USART1	纽扣电池的上面
    USART2	无线模块的接口位置
    USART3	扩展IO
    目的 : 带着大家把USART1的实验完成,自己搞定USART2/USART3的驱动
    
    8.驱动USART1
    USART1_TX	PA9	推挽复用
    USART1_RX	PA10	浮空输入

    在通讯之前需要规定好双方的波特率
    115200 8N1
    115200	波特率
    8	8个数据位(1个字节数据)
    N	没有奇偶校验
    1	1个停止位
注意 : 上位机程序(串口调试助手)不要打开多个!!!

=================================
作业
1.把本周讲过的内容完整的复习一遍
2.举一反三(根据驱动USART1的程序把USART3搞定)
3.封装函数
    extern void usart_1_send_data(char *buf);//可以发送多个字节数据
4.通过USART1显示DHT11采集的数据
    "HUM:XX TEMP:XX"
5.通过USART1把结构体类型的数据发送出去
    struct data
    {
        float Hum;//湿度
        float Temp;//温度
        int pm_value;//PM2.5
        char buf[16];//存储额外的数据
    };
    struct data d = {23.45, 34.56, 9527, "Hello World"};
=================================