网站建设的cms系统,江苏弘盛建设工程集团有限公司网站,asp.net做网站有何意义,泰安网站建设方案本文代码使用 HAL 库。 文章目录前言一、USART 同步/异步串行接收/发送器二、USART 原理图三、CubeMX 创建工程四、usart.c 文件解析五#xff0c;设计实验#xff1a;在 串口输入字符点亮led实验现象#xff1a;总结前言
这篇文章介绍 实现 USART 异步模式下 通过 串口助手… 本文代码使用 HAL 库。 文章目录前言一、USART 同步/异步串行接收/发送器二、USART 原理图三、CubeMX 创建工程四、usart.c 文件解析五设计实验在 串口输入字符点亮led实验现象总结前言
这篇文章介绍 实现 USART 异步模式下 通过 串口助手 发送,接收 数据 一、USART 同步/异步串行接收/发送器
USARTUniversal Synchronous Asynchronous Receiver Transmitter是一种通用的串行通信接口它可以用来 发送 和 接收 数据。
USART 可以用来 连接两个设备 以实现数据传输。它可以用来连接计算机、打印机、终端机、网络设备等。
USART 可以使用 同步 或 异步 方式传输数据。
在 同步 模式下发送和接收的数据都是 同步 的即发送和接收的数据都是以相同的速率传输的。在绝大多数场合下发送端和接收端采用的都是同一个时钟。而在 异步 模式下发送和接收的数据是异步的即发送和接收的数据可以以不同的速率传输。发送端和接收端可以有各自独立的时钟来控制数据的发送和接收这两个时钟各自独立互不同步。
二、USART 原理图
任何 USART 双向 通信至少需要 两个 脚接收数据输入(RX) 和 发送数据输出(TX) 。
RX接收数据串行输。通过过采样技术来区别数据和噪音从而恢复数据。TX发送数据输出。当发送器被禁止时输出引脚恢复到它的I/O端口配置。
从下图可以看到 USART 的发送引脚为PA9 USART1_TX 接收引脚为 PA10 USART1_RX。
三、CubeMX 创建工程
选择芯片。 选择 Debug 模式 选择外部时钟 配置系统时钟在 红框中输入 72 然后点击 回车 两次即可配置好 设置 io 端口 设置为 异步通信。 可 重新设置名字 设置工程模式和版本 选取加入.c /.h文件便于编写代码 创建工程 然后 打开工程可以看到我们的 usart.c usart.h
四、usart.c 文件解析
使用 UART_HandleTypeDef 结构体 定义变量具象 USART 对象。huart1 在 usart.h 中被定义。 使用 MX_USART1_UART_Init 设置 USART1 的参数波特率数据位长度奇偶校验位等 使用 HAL_UART_Init() 初始化结构体变量完成对该 USART 外设的初始化。 在 HAL_UART_MspInit( ) 函数中完成对 时钟 的 使能 和 GPIO/DMA 等的配置。 关闭使能。
五设计实验
在 串口输入字符点亮led
在 串口 输入 ’ A 则 led 点亮。在 串口 输入 ’ a 则 led 熄灭。
串口发送函数
HAL_UART_Transmit ( UART_HandleTypeDef * huart , uint8_t * pData , uint16_t Size , uint32_t Timeout );串口接收函数
HAL_UART_Receive_IT (UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);printf 重定向
int fputc(int str, FILE *f) /* printf 打印 */
{while(HAL_UART_Transmit(huart1, (uint8_t *)str, 1, 300) ! HAL_OK);return 0;
}
int fgetc( FILE *f) /* scanf 输入 */
{char c 0;while(HAL_UART_Receive(huart1, (uint8_t *)c, 1, 300) ! HAL_OK);return c;
}控制 led 亮灭。 对于 led 的代码以及工程文件可以参考我之前的文章详细的介绍了 led STM32f103 CubeMX封装 led程序
uint8_t buff[128]{0}; /* 接收数据数组 */
buff[0] getchar(); /* 获取字符 */switch(buff[0]){case A:{Blue_ON(); /* led 点亮 */printf(led is on !\r\n);}break;case a:{Blue_OFF(); /* led 熄灭 */printf(led is off !\r\n);}break;}实验现象
实验现象 我放在了 B占有兴趣的可以看看
STM32 串口USART 发送数据控制led亮灭 总结
下一篇文章 讲 USART 串口 中断。