STM32下的串口通信程序

一、串口通信简介

1、串口通信概念
串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式,它将需要传输的数据通过串口按位(bit)发送和接收字节。
分类:单工、 半双工、 全双工

2.USART通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)

USART是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。
USART提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。
USART利用分数波特率发生器提供宽范围的波特率选择,支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范以及调制解调器(CTS/RTS)操作。除此之外,它还允许多处理器通信,使用多缓冲器配置的DMA方式可以实现高速数据通信。
相比于USART来说,UART少了USART的同步通信功能,而只有异步通信的功能。简单区分同步和异步的方法就是看通信时需不需要对外提供时钟输出,如果需要对外提供时钟输出就是同步通信方式,否则为异步通信方式。我们平时用的串口通信基本都是 UART。

二、stm32串口通信实验

1.功能要求

1)设置波特率为115200,1位停止位,无校验位。
2)STM32系统给上位机(win10)连续发送“hello windows!”,上位机接收程序可以使用“串口调试助手“,也可自己编程。
3)当上位机给stm32发送“Stop,stm32”后,stm32停止发送。
野火产品资料链接:https://ebf-products.readthedocs.io/zh_CN/latest/
使用的为野火STM32F103指南者

2.步骤
下载图中圈出的三个压缩包
在这里插入图片描述

用usb线把stm32开发板和电脑相连接,stm32端连接的 ‘usb转串口’这个接口,再打开stm32开关,可以看到红色的小灯亮起。
在这里插入图片描述
连接过后打开CH341SER.EXE,点击安装,显示安装成功即可。在这里插入图片描述在这里插入图片描述

打开串口下载助手mcuisp
按如下方式配置:①搜索串口,设置波特率 115200(尽量不要设置的太高) ,②选择要下载的 HEX 文件、③校验、编程后执行、④DTR 低电平复位,RTS 高电平进入 bootloader、⑤开始编程。(前4步一定要调试正确,否则可能连接不上)
在这里插入图片描述3.代码及效果图

打开1.程序源码_教程文档—>再打开1-[野火]《STM32库开发实战指南》(标准库源码)【优先学习】—>接下来点开1-书籍配套例程-F103VE指南者.rar下载解压后打开第21个串口通信文件中的USART1接发文件夹,打开后选择下图工程文件
在这里插入图片描述打开后把其中stm32f10x_it.c文件的串口中断服务函数部分改为如下:

int i=0;
uint8_t ucTemp[50];
void DEBUG_USART_IRQHandler(void)
{
   
	if(USART_GetITStatus(DEBUG_USARTx,USART_IT_RXNE)!=RESET)
	{
   
		ucTemp[i] = USART_ReceiveData(USART1);	
	}
  if(ucTemp[i] == '!')
	{
   
		if(ucTemp[i-1] == '2'&&ucTemp[i-2] == '3'&&ucTemp[i-3] == &
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32中实现蓝牙串口通信程序可以按照以下步骤进行: 1. 首先,需要配置STM32串口和蓝牙模块的通信参数。可以使用HAL库提供的函数来初始化串口和蓝牙模块,例如使用HAL_UART_Init()函数初始化串口参数。 2. 接下来,需要使能串口和蓝牙模块的时钟。可以使用HAL库提供的函数来使能串口和蓝牙模块的时钟,例如使用HAL_UART_MspInit()函数使能串口时钟。 3. 然后,需要设置GPIO端口模式,将串口的引脚配置为串口功能。可以使用HAL库提供的函数来设置GPIO端口模式,例如使用HAL_GPIO_Init()函数设置串口引脚的模式。 4. 接着,可以使用HAL库提供的函数来发送和接收数据。例如,使用HAL_UART_Transmit()函数发送数据,使用HAL_UART_Receive()函数接收数据。 5. 如果需要使用中断模式进行串口通信,可以使用HAL库提供的中断相关函数。例如,使用HAL_UART_Transmit_IT()函数进行中断模式发送,使用HAL_UART_Receive_IT()函数进行中断模式接收。 需要注意的是,具体的程序实现可能会根据具体的硬件和软件环境有所不同。因此,建议参考STM32的官方文档和相关的开发板资料来获取更详细的信息和示例代码。\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [Stm32 基于蓝牙的串口通信 详细篇](https://blog.csdn.net/qq_42177385/article/details/96502182)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [STM32开发——串口通讯(第1篇)——蓝牙(非中断+中断)](https://blog.csdn.net/m0_67794575/article/details/131132466)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值