草庐IT

CubeMX-DMA

全部标签

STM32的ADC+DMA采集

目录前言一、ADC配置思路二、DMA配置思路三、ADC+DMA程序实现1.标准库版本1.1配置相关IO口。1.2配置ADC1.3配置DMA1.4开始ADC+DMA采集2.HAL库版本2.1cubemx配置2.2代码移植2.3结果前言本篇记录关于32的ADC的DMA采集,包含ADC外设配置思路、DMA配置思路,以及标准库和HAL库两个版本的程序实现。一、ADC配置思路ADC配置需要考虑哪些呢?首先最先想到的是应该是它需要IO做模拟输入,它有分辨率,采样时间等等的要求,若是多个ADC通道采集,那么还需要考虑不同通道的顺序转换,因为几个通道共用一个ADC外设的DR寄存器。按照惯例,要使用片上外设,首

STM32CubeMX配置STM32F407的硬件IIC采集AHT20的温湿度

文章目录前言一、ATH20手册连接与注意事项二、STM32CubeMX配置硬件IIC三、具体实现代码前言最近在使用奥松的AHT20对环境温湿度进行采集。本例程采用ST的硬件IIC进行通讯,具体操作如下。一、ATH20手册连接与注意事项手册连接:AHT20数据手册注意事项:1、手册中器件地址是错误的,如下图:此器件地址实际应该是0x70,而不是0x38。2、在使用模拟IIC读取温湿度数值时,一定注意在停止信号前发送“NACK”非应答信号,而中间读取完一个字节发送的是“ACK”应答信号。如下图所示:但是采用HAL库配置的硬件IIC,则直接使用如下两个相关函数即可,无需关注此应答信号。HAL_Sta

STM32 DMA1和DMA2通道一览表、STM32F103C8T6定时器通道对应的引脚

TIM1_BRK_IRQn       =24,   TIM1_UP_IRQn        =25,   TIM1_TRG_COM_IRQn     =26,  TIM1_CC_IRQn        =27,  TIM2_IRQn         =28,  TIM3_IRQn         =29,  这个函数TIM_SetCompare1,这个函数有四个,分别是TIM_SetCompare1,TIM_SetCompare2,TIM_SetCompare3,TIM_SetCompare4。位于CH1那一行的GPIO口使用TIM_SetCompare1这个函数,位于CH2那一行的GPIO

performance - NET_DMA TCP 在 Linux 中接收卸载

Linux内核可以选择启用TCP接收副本卸载功能(CONFIG_NET_DMA)。我用了iperf(TCP窗口大小=250KBytes和缓冲区长度=2MBytes)和oprofile在三种情况下测试性能:启用和不启用NET_DMA,启用NET_DMA和sk_rcvlowat设置为200KB。结果如下:禁用NET_DMA:带宽可以达到930Mbps,__copy_tofrom_user消耗36.1%的CPU时间。启用NET_DMA:带宽小于上述情况40Mbps(890Mbps),__copy_tofrom_user消耗33.5%的CPU时间。启用NET_DMA(sk_rcvlowat=2

Linux DMA子系统(3):DMA设备驱动(consumer)

目录1.前言2.重要的结构体2.1 structdma_slave_config2.2 structdma_async_tx_descriptor3.设备驱动使用DMAEngine的方法3.1 分配一个DMA从通道3.2设置DMA通道的具体参数3.3 获取描述符3.4 提交传输并启动传输3.5等待传输完成4.参考文章1.前言上文从DMA控制器驱动的角度去分析了DMAEngine,即从provider的角度,本文将从需要使用DMA传输的设备驱动的角度,即consumer的角度去分析DMAEngine,看看DMAEngine为clientdriver提供了哪些功能和API。2.重要的结构体2.1 

【STM32+cubemx】0029 HAL库开发:HMC5883L磁力计的应用(电子指南针)

今天我们来学习电子磁力计HMC5883L的使用。先介绍磁力计的基础知识,再给一个获取磁力计数据的例子,最后讲解HMC5883L磁力计的校准,以及一些使用中的经验。1)HMC5883L磁力计的基础知识磁力计是用来测量磁场强弱(也就是磁感应强度)的,磁感应强度是一个矢量,我们本篇使用的HMC5883L可以用来测量三个轴向的磁感应强度。磁感应强度的标准单位是特斯拉(Tesla),也有用高斯(Gauss)来表示的,换算关系是1Tesla=10000Gauss。当垂直于磁场方向长度为1m的导体,通过1A电流时,所受磁场的作用力的大小为1N,则该磁场的磁感应强度为1T。磁力计可以用来检测地球磁场方向,也就

stm32直流电机PID控制hal库(Cubemx)

stm32直流电机PID控制hal库(Cubemx),一步步手把手教你怎么配置cubemx怎么写代码。未对pid就行深入解析,不过相信您通过配置和写代码以后大概可以知道pid的主要作用。文章目录前言一、进行pwm输出和相关引脚的配置1.PWM输出配置2.电机控制引脚配置3.用户代码文件编写二、通过encoder来获取当前转速1.编码器encouder配置2.定时器中断配置3.串口发送配置4.霍尔编码器输出说明5.用户代码编写三、PI控制速度1.简单验证并调试2.实现电机的正反转再次修改it.c文件中的中断服务函数修改control.c文件如下:(齐全代码):3.通过上位机打印波形四、pid控制

stm32 USB复合设备 cubeMX库一键生成 多路CDC串口 HID鼠标键盘 Composite Device

最近有个需求,需要同时用usb键盘鼠标和虚拟串口等,因为平时没怎么研究过usb协议,所以自己写复合设备一直没有成功,然后正巧在github上看到了一个stm32的一个usb复合设备库,可以快速配置usb组合设备,并且支持超级多路串口Gihub地址https://github.com/alambe94/I-CUBE-USBD-Composite安装在githubrrelease页面下载.pack文件,要是github打不开这里有分享链接库文件CubeMX中选择管理软件包导入刚才下好的.pack文件 启用选择组件选择你需要的Core是必须的,然后你需要哪些功能就需要启用,多设备一定要启用COMPI

【STM32CubeMX+HAL库】I2C详解+读写EEPROM

在之前的标准库中,STM32的硬件IIC非常复杂,更重要的是它并不稳定,所以都不推荐使用。但是在我们的HAL库中,对硬件IIC做了全新的优化,使得之前软件IIC几百行代码,在HAL库中,只需要寥寥几行就可以完成 那么这篇文章将带你去感受下它的优异之处。本文将详细地讲解I2C协议,并基于I2C来读写EEPROM模块以达到练习的目的通过本篇博客您将学到:I2C的基本原理STM32CubeMX创建I2C例程I2C函数库(HAL)AT24C256芯片原理及读写方法I2C简介 IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连

STM32CubeMX配置串口DMA传输实现不定长数据收发

串口简介串口是全双工的串行通信协议。串口通信指串口按位(bit)发送和接收字节(一个字节有8位)。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。串口通信协议是基于串口使得通信双方能够相互沟通信息的一种约定,其定义了双方遵循的协议数据帧格式和其传输方式。因为串口通信没有时钟线,说设备双方必须约定好相同的波特率,这样才能保证数据收发准确无误。常见的波特率有4800、9600、115200等。起始位、停止位数据包从起