六、STM32的UART

1、串行通信的基本概念      

1.1、通信的基本概念       

1.1.1、通信

  最少有两个对象,一个收,一个发

1.1.2、同步通信   

一般情况下 同步通信指的是通信双方根据同步信号进行通信的方式。比如通信双方有一个共同的时钟信号,大家根据时钟信号的变化进行通信。相当于两个人参考的一个手表做事情,肯定是同步的    例如 SPI总线,I2C总线等等

1.1.3、异步通信

是指数据传输速度匹配依赖于通信双方有自己独立的系统时钟,大家约定好通信的速度。异步通信不需要同步信号,但是并不是说通信的过程不同步。相当于两个人参考两个不同的手表做事情,只能尽力做到同步,比如UART,USB等等

1.1.4 、串行通信

同一时刻只能收或者发一个bit位的数据。因此只用一根信号线就可以。

1.1.5、异步通信

 同一时刻只能收或者发多个bit位的数据。因此要用多根信号线就可以。

1.1.6、单工、半双工、全双工

               单工:要么收,要么发,只能做接收设备或者发送设备。比如收音机

                半双工:可以收,可以发,但是不能同时收发,比如对讲机

               全双工:可以在同一时刻即接收,又发送。比如手机

1.2、USART的介绍

   1.2.1 USART基本概念

1.3、串口的电路连接

 1.4、串口的通信协议

1.5、串口的通信波特率

2、串口寄存器的介绍

2.1、控制寄存器------USART_CR

2.2、状态寄存器------USART_SR

2.3、数据寄存器------USART_DR

2.4、波特率寄存器------USART_BRR

3、HAL层串口函数库的使用及printf的实现

3.1、 HAL库中串口的收发函数

stm32f4xx_hal_uart.c

/**
* @brief Sends an amount of data in blocking mode.
* @param huart pointer to a UART_HandleTypeDef structure that contains
* the configuration information for the specified UART module.
* @param pData Pointer to data buffer
* @param Size Amount of data to be sent
* @param Timeout Timeout duration
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

/**
* @brief Receives an amount of data in blocking mode.
* @param huart pointer to a UART_HandleTypeDef structure that contains
* the configuration information for the specified UART module.
* @param pData Pointer to data buffer
* @param Size Amount of data to be received
* @param Timeout Timeout duration
* @retval HAL status
*/
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

3.2、 printf重定向

其实printf重定向就是我们将printf重新定向到串口,也就是我们可以自己重写C的库函数,当连接器检查到用户编写了与C库函数相同的名字,优先采用

用户编写的函数这样用户就可以实现对库的修改了。

 printf函数实际是一个宏,最终调用的是 fputc(int ch,FILE *f)这个函数,所以我们需要修改这个函数。

3.3、实现方式

4、详细代码实现过程如下

https://blog.csdn.net/qq_42810361/article/details/94763089?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值