草庐IT

HAL_UART_Transmit_DMA

全部标签

STM32CubeMX-HAL库-UART串口接收中断回调函数只能收发一次原因及解决方案

 在项目中我想通过非阻塞的方式接收发送一段来自串口的数据,于是使用了HAL_UART_Receive_IT函数,但跑起来发现只能收发一次,再次收发超时接收不到。网上使劲搜但没搜到啥有用的结果,那只能自己捣鼓了。一开始怀疑是硬件的问题,运行Debug,发现只能清除一次,只能在while(1)里运行清除数据了。/*USERCODEBEGIN0*/   #defineLED_ON()HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET)   #defineLED_OFF()HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO

STM32—ADC和DMA的应用之电流检测(第二部分:电流检测电路与数据处理)

文章目录前言一、电流检测原理1.霍尔效应2.CC6902电流传感器二、电流检测电路三、数据处理前言前一部分介绍了如何配置ADC和DMA,这一部分介绍在硬件部分如何实现电流检测以及检测到电流后的数据处理。一、电流检测原理1.霍尔效应在半导体上外加与电流方向垂直的磁场,会使得半导体中的电子与空穴受到不同方向的洛伦兹力而在不同方向上聚集,在聚集起来的电子与空穴之间会产生电场,电场力与洛伦兹力产生平衡之后,不再聚集,此时电场将会使后来的电子和空穴受到电场力的作用而平衡掉磁场对其产生的洛伦兹力,使得后来的电子和空穴能顺利通过不会偏移,这个现象称为霍尔效应。而产生的内建电压称为霍尔电压。2.CC6902电

STM32—ADC和DMA的应用之电流检测(第二部分:电流检测电路与数据处理)

文章目录前言一、电流检测原理1.霍尔效应2.CC6902电流传感器二、电流检测电路三、数据处理前言前一部分介绍了如何配置ADC和DMA,这一部分介绍在硬件部分如何实现电流检测以及检测到电流后的数据处理。一、电流检测原理1.霍尔效应在半导体上外加与电流方向垂直的磁场,会使得半导体中的电子与空穴受到不同方向的洛伦兹力而在不同方向上聚集,在聚集起来的电子与空穴之间会产生电场,电场力与洛伦兹力产生平衡之后,不再聚集,此时电场将会使后来的电子和空穴受到电场力的作用而平衡掉磁场对其产生的洛伦兹力,使得后来的电子和空穴能顺利通过不会偏移,这个现象称为霍尔效应。而产生的内建电压称为霍尔电压。2.CC6902电

stm32通过hal库使用定时器

文章目录实验目的实验材料硬件软件原理项目制作CubeMX配置1、时钟配置2、配置GPIO3、配置定时器4、配置串口5、按图配置好路径,生成项目代码编写1、开启定时器2、编写中断函数实验现象总结参考资料实验目的设置定时器,每隔5秒向串口助手发送HelloWorld,每隔两秒闪烁LED灯。实验材料硬件面包板一块CH340模块STM32F103C8T6最小开发版杜邦线若干LED灯一个软件KEIL5STM32CubeMX原理在STM32芯片中不同数量的定时器,分为系统定时器,高级定时器,通用定时器以及基本定时器。本实验使用到的是通用定时器。通用定时器TIM2/3/4/5是一个16位的可以向上/下计数的

stm32通过hal库使用定时器

文章目录实验目的实验材料硬件软件原理项目制作CubeMX配置1、时钟配置2、配置GPIO3、配置定时器4、配置串口5、按图配置好路径,生成项目代码编写1、开启定时器2、编写中断函数实验现象总结参考资料实验目的设置定时器,每隔5秒向串口助手发送HelloWorld,每隔两秒闪烁LED灯。实验材料硬件面包板一块CH340模块STM32F103C8T6最小开发版杜邦线若干LED灯一个软件KEIL5STM32CubeMX原理在STM32芯片中不同数量的定时器,分为系统定时器,高级定时器,通用定时器以及基本定时器。本实验使用到的是通用定时器。通用定时器TIM2/3/4/5是一个16位的可以向上/下计数的

STM32串口中断接收HAL库超详解析

