【嵌入式学习】--Uart串口

本文介绍了STM32F103C8T6和51单片机进行串口通信的配置和实现方法,包括USART初始化、发送和接收数据的函数。同时,讲解了RS232与RS485的区别,指出RS232适用于短距离全双工通信,而RS485适合长距离和多主机的半双工通信场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
下面是9针串口的各个引脚
在这里插入图片描述

串口通信时序图

一组数据是由起始位+数据位+奇偶校验位+停止位组成。

起始位
下降沿信号触发,表示数据开始传输。

数据位
有5~8位,一般采用8位,因为我们平时传输的英文字符,是使用8bit的字节来进行ascall码表示的。

奇偶校验位

如果数据中的“1”的总数为奇数个,那么就是奇校验。
如果数据中的“1”的总数为偶数个,那么就是偶校验。

停止位
一般有1、1.5、2位表示,一般使用1位。

源码

以stm32f103c8t6为例
实际上是利用USART_SendData()这个函数进行按字节发送。和USART_GetITStatus()函数判断接收中断位是否发生改变来进行接收数据。

uart.c

#include "uart.h"

void uart_config(void)
{
   
   
		/* GPIO端口设置 */
		USART_InitTypeDef USART_InitStructure = {
   
   0};
		NVIC_InitTypeDef	NVIC_InitStructure = {
   
   0};
		GPIO_InitTypeDef  GPIO_InitStructure = {
   
   0};
		
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
		RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
	
		/* PA2 TXD2 */
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
		GPIO_Init(GPIOA, &GPIO_InitStructure);
		 
		/* PA3 RXD2 */
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; 
		GPIO_InitStructure
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值