前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >STM32串口1的收发配置

STM32串口1的收发配置

原创
作者头像
皓琦
发布2023-12-28 22:53:08
2670
发布2023-12-28 22:53:08
举报
文章被收录于专栏:STM32学习

1、串口1介绍

串口是一种可以让两个设备之间进行收发数据的接口,发送和接收共用的可编程波特率,最高达4.5Mbits/s,波特率越高数据传输速度越快,支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。

2、波特率

简而言之波特率(Tx / Rx)就是设备在发送数据时,数据在信道上的传输速度。波特率的计算公式:

fCK定时器的时钟频率(USART1使用APB1的时钟频率一般为72MHZ),USARTDIV是定时器1的重载值。

设置波特率时的误差计算,,一般用序号2和序号5:

3、状态寄存器(USART_SR)

什么是状态寄存器呢?状态寄存器就是能够检测当前串口窗口状态的寄存器。它一共可以检测的位共有32位,如读数据寄存器非空、发送完成、发送数据寄存器空等,其中10~31位为保留位,在这里使用位7 TXE:发送数据寄存器空

4、数据寄存器(USART_DR)

数据寄存器由两个寄存器组成,主要完成数据的收发,一个给发送用(TDR),一个给接收用(RDR),该寄存器兼具读和写的功能,最大只能放8位数据,提供0~8位使用,其中一位用作奇偶校验位。

5、波特率寄存器(USART_BRR)

配置串口的波特率,控制CPU发送的频率。

6、控制寄存器1(USART_CR1)

在STM32中每个串口都有3个控制寄存器CR1~CR3,在这里学习控制寄存器1,CR1表示主要的基本配置寄存器,能实现配置数据位、校验位、停止位、使能位(串口发送、串口接受、串口使能)等,本篇文章学习位2RE:发送使能(Transmitter enable)、位3TE:接收使能 (Receiver enable)以及位13UE:USART使能 (USART enable),位13在最后配置,功能开启串口模块。

7、串口一配置的代码实现

(1)usart.c文件

代码语言:void USART1_Init(u32 baud)
复制
{
  /*GPIO口的配置*/
	RCC->APB2ENR|=1<<2;//PA
	GPIOA->CRH&=0xFFFFF00F;
	GPIOA->CRH|=0x000008B0;
	
	
 /*配置串口相关寄存器*/
	RCC->APB2ENR|=1<<14;//打开USART1时钟
	RCC->APB2RSTR|=1<<14;//打开USART1复位
	RCC->APB2RSTR&=~(1<<14);//关闭USART1复位
	USART1->BRR=72000000/baud;//用来控制CPU发送的频率
	USART1->CR1|=1<<2;//开启串口接收功能
	USART1->CR1|=1<<3;//关闭串口接收功能
	USART1->CR1|=1<<13;//开启串口模块
	
	
}

(2)main.c文件

代码语言:int main(void)
复制
{
	int Value=0;
        KEY_Init();
	LED_Init();
	USART1_Init(115200);//USART初始化
	while(1)
	{
		Value=KEY_GetValue();
		switch(Value)
		{
			case 1:
			USART1->DR='A';//串口发送数据
			while(!(USART1->SR&1<<7)){}
			  LED1=!LED1;
			  break;
			case 2:
				USART1->DR='q';
			 while(!(USART1->SR&1<<7)){}
				LED0=!LED0;
			  break;
			case 3:
				 USART1->DR='z';
			   while(!(USART1->SR&1<<7)){}
				  LED1=!LED1;
			    LED0=!LED0;
			  break;
		}
 }
}

(3)实验效果

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、串口1介绍
  • 2、波特率
  • 3、状态寄存器(USART_SR)
  • 4、数据寄存器(USART_DR)
  • 5、波特率寄存器(USART_BRR)
  • 6、控制寄存器1(USART_CR1)
  • 7、串口一配置的代码实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档