之前一直用的固件库跑c8t6和zet6,现在有幸接触到stm32H743用到HAL库,学习嘛都是踩坑,csdn,然后...理解底层库的代码本人有幸遇到了H7的串口中断接收只进去一次的Bug,于是马上csdn,才发现网上全是在回调函数里写接收处理的逻辑,而我不一样,可能我比你们帅我就要把接收逻辑写在中断服务函数里面(狗头),其实是因为最先接触的板子是103的c8t6所有例程都是在服务函数里处理的,所有养成了习惯,做H7的工程时就直接移植了;但找了2天我也没在网上没有找到将逻辑写在服务函数里面的,于是乎,花费一天时间看HAL库的串口驱动程序,终于!调通了,话不多说,上!代!码!串口初始化和固件库的

STM32串口中断接收HAL库超详解析

之前一直用的固件库跑c8t6和zet6,现在有幸接触到stm32H743用到HAL库,学习嘛都是踩坑,csdn,然后...理解底层库的代码本人有幸遇到了H7的串口中断接收只进去一次的Bug,于是马上csdn,才发现网上全是在回调函数里写接收处理的逻辑,而我不一样,可能我比你们帅我就要把接收逻辑写在中断服务函数里面(狗头),其实是因为最先接触的板子是103的c8t6所有例程都是在服务函数里处理的,所有养成了习惯,做H7的工程时就直接移植了;但找了2天我也没在网上没有找到将逻辑写在服务函数里面的,于是乎,花费一天时间看HAL库的串口驱动程序,终于!调通了,话不多说,上!代!码!串口初始化和固件库的

STM32实战总结:HAL之SPI

SPI基础内容参考:嵌入式常见接口协议总结_路溪非溪的博客-CSDN博客SPI的补充:通信的起始和停止信号NSS又由高变低,是SPI通信的起始信号。NSS由低变高,是SPI通信的停止信号,表示本次通信结束。IIC的任何一个设备既可以作为主设备,也可以作为从设备,但是SPI主从是事先确定的。关于SPI时序图有一些疑问,有的地方说,发送和接收是同时进行的,但是有的老师又说是在一个边沿发送,但是在另一个边沿接收?我自己看时序图,都只是说在某个边沿采集,并没有提到一个边沿发送一个边沿接收的问题。其实这里面的接收有两个意思,一个是主机的发送和接收,一个是主机发送,从机的接收。数据在边沿被采集,发送数据应

STM32实战总结:HAL之SPI

SPI基础内容参考:嵌入式常见接口协议总结_路溪非溪的博客-CSDN博客SPI的补充:通信的起始和停止信号NSS又由高变低,是SPI通信的起始信号。NSS由低变高,是SPI通信的停止信号,表示本次通信结束。IIC的任何一个设备既可以作为主设备,也可以作为从设备,但是SPI主从是事先确定的。关于SPI时序图有一些疑问,有的地方说,发送和接收是同时进行的,但是有的老师又说是在一个边沿发送,但是在另一个边沿接收?我自己看时序图,都只是说在某个边沿采集,并没有提到一个边沿发送一个边沿接收的问题。其实这里面的接收有两个意思,一个是主机的发送和接收,一个是主机发送,从机的接收。数据在边沿被采集,发送数据应

STM32F407 ADC多通道采样+DMA

我加入工作室参加的第一个比赛是第五届中国高校智能机器人创意大赛,我参加的赛项是开放部件组轮式自主格斗机器人。经历了没日没夜的调试,无数次欣赏凌晨四点半的夜晚,感受着每天就睡两三个小时伴随着疲惫的开心。在我和队友的共同努力之下,我们的成绩也很优异,获得了预期的奖项。虽然原本我还有一个电控队友,但是因为疫情他没能和我一起参与备赛,这是令人可惜的一点。但人生总要向前看,备赛最重要的当然是过程,结果只是水到渠成的必然,宝贵的经历是什么都无法替代的,它使我成长,助我进步。相信我们在以后也会继续向前的。在先学习DMA之前,我要先了解ADC的原理,然后在ADC程序实现的基础上使用DMA模式,可以加快数据采集