你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32cubef1xx 串口接收完成不了,进不了回调

[复制链接]
captainliuy 提问时间:2015-3-30 11:38 /
芯片stm32f103zet,用串口1和串口2;
串口1,DMA循环模式接收1字节,处理用户输入命令,
串口2,DMA普通模式接收512字节,解析GPS信息,

问题1:串口2启动DMA,HAL_UART_Receive_DMA(&huart2, &GPSRxBuff[0], 512); 只可以完成一次,下次启动不能完成。
附件为工程






问题说明见链接,解决办法
在启动DMA时加入清除错误标志的语句
  1. void GPS_UART_Start(void)
  2. {
  3.     /* Start the receiver */
  4.     __HAL_UART_CLEAR_OREFLAG(&hGPS);
  5.         if(hGPS.State == HAL_UART_STATE_READY || hGPS.State == HAL_UART_STATE_BUSY_TX)
  6. //                HAL_UART_Receive(&hGPS, &GPSRxBuff[0], 512,1000);
  7.                 HAL_UART_Receive_DMA(&hGPS, &GPSRxBuff[0], 511);
  8. }
复制代码


stm32_uart2.rar

下载

17.72 KB, 下载次数: 14, 下载积分: ST金币 -1

收藏 评论8 发布时间:2015-3-30 11:38

举报

8个回答
netlhx 回答时间:2015-3-30 11:57:04
内存增量设置好了么
captainliuy 回答时间:2015-3-30 12:21:21
netlhx 发表于 2015-3-30 11:57
内存增量设置好了么
  1. hdma_usart2_rx.Instance = DMA1_Channel6;
  2.     hdma_usart2_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
  3.     hdma_usart2_rx.Init.PeriphInc = DMA_PINC_DISABLE;
  4.     hdma_usart2_rx.Init.MemInc = DMA_MINC_ENABLE;
  5.     hdma_usart2_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
  6.     hdma_usart2_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
  7.     hdma_usart2_rx.Init.Mode = DMA_NORMAL;
  8.     hdma_usart2_rx.Init.Priority = DMA_PRIORITY_LOW;
  9.     HAL_DMA_Init(&hdma_usart2_rx);
复制代码
沐紫 回答时间:2015-3-30 13:19:00
谢谢楼主~
captainliuy 回答时间:2015-3-30 13:36:23

Cube确实很好用,我是初次用STM32,对开发帮助很大,但是也有些问题,希望你们能收集这些问题,让我们少走弯路。
这是前面发的一个帖子,关于Can的一个bughttps://www.stmcu.org.cn/module/forum/thread-600734-1-1.html
wambob 回答时间:2015-3-30 14:16:37
谢谢分享
数码小叶 回答时间:2015-4-7 19:15:21
学习学习
数码小叶 回答时间:2015-4-7 19:15:36
谢谢分享
HenryChen 回答时间:2015-7-8 12:08:34
谢谢楼主分享

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版