0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

454398 来源:wv 2019-10-16 11:06 次阅读

步骤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都会切换。如果您发送其他任何内容,它都不会影响它。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16875

    浏览量

    349869
  • USART
    +关注

    关注

    1

    文章

    195

    浏览量

    30757
  • python
    +关注

    关注

    55

    文章

    4766

    浏览量

    84365
  • STM32F4
    +关注

    关注

    3

    文章

    194

    浏览量

    27970
收藏 人收藏

    评论

    相关推荐

    STM32项目实战:基于STM32F4的智能灯光控制系统(LVGL),附项目教程/源码

    《智能灯光控制系统_STM32F4》项目完整文档、项目源码,私信小雯老师免费领取。STM32项目实战之“智能灯光控制系统”(基于STM32F4)今天小编来分享一个《智能灯光控制系统》的项目案例,硬件
    的头像 发表于 10-17 16:16 531次阅读
    <b class='flag-5'>STM32</b>项目实战:基于<b class='flag-5'>STM32F4</b>的智能灯光控制系统(LVGL),附项目教程/源码

    【GD32 MCU 移植教程】8、从 STM32F4xx 系列移植到 GD32F4xx 系

    GD32F4xx 系列 MCU 是基于 Arm® Cortex®-M4 处理器的 32 位通用微控制器,与 STM32F4xx系列
    的头像 发表于 09-06 09:40 869次阅读
    【GD32 <b class='flag-5'>MCU</b> 移植教程】8、从 <b class='flag-5'>STM32F4</b>xx 系列移植到 GD32<b class='flag-5'>F4</b>xx 系

    STM32F40xxx、STM32F41xxx、STM32F42xxx、STM32F43xxx中文手册

    STM32F4系列单片机中文手册
    发表于 08-08 14:32 2次下载

    请问stm32f4的dsp库里面fir函数如何使用?

    请问在stm32f4 的dsp库里面有好几个关于fir的函数,因为没有源码,我也没有什么关于这个dsp函数的介绍,所以看不懂这些函数怎么用呢。比如说void arm
    发表于 05-17 08:07

    stm32f4批量烧录,用什么软件?

    请问,stm32f4批量烧录,用什么软件
    发表于 05-09 06:02

    stm32f4 FLASH_ProgramDoubleWord函数数据不能写入flash的原因?

    STM32F401芯片,调用flash写函数时,如果写一个字,也就是调用stm32f4 FLASH_ProgramWord函数,能正确写入;如果换成stm32f4 FLASH_ProgramDoubleWord函数,数据不能写
    发表于 04-12 06:50

    stm32F4 64位变量操作异常怎么解决?

    stm32F4 64位变量使用报错解决
    发表于 04-02 07:16

    STM32F4系列USB OTG FS如何使用自定义的USB端点?

    我们公司有一款设备,使用了0X06和0X88这两个端点和上位机通信,现在我计划使用STM32F4系列单片机替代。但是看F4的参考手册,它的端点只有0,1,2,3这四个,请问我可以通过配置寄存器的方式让
    发表于 04-02 07:12

    STM32F4内部的DAC可以分时复用吗?

    请问,STM32F4内部的DAC可以分时复用吗?
    发表于 03-28 08:38

    STM32F4的裸机源码可以移植到linux ARM上运行吗? 具体需要怎么实现呢?

    STM32F4的裸机源码可以移植到linux ARM开发板上运行吗? 具体需要怎么实现呢?
    发表于 03-20 07:00

    Arm®Cortex®-M4 32位MCU GD32F303xB数据手册

    电子发烧友网站提供《Arm®Cortex®-M4 32位MCU GD32F303xB数据手册.pdf》资料免费下载
    发表于 01-14 09:54 0次下载
    <b class='flag-5'>Arm</b>®Cortex®-M<b class='flag-5'>4</b> 32位<b class='flag-5'>MCU</b> GD32<b class='flag-5'>F</b>303xB数据手册

    使用STM32F4芯片验证SPI功能的问题分析

    有人使用STM32F4芯片验证SPI功能。当使用片内两个SPI模块基于中断方式进行收发时,发现总是出现接收数据丢失的情况,貌似总丢失末尾2个数据。代码使用HAL库提供的API函数。这是怎么回事呢?
    的头像 发表于 12-11 09:20 2043次阅读
    使用<b class='flag-5'>STM32F4</b>芯片验证SPI功能的问题分析

    STM32 wavplayer播放单声道音频的处理方法

    最近在使用rtthread 的 audio设备播放wav的音频,MCU使用的是STM32F4,使用过程中发现
    的头像 发表于 11-28 17:17 1415次阅读
    <b class='flag-5'>STM32</b> wavplayer播放单声道音频的处理方法

    STM32里的串口通信

    STM32里的串口通信STM32里,串口通信USARTSTM32可以通过串口和其他设备进
    的头像 发表于 11-10 15:58 2895次阅读
    <b class='flag-5'>STM32</b>里的串口<b class='flag-5'>通信</b>

    基于ARM的32位MCU STM32F103xx数据手册

    电子发烧友网站提供《基于ARM的32位MCU STM32F103xx数据手册.pdf》资料免费下载
    发表于 11-09 09:47 0次下载
    基于<b class='flag-5'>ARM</b>的32位<b class='flag-5'>MCU</b> <b class='flag-5'>STM32F</b>103xx数据手册