如何在STM32F4 ARM MCU和Python之间建立USART通信

发布者:温馨家园最新更新时间:2024-05-11 来源: elecfans关键字:STM32F4  ARM  MCU  Python  USART通信 手机看文章 扫描二维码
随时随地手机看文章

步骤1:软件和硬件要求

在硬件方面,您需要:

STM32F4发现板(或其他任何STM32板)

USB转TTL转换器


在软件方面:

STM32CubeMX

Keil uVision5

已安装串行库的Python

步骤2:STM32CubeMX配置

首先让我们了解我们想要做什么。我们希望通过USART从Python将数据传输到板上,并检查是否有正确的数据并切换LED。因此,我们需要启用USART和Led。

从“连接性”选项卡中启用USART2。

将模式更改为异步

波特率更改为9600 Bits/s

无奇偶校验的字长为8位

无奇偶校验位

从DMA设置中以特殊模式添加USART2_RX

从NVIC设置中启用USART2全局中断

然后生成代码:)

通过单击PD12启用LED

步骤3:Keil软件开发

#include

#include

在字符串操作和定义布尔变量时将需要这些库。

/* USER CODE BEGIN 2 */

HAL_UART_Receive_DMA(&huart2, (uint8_t *) data_buffer, 1);

/* USER CODE END 2 */

此处,UART

/* USER CODE BEGIN 4 */

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

{

/* Prevent unused argument(s) compilation warning */

UNUSED(huart);

/* NOTE: This function should not be modified, when the callback is needed,

the HAL_UART_RxCpltCallback could be implemented in the user file

*/

if(data_buffer[0] != ‘ ’){

data_full[index_] = data_buffer[0];

index_++;

}else{

index_ = 0;

finished = 1;

}

//HAL_UART_Transmit(&huart2, data_buffer, 1, 10);

}

/* USER CODE END 4 */

这是ISR,当我们得到一个字节的字符时,它被激活。所以。我们得到该字节并将其写入包含完整接收数据的data_full,直到得到‘ n’。当我们得到‘ n’时,我们使完成标志1并在while循环中:

while (1)

{

/* USER CODE END WHILE */

if(finished){

if(strcmp(data_full, cmp_) == 0){

HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);

}

memset(data_full,‘’,strlen(data_full));

finished = 0;

}else{

__NOP ();

}

/* USER CODE BEGIN 3 */

}

如果完成标志为HIGH,我们将比较完整接收的数据和我们想要的数据的内容,如果它们是等于我们切换领导。之后,我们清除完成标志,等待新数据,并清除data_full数组,以免覆盖该数组。

步骤4:Python软件开发

因此,这里我们要在结尾处发送带有‘/n’的数字,因为Keil软件需要查看它才能知道结尾。

import serial

ser = serial.Serial(‘COM17’) #check that port on your device from Device Manager

ser.write(b‘24 ’)

您应该看到每次您发送“ 24 n”时,LED都会切换。如果您发送其他任何内容,它都不会影响它。


关键字:STM32F4  ARM  MCU  Python  USART通信 引用地址:如何在STM32F4 ARM MCU和Python之间建立USART通信

上一篇:如何利用stm32单片机进行超声波测距
下一篇:STM32单片机串口波特率的计算方法解析

推荐阅读最新更新时间:2026-03-12 10:34

