完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用DMA方式可以减轻CPU负担,此例子相关配置可以参考
STM32CubeMX串口接收数据(中断方式,HAL库)(1)设置USART1中断,NVIC配置如下图 (2)设置USART1的DMA,如下图 注意:要将RX的模式设置为circular ,否则只能接收一次,如果这里不作设置,网上也有其他方法介绍代码实现多次接收的,但既然用到了STM32CubeMX就尽量发挥最大作用吧! (3)生成项目工程 (4)在main.c里设置变量以及启动DMA接收 /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ uint8_t aRxBuffer1[1]; //接收缓存 uint8_t aTxBuffer[] = "*********SENDING DATA USING USART1 with DMA***********rn"; /* USER CODE END PV */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ HAL_UART_Receive_DMA(&huart1,aRxBuffer1,1);// 启动DMA接收 HAL_UART_Transmit_DMA(&huart1,aTxBuffer,sizeof(aTxBuffer));// DMA发生数据 while (1) { } /* USER CODE END WHILE */编写USART1接收中断处理函数void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 注意这里和只采用中断方式的不同,配置了循环模式后可以不用自己手动再次启动DMA接收 linux下(windows下是一样的)使用串口助手cutecom效果如下: 不足之处: 如果一开始不使能串口中断,那么DMA接收完成后就不会进入HAL_UART_RxCpltCallback函数,虽然有单独的DMA中断处理函数DMA2_Stream2_IRQHandler 和 DMA2_Stream7_IRQHandler ,简单试了一下还未实现预定效果,有待改进,也请同道小伙伴告知~^_^ |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1632 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1559 浏览 1 评论
985 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1605 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
655浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
525浏览 3评论
540浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
512浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 22:09 , Processed in 0.634491 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号