STM32学习从入门到摆烂--串口

串口(USART)的含义

USART:

U-Universal通用

S-Synchronous同步(共享时钟)

A-Asynchronous异步(不共享时钟)

R-Reciver接收

T-Transmitter发射器

如何使用用USART

cpu通过发送数据寄存器发送控制到TX引脚,通过Rx引脚从接收数据寄存器接收数据到CPU。

USART的工作原理

串并转换电路:在CPU向发送数据寄存器发送数据时采用的是并行写入收发控制到TX引脚,向外部设备发送采用的是串行发送,同理外部接收数据时采用的是RX引脚串行接收数据,紧接着CPU并行读取接收数据寄存器中的数据。

USART的完整框图

数据帧格式设置

寄存器:配置寄存器

M-(Word Length)数据位长度

M=0,8位;M=1,9位

PCE-奇偶校验使能

PCE=0,禁止;PCE=1,使能

PS(Selection)奇偶选择

PS=0,偶校验;PS=1,奇校验

STOP-停止位长度

TXE,发送,RXE,接收

UE-USART的总开关

波特率设置

波特率:每秒钟传输码元的个数

数据发送过程

2.2.4.1双缓冲与连续发送

TXE发送数据寄存器空

TC发送完成        

RXNE标志位

RXNE接收数据寄存器非空

RXNE=0,无数据,RXNE=1,有数据

错误标志位

示例代码


	void My_USART1_Init(void)
{
  GPIO_InitTypeDef GPIOInitStruct;
	

	
	//初始化TX PB6 10MZ AF_PP
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	GPIOInitStruct.GPIO_Mode =GPIO_Mode_AF_PP;
	GPIOInitStruct.GPIO_Pin=GPIO_Pin_6;
	GPIOInitStruct.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(GPIOB,&GPIOInitStruct);
	
	//初始化RX PB7 IPU
	GPIOInitStruct.GPIO_Mode=GPIO_Mode_IPU;
	GPIOInitStruct.GPIO_Pin=GPIO_Pin_7;
	GPIO_Init(GPIOB,&GPIOInitStruct);
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
  GPIOInitStruct.GPIO_Mode=GPIO_Mode_Out_OD;
	GPIOInitStruct.GPIO_Pin=GPIO_Pin_13;
	GPIOInitStruct.GPIO_Speed=GPIO_Speed_2MHz;
	GPIO_Init(GPIOC,&GPIOInitStruct);
	
	GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);
	
	//重映射USART的Tx和Rx的引脚
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);
	
  //使能USART1的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
	//设置USART1的参数
	 USART_InitTypeDef USARTInitStruct;
	 USARTInitStruct.USART_BaudRate=9600;
	 USARTInitStruct.USART_WordLength=USART_WordLength_8b ;
	 USARTInitStruct.USART_StopBits=USART_StopBits_1;
	 USARTInitStruct.USART_Parity=USART_Parity_No;
	 USARTInitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
	 USARTInitStruct.USART_Mode =USART_Mode_Tx|USART_Mode_Rx;
	 
	 USART_Init(USART1,&USARTInitStruct);
	 
	 //闭合USART的总开关
	 USART_Cmd(USART1,ENABLE);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值