STM32单片机学习笔记——USART串口通信
首先,USART是什么呢? USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。(来自百度) 这是官方解释,而我对它的通俗解释是:这是一个用于和其他设备(如电脑、单片机等)通信(交换数据、信息等)的端口,就像手机数据线那样。 当然,这只是我的一种通俗看法,大家经过了深入的学习之后,一定会产生更为准确、成熟的看法。 我所学习的,就是通过这个模块来实现单片机和电脑之间的通信,并以此为基础,实现利用电脑来简单地控制单片机的目的。 那么,我们来简单地看一看我们这段代码由哪几部分组成: 1. 用于存储相关配置的结构体。 2. 变量Temp,用于存储从电脑接收到的信息。 3.
[单片机]
AVR单片机—(五)、ATMEGA16的USART与PC机串行通信—03
五、ATMEGA16的USART与PC机串行通信 五—(03)、PC机发送控制指令控制单片机工作~(这个控制还是比较简单的~~ ,不过个人认为还是有水平的~) 还是先上图片~~,然后程序,程序师模块化的,我尽量贴全点~~ 然后就是程序了 IAR5_2.c //------------------------------------------------------------------------------ //控制指令的定义(个人感觉这个才是真正应用呢~~给力~) //上位机界面中,用户需要输入控制下位机的指令 //由于传送的数据比较简单,因此控制指令也可定义的相对简单一些((*^__^*) 嘻嘻……,那本书上
[单片机]
AVR<font color='red'>单片机</font>—(五)、ATMEGA16的<font color='red'>USART</font>与PC机串行<font color='red'>通信</font>—03
利用USART实现单片机与PC通信
;实验目的:熟悉USART通信 ;通过“串口调试助手”协助工作 ;串口调试助手发送数据给877,877收到后再转发回串口助手 ;硬件要求:拨码开关S7全置ON,其他拨码开关置OFF #INCLUDE P16F877A.INC ;调用芯片头文件,省去特殊寄存器等的定义 __CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_ BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC VAL_US EQU .249 ;短延时定时参数 VAL_MS EQU .200 ;长延时定时参数 COUNT EQU 25H
[单片机]
STM32学习:USART串口通信
一、STM32F1的USART介绍 (一)串口通信简介 串口通信(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通信方式,属于串行通信方式。串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。 (1)接口标准 串口通信的接口标准有很多,有RS-232C、RS-232、RS-422A、RS-485等。 常用的就是RS-232和RS-485。RS-232其实是RS-232C的改进,原理是一样的。 RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。 RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的
[单片机]
STM32学习总结之------串口通信USART
学习内容: 1、利用串口可以帮助我们调试程序,本节介绍的为串口最基本、最常用的方法,全双工、异步通讯方式。 2、要配置串口通讯,至少要设置以下几个参数:字长(一次传送的数据长度)、波特率(每秒传输的数据位数)、奇偶校验位、还有停止位。 在初始化串口的时候,必然有一个串口初始化结构体,这个结构体的几个成员就是有来存储这些控制参数的。 3、串口线主要分两种,直通线(平行线)和交叉线。 假如PC与板子之间要实现全双工串口通讯,必然是PC的Tx针脚要连接到板子的Rx针脚,而PC的Rx针脚则要连接至板子的Tx针脚了。由于板子和pc的串口接法是相同的,就要使用交叉线来连接了。 直通线接法:开发板Tx连接至DB9的第2针脚,而Rx连
[单片机]
STM32学习总结之------串口<font color='red'>通信</font><font color='red'>USART</font>
STM32串口通信-USART全面讲解
通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个全双工的串行通信设备;UART(Universal Asynchronous Receiver and Transmitter)是在USART基础上裁掉了同步通信功能,只有异步通信。 USART满足外部设备对工业标准NRZ异步串行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率。USART支持同步单向通信和半双工单线通信;还支持局域互连网络、智能卡协议与LrDA SIR ENDEC规范;还支持DMA,可实现高速数据通信。 如下图是USART功能框图,我们将对此框图进
[单片机]
STM32串口<font color='red'>通信</font>-<font color='red'>USART</font>全面讲解
STM32-(08):USART通信基础
USART通信 通用同步异步收发器 它支持同步单向通信和半双工单线通信。它也支持 LIN(局部互联网),智能卡协议和 irDA (红外数据组织 )SIRENDEC 规范,以及调制解调器( CTX / RTS )操作。它还允许许多处理器通信。 用于多缓冲器配置的 DMA 方式,可以实现高速数据通信。 • 全双工的异步通信 • 单线半双工通信 • 使用 DM A 的可配五的多緩冲通信 • 单独的犮送器和接收器使能位 • 检测标志   接 收 缓 冲 器 满   发 送 缓 冲 器 空   传 输 结 束 标 志 • 校验控制   发 送 校 验 位   对 接 收 数 据 进 行 校 验 • 四个饼误检測标志 • 10个带标志的中断源
[单片机]
STM32-(08):<font color='red'>USART</font><font color='red'>通信</font>基础
STM32成长记之USART--232串口通信
此处介绍最简单的USART使用。 USART基本特性: ● 全双工的,异步通信 ● 分数波特率发生器系统 ─ 发送和接收共用的可编程波特率,最高达4.5Mbits/s ● 可编程数据字长度(8位或9位) ● 可配置的停止位-支持1或2个停止位 ● 检测标志 ─ 接收缓冲器满 ─ 发送缓冲器空 ─ 传输结束标志 ● 校验控制 ─ 发送校验位 ─ 对接收数据进行校验 ● 四个错误检测标志 ─ 溢出错误 ─ 噪音错误 ─ 帧错误 ─ 校验错误 ● 10个带标志的中断源 ─ CTS改变 ─ LIN断开符检测 ─ 发送数据寄存器空 ─ 发送完成 ─ 接收数据寄存器满 ─ 检测到总线为空闲 ─ 溢出错误 ─ 帧错误 ─ 噪
[单片机]
STM32成长记之<font color='red'>USART</font>--232串口<font color='red'>通信</font>
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved