STM32学习笔记(江协科技)-----实现串口通信

STM32的USART外设:

自带波特率发生器,最高可达4.5Mbits/s

可配置数据位长度(8/9),停止位长度(0.5/1/1.5/2)

可选校验位(无校验/奇校验/偶校验)

STM32F103C8T6的USART资源:USART1(APB2总线),USAR2(APB1总线),USART3(APB1总线)。

硬件部分:

f5fc2595a84a4a22919902f6f880778a.png

执行过程:

22da6bc3e60549f0af98d0f63453fbc1.png

波特率发生器产生约定的通信速率,产生的时钟通向发送控制器和接收控制器,用来控制发送移位和接收移位。之后由发送数据寄存器和发送移位寄存器配合,移出数据(右移,低位先行),通过GPIO复用输出,输出到TX引脚。RX引脚通过GPIO复用输入,移动到接收寄存器(右移,低位先行),然后转移到RDR,同时置一个RXNE标志位(既可检查是否收到,也可申请中断)。

数据采样:

f7eb6b12764d4351ab0f020a52755fe9.png

以波特率的16倍频率采样,在某个位置,突然采集到0,说明出现了下降沿,然后进行连续16位采样,在下降沿的第3,5,7次进行一批采样,8,9,10次进行一批采样,这两批,,每3位里都要有至少2个0。若有一个1,会置一个NE,即噪声标志位。若通过检测,之后每次都在8,9,10位进行采样(正好在正中心采样)。

波特率发生器(寄存器):

波特率由波特率寄存器BRR里的DIV来确定。

29a1cce24e2047f183d0d29746c8fa21.png

波特率 =eq?%5C%3B1%7D(一般为72M) /(16*DIV)

举例:若要配置波特率为9600,9600 = 72M/(16*DIV) 即 DIV = 72M/9600/16=468.75,然后转换成二进制,468.75 =   11101 0100.11 

所以写入BRR寄存器,DIV15~0:0000 11101 0100 1100 (整数部分前面补0,小数部分后面补0)   

串口发送+接收:              

接线:

USB转串口模块:VCC和3V3用跳线帽接在一起,TXD接PA10,RXD接PA9。、

(因为USART1_TX是PA9,USART1_RX是PA10,所以TX接RX,RX接TX,交叉连接)

串口发送:e23efac553214d6794cde005588ed46b.png

f6f7c98d6c1a4fd79b698a1ca87c0b68.png

 

e8f9d35d131e49c698f19018d3f68d15.png1027cf3169604f30be81365f4887d9fd.png

2a0f05d837124f00a8d22b2ce7fa1b24.png

ce7abf8777764afdb5d5b451fe833a4f.png



一些SendByte的拓展函数:

74150c2021cb4602bd72326196e35522.png

63523d4906884f5599b0229377440327.png

8cf0312a8366459f827649ee24da6048.png

串口接收+发送:
#include "Device/Include/stm32f10x.h"   // Device header
#include <stdio.h>
#include <stdarg.h>

uint8_t Serial_RxData;
uint8_t Serial_RxFlag;

void Serial_Init(void)
{	
	USART_InitTypeDef USART_InitStructure;
	GPIO_InitTypeDef GPIO_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
	//RCC_APB1PeriphClockCmd(RCC_APB1Per
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值