STM32Cube的串口设置(一)即学即用

串口系列
STM32Cube的串口设置(一)即学即用
STM32Cube的串口设置(二)一个串口接收另一个串口发送
串口实战
STM32Cube的串口实战(一)GPS+BD模块

一、什么是串口

串行通信接口,用来收发东西的,作为一种有线通行手段,了解到这里就行了!

二、操作步骤

要求:通过串口向PC发送一段字符

1、根据自己的stm32的芯片型号来选择,我这里是STM32F767IGTx

在这里插入图片描述

2、选好芯片之后照旧设置RCC为外部时钟

在这里插入图片描述

3、使能串口1(usart1),如图:

模式设为异步(Asynchronous)其他默认,波特率可以自己改,默认为115200Bits/s。
在这里插入图片描述

4、看原理图,找到串口对应引脚,如图:

我这里是

PA10——>USART1_RX  
PA9——>USART1_TX

在这里插入图片描述

5、根据对应引脚设置串口引脚,如图:

找到PA9、PA10引脚左键点击分别选择USART1_TX和USART1_RX
(不用担心选错选反,针脚的功能是ST公司已经定义好了的)
在这里插入图片描述

6、设置时钟树,如图:

这里会搞的按自己习惯搞,不会搞的默认就好,但是不能有里面是红色的框(红色框就是错了意思)
在这里插入图片描述

7、项目设置,如图:

红框里的按照自己的Keil版本来
在这里插入图片描述
个人喜欢把.c/.h文件分开
在这里插入图片描述

8、点击右上角的‘GENERATE CODE’直接生成代码,如图:

在这里插入图片描述

9、生成代码后用Keil打开项目并在Application/User中找到usart.c并在/USER CODE BEGIN 0/后添加如下代码,如图:

在这里插入图片描述

#include <stdio.h>
struct __FILE 
{ 
	int handle; 
}; 
FILE __stdout;       
void _sys_exit(int x) 
{ 
	x = x; 
} 
int fputc(int ch, FILE *f)
{ 	
	while((USART1->ISR&0X40)==0);//循环发送,直到发送完毕   
	USART1->TDR=(uint8_t)ch;      
	return ch;
}

这一步是将stdio.c的printf函数输出指向串口

10、在main.c中主循环内添加如下代码并测试,如图:

在这里插入图片描述

printf("今天搞定串口\r\n");
HAL_Delay(1000);

编译、下载,打开任意一个串口调试助手,设置好对应的波特率和串口号,其余按照图中设置(有心的同学已经发现在cube里设置串口的时候需要设置的参数和下面的几项基本一致)之后打开串口

在这里插入图片描述
得到结果如图:
在这里插入图片描述
每秒收到一次数据(后面的时间是勾选了串口调试助手的时间戳之后生成的,主要为了给大家看时间间隔)。

		  Good Game!!!!!!

接下来会推出一系列的关于串口使用的分享,有需要的猿们敬请关注!!!!!

以上内容欢迎大家转载引用,标明出处即可!!!!!

发布了20 篇原创文章 · 获赞 53 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ASWaterbenben/article/details/100041284