草庐IT

HAL_UART_Transmit_DMA

全部标签

android - 让 Android 使用新的音频 HAL 需要什么

我正在编写一个新的Android音频HAL,让我的应用程序将音频提供给其他应用程序,让我的手持远程麦克风输入到达谷歌应用程序。本质上是一条虚拟音频线。这是一项正在进行的工作。我可能会覆盖AUDIO_DEVICE_IN_BACK_MIC,但这是开放的建议。我对如何确保Android使用此HAL进行输入有疑问。我需要替换audio.primary.default.so还是应该将其保留为audio.vcable.default.so?更具体地说:如果我不替换主要的,Android将如何知道使用我的HAL而不是主要的?更新:在这项工作中我真的需要任何帮助。任何指示都是有帮助的。我已经编写了一个

STM32串口UART5进入不了接收中断

在一个项目里,串口123均使用了,剩下uart4和5未使用。因新加入功能,需要再用1个串口,当时粗略看了手册,uart4和uart5只是不能同步通信,其他功能正常。于是就近使用了PC12和PD2引脚对应UART5。配置好串口5的初始化代码和中断回调函数后,测试无法进入接收中断,现象为一收数据立即hardfault,然后过一会看狗就复位了。在CSDN上查了很多关于UART4和UART5的资料,大多指向2个问题:ORE溢出导致反复进入中断;启动文件里没有加入uart4和uart5的中断函数ORE溢出导致反复进入中断和本例不相符,本例是根本进入不了中断。仔细检查启动文件,使用的是startup_st

c++ - C++14及以上的stm32 hal库警告

我也在STM32社区论坛中发布了相同的question,但没有收到回复。我在启用了C++14的项目中使用stm32HAL库。它向我发出以下警告,我无法摆脱。../platform/stm32/l4/STM32L4xx_HAL_Driver/Inc/stm32l4xx_hal_rcc.h:735:57:warning:conversiontovoidwillnotaccessobjectoftype'volatileuint32_t{akavolatilelongunsignedint}'UNUSED(tmpreg);\当调用__GPIOX_CLK_ENABLE()或__HAL_RCC_

【FPGA】UART串口通信---基于FIFO

目录前言一丶FIFO介绍1.什么是FIFO?2.FIFO分类3.FIFO主要参数4.测试5.仿真二丶UART引入FIFO1.模块原理图2.代码设计3.仿真与分析三丶上板验证四丶源码前言我们在上一章完成了UART串口通信的收发模块,这一章我们将FIFO引入进来,使用FIFO进行缓存数据,来连接串口通信的收发模块一丶FIFO介绍1.什么是FIFO?FIFO即FirstInFirstOut,是一种先进先出数据存储、缓冲器,我们知道一般的存储器是用外部的读写地址来进行读写,而FIFO这种存储器的结构并不需要外部的读写地址而是通过自动的加一操作来控制读写,这也就决定了FIFO只能顺序的读写数据2.FIF

STM32 HAL库串口同时收发,接收卡死?

STM32使用HAL库串口同时收发,使用踩坑史==!......by矜辰所致更新使用freertos时问题的说明与解决 2023/4/14目录前言一、HAL库串口收发1.1串口发送1.2串口接收1.2.1标准库接收1.2.1HAL库接收HAL库接收方式一HAL库接收方式二二、收发同时串口卡死?2.1问题说明2.2尝试的处理方式2.2.1清除错误标志位2.2.2串口溢出错误2.2.3HAL库的半双工处理?三、使用FreeRTOS后的新情况结语前言对于STM32串口的使用,确实很简单使用STM32CubeMX做好初始化,就可以直接使用了。但是最近在某些产品上使用串口同时收发的时候,发现有时候

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控制