网上使用HAL串口时很多都没有实现不定长数据的接收,要么是限定数据长度,要么是加“0x0a0x0d”来控制接收完成,找了很久都没有真正找到一个能用的,在很多通信中不可能是定义的,或是加上“0x0a0x0d”来实现的,由于项目需要,自己阅读STM32HAL的文档,写出了一个Demo程序,可以实现回显功能(就是通过给STM32发送不定长的数据,可以实现一模一样接收发送的数据),在STM32F429IGT6上验证过,跑了一天没有出现丢失数据的问题,使用DMA发送与接收方式,可以释放CPU部分运算资源,程序中的UART_RX_BUF_SIZE定义为128,就是一次最大接收为128,我在项目中通过改为2048也可以通过一次接收2k的数据,代码量很少,才200多行,很容易看懂,可以移植到不同系列的STM32上,希望这程序能帮助到曾经跟我一样到处找资源解决HAL库与标准库串口使用上不同而痛苦的朋友们
2024/4/29 4:56:22 1.37MB stm32
1
STM32F407ADC采集信号通过DMA发送给内存,并且通过串口发出,已调试通过
2023/11/24 0:49:01 10.73MB ARM stm32 ADC
1
spi主机程序STM32CubeMx生成Hal库DMA发送接收intmain(void){/*USERCODEBEGIN1*//*USERCODEEND1*//*MCUConfiguration--------------------------------------------------------*//*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/HAL_Init();/*USERCODEBEGINInit*//*USERCODEENDInit*//*Configurethesystemclock*/SystemClock_Config();/*USERCODEBEGINSysInit*//*USERCODEENDSysInit*//*Initializeallconfiguredperipherals*/MX_GPIO_Init();MX_DMA_Init();MX_USART1_UART_Init();MX_SPI5_Init();/*USERCODEBEGIN2*/// HAL_UART_Receive_DMA(&huart1,rxBuffer,BUFFER_SIZE); /*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/while(1){ HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_RESET); spi_tx[0]=6; spi_tx[1]=7; spi_tx[2]=8; spi_tx[3]=9; memset(spi_rx,0,BUFFER_SIZE); HAL_SPI_TransmitReceive_DMA(&hspi5,spi_tx,spi_rx,BUFFER_SIZE); HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_SET); HAL_Delay(1000);/*USERCODEENDWHILE*//*USERCODEBEGIN3*/}/*USERCODEEND3*/}
2023/11/1 6:11:26 33.37MB spi DMA 主机 STM32CubeMX
1
STM32_HAL+串口+DMA发送和接收,可做项目研发,串口用DMA发送和接收,减轻CPU负担。
2023/8/2 13:10:21 32.51MB STM32HAL库 串口DMA DMA发送+接收
1
使用stm32f103RCT6串口DMA空闲中断接收,DMA发送完整源码,修改串口只需修改对应宏定义即可
2023/7/1 16:21:09 2.91MB stm32F103 串口 DMA
1
STM32F207串口例子串口1,2为DMA发送与接收串口3,4没有使用DMA。
工程为KEILC。
4个串口发送接收都在硬件板是测试过的。
需要留意的是我的硬件板的晶振是25M,如果你的晶振不一样,需要在system_stm32f2xx.c文件中修改#ifndefRMII_MODE/*Systemclockfrequencyconfiguredfor120MHz****************************//*PLL_VCO=(HSE_VALUEorHSI_VALUE/PLL_M)*PLL_N*/#definePLL_M25
2023/2/22 22:26:24 364KB STM32F207 串口1 DMA源码 PRINTF
1
STM32F407标准库实现6路串口配置,DMA发送,中缀接收
2022/12/3 13:50:13 552KB STM32F407 标准库 6路串口 DMA发送
1
STM32F103单片机上实现,串口2经过DMA接收数据,串口1将串口2接收到的数据经过DMA发送出去。
2018/2/5 14:08:13 595KB STM32 103 接收 DMA
1
1、STM32f103单片机串口完成中缀+DMA接收采用串口完成中缀触发DMA接收,发送采用DMA发送完成中缀切换485使能接口。
115200bps下20个字节以内的相互通讯响应周期为5ms'
2017/4/24 1:17:48 5KB DMA STM32f103 串口完成中断
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