草庐IT

CubeMX-DMA

全部标签

GD32实现串口空闲(IDLE)中断 + DMA机制接收数据

前言串口功能在单片机开发中,是比较常用的外设,熟练使用串口功能也是驱动开发必备的技能之一。DMA是一种CPU辅助手段,可以在CPU不参与的情况下,是做一些辅助CPU的事情,如通常的数据搬运。在没有DMA之前,数据读取时,需要CPU的处理,在多任务处理时,增加资源紧缺(CPU调度);引入DMA之后,数据可以直接先进入DMA中处理,然后通过相应的标志,在需要的时候去DMA拿去即可,这样就极大的减轻CPU负担,提高了CPU的利用效率,有更多的时间去处理其它的事情。本文讲的即是利用串口空闲(IDLE)中断+DMA的机制来处理接收的数据。关于空闲的概念我在之前文章模拟串口收发驱动(采用IDLE信号机制)

(实测可用)STM32 CubeMx安装教程

一、STM32CubeMX简介(1)STM32是CortexARM内核架构的芯片,中文名称为意法半导体,是目前市面上应用自广泛的MCU芯片。STM32CubeMX是ST意法半导体近几年来大力推荐的STM32芯片图形化配置工具,用于取代前期的函数库,图形化界面向导更容易新手上手,以及初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32全系列芯片。(2)目前开发者初始化STM32芯片的配置时,很多人选择STM32CubeMX直接生成,后期的应用层代码仍然使用KEILMDK编程软件进行开发。二、安装STM32CubeMX必须具备的条件(1)JRE(J

STM32 RS485串口DMA发送问题记录及调试解决

文章目录@[toc]STM32RS485串口DMA接收及发送,问题记录及调试解决1.数据接收2.数据发送2.1调用HAL_UART_Transmit()进行发送2.2调用HAL_UART_Transmit_DMA()进行发送STM32RS485串口DMA接收及发送,问题记录及调试解决芯片型号:STM32F767IGT6、SP3485,如图1、图2所示。图1主芯片型号图2485芯片型号开发环境:KeiluVision5、STM32CubeMX,如图3、图4所示。图3KeiluVision版本信息图4STM32CubeMX版本信息之前与上层设备的通讯协议是基于MODBUSTCP进行地相应开发,但因

【LVGL移植】STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT ST7735S跑LVGL图形demo

【LVGL移植】STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFTST7735S屏幕跑LVGL图形demo🎬运行LVGL按键组件demo✨基于STM32CubeMX配置工程是因为方便移植,只要是STM32芯片,拿到我的这个工程源码就可以根据自己的stm32芯片,自行通过STM32CubeMX工具软件进行工程配置,并将我的工程中的屏幕驱动文件拷贝到自己的工程目录下,修改2个驱动函数代码就可以轻松点亮。📌相关篇《STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFTLCD128X160ST7735S屏幕》✨版本说明:基于LVGL8.3版本裸机移植的。不包含操

[HAL]STM32 SPI+DMA驱动WS2812

该程序是纯手敲,非Cube生成!所有代码均注释。源码在文章后面获取WS2818简介Keyword:单线通讯、归零码、Reset、RGB顺序RGB一共有24bit位->相当于驱动一个灯要24bit位->驱动若干个灯要24*nbit位,通过Reset码决定数据终止(保持)24bit位应该如何发送?可见:表示低电平需要T0H和T0L的配合,其关键在于高电平的时间,图中所示T0H时间为0.85us±150nsQ:怎么控制高低电平的时间数据发送速度可达800Kbps,就是1.25us发送一位数据,因为协议有一定的兼容性,所以实际上一个位的周期在1.25us±300ns之间都能识别到,因为是us级延时,所

[CubeMX项目]基于STM32的平衡小车(硬件设计)

一直以来我都想在本科毕业前完成一个电机相关的实验,之前看了网上比较火热的自平衡莱洛三角形项目后,决心先做一个类似的小项目。因此,我通过学习大量前辈的项目案例,完成了该项目。本项目的特点是:在需要通信的部分,全部采用STM32自带的硬件接口,使用自己设计PCB,有利于后期调试和拓展。文章目录1总体设计方案1.1平衡车硬件需求2原理图和硬件选中2.1主控芯片STM322.2驱动模块TB66122.3GB520电机2.4姿态传感器MPU60502.5蓝牙模块2.60.96OLED2.7超声波模块2.8整体设计3PCB设计1总体设计方案1.1平衡车硬件需求基于STM32的平衡小车所需的硬件模块主要有九

基于国产FPGA紫光同创Titan2 PG2T390H的PCIe链式DMA控制器设计

文章目录背景介绍逻辑方案性能测试软件驱动相关帖子技术交流背景介绍    近年来,国产FPGA厂商发展迅速,紫光同创、安路等公司已经量产28nm、几k~几百k的FPGA逻辑芯片,在自主可控的大环境下,国产FPGA厂商给了我们一个更优的选择。虽然,国产FPGA厂商在芯片逻辑资源、工艺、eda工具等方面取得长足进步,但是在IP生态上仍然有很长的路要走。在此之前,FPGA开发者需要自己独立开发一些官方不能提供的IP,虽然道阻且长,但是在此过程中我们可以学到更多知识,掌握更多设计技巧。    本文简要介绍基于紫光同创Titan2系列PG2T390H芯片的链式DMA控制器实现框架,该架构支持多通道,每个通

STM32CubeMX学习笔记(43)——USB接口使用(CDC虚拟串口)

一、USB简介USB(UniversalSerialBUS)通用串行总线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。USB接口支持设备的即插即用和热插拔功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。USB发展到现在已经有USB1.0/1.1/2.0/3.0等多个版本。目前用的最多的就是USB1.1和USB2.0,USB3.0目前已经开始普及。STM32F103自带的USB符合USB2.0规范,不过STM32F103的USB都只能用来做设备,而不能用作主机。标准USB共四根线组成,除VCC/GND外,另外为D

STM32(8)-DMA+串口实现双开发板数据收发

我通过学习江科大的视频以及CSDN一位大佬的博客,在下面记录下我对DMA的理解。文章目录一、存储器、寄存器二、具体代码1.STM32(发送方)DMA配置(1)作为发送方,自然数据要从内存发往串口数据寄存器去,我定义一个数组,并编写两个函数,分别返回温度和湿度数值,作为数组里的元素。(2)配置DMA,方向是从内存到外设寄存器(3)配置DMA初始化(4)DMA开启传输函数(5)主程序2.CH32V307(接收方)采用普通的串口中断接收3.CH32V307(接收方)DMA配置(1)作为接收方,自然数据要从串口数据寄存器发往内存去,因此DMA配置要更改。(2)DMA启动程序(3)主程序三、结果:四、一

HAL库 串口空闲中断+DMA接收不定长数据 详解及踩坑

文章目录前言一、串口及DMA基础配置二、HAL_UARTEx_ReceiveToIdle_DMA()函数功能三、使用HAL_UARTEx_ReceiveToIdle_DMA()函数1.重新实现回调函数HAL_UARTEx_RxEventCallback2.调用接收函数四、踩坑测试流程原因总结前言本文需要用到HAL库的HAL_UARTEx_ReceiveToIdle_DMA()函数,如果编辑器提示找不到函数,可以尝试更新HAL库至最新版本。串口接收不定长数据是串口的常见应用。最近的项目需要用到modbus协议,由于不经常使用HAL库,配置串口接收时遇到了一些问题。在此记录一下,希望能帮助到一些人