OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3664|回复: 5

HAL库串口DMA接受并将数据按帧头存放进数组

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-4-14
在线时间
4 小时
发表于 2018-7-21 12:03:38 来自手机 | 显示全部楼层 |阅读模式
接受的是定长帧,25字节,波特率115200,HAL库
遇到的困难是:1.HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size),这个函数中,如果SIZE设置为25时,帧头存放在数组的任意位置,但是希望能够pData[0]中存放帧头

2.自己曾经想过的想法的是,先把SIZE设置为1,然后找到帧头后,将SIZE设置为24,然后再设置为25,这种方法用HAL_UART_Receive_DMA()试过,也直接改变过几个寄存器,但是都没有成功
3.尝试2,找到帧头后,HAL_UART_DMAStop(),然后再HAL_UART_Receive_DMA,但是这种方法帧头位置直接刷新
4.尝试3,在HAL_UART_RxCpltCallback()中,找到帧头,然后把数据给到另外应该数组data1中,然后对data1排序,但是不知道是波特率太快还是怎么,data1并不会刷新,而且会进入HardFault_Handler()中

希望大佬们指点一二,萌新一定虚心接受
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-4-14
在线时间
4 小时
 楼主| 发表于 2018-7-21 14:03:11 | 显示全部楼层
原子哥,求助呀,用的是ALIENTEK,F103ZET6的那个开发板
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-4-14
在线时间
4 小时
 楼主| 发表于 2018-7-22 16:18:09 | 显示全部楼层
!!!!!!!!!
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-4-14
在线时间
4 小时
 楼主| 发表于 2018-7-22 20:34:08 | 显示全部楼层
!!!!!!!求助呀
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-4-14
在线时间
4 小时
 楼主| 发表于 2018-7-24 09:42:23 | 显示全部楼层
!!!!
回复 支持 反对

使用道具 举报

7

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2033
金钱
2033
注册时间
2013-3-27
在线时间
203 小时
发表于 2018-7-24 10:15:26 | 显示全部楼层
这个简单,使用串口空闲中断,我很多项目都是这样用,网上相关帖子也很多,DMA的size最好是大于1.5倍你要接收的数据
可参考 https://www.cnblogs.com/luckytimor/p/7168810.html
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-14 23:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表