搜索
bottom↓
回复: 11

STM32CUBEMX如何改变下次UART发送和接收长度

[复制链接]

出0入0汤圆

发表于 2017-11-14 09:07:22 | 显示全部楼层 |阅读模式
使用STM32F030,uart1和uart2.接收和发送使用DMA
while(UART_Receive_DMA(&huart1,uart1receivedata,12)!=HAL_OK)
可以正常接收到12个数据
while(HAL_UART_Transmit_DMA(&huart1,(uint8_t*)checkmonenycmd,8)!=HAL_OK))
可以正常发送8个数据
但是后面想再接收10个数据的时候.上位机要发送两次以上才可以
while(HAL_UART_Receive_DMA(&huart1,(uint8_t*)readcardcmd,10)!=HAL_OK)  要发两次以上才可以接受到10个数据。赶紧是不是接收长度不能简单改变,求解

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入42汤圆

发表于 2017-11-14 09:18:56 | 显示全部楼层
DMA跟中断一起才是好基友

出0入0汤圆

发表于 2017-11-14 09:19:52 | 显示全部楼层
自己固定成接收到一个数据就中断,剩下的超时、串口数据协议的处理再自己用函数处理即可

出0入0汤圆

 楼主| 发表于 2017-11-14 09:20:34 | 显示全部楼层
my_avr 发表于 2017-11-14 09:18
DMA跟中断一起才是好基友

uart开了中断,DMA也开了

出0入0汤圆

 楼主| 发表于 2017-11-14 09:24:20 | 显示全部楼层
bailangcn 发表于 2017-11-14 09:19
自己固定成接收到一个数据就中断,剩下的超时、串口数据协议的处理再自己用函数处理即可 ...

cube提供这么方便的块接收。不用浪费啊

出0入75汤圆

发表于 2017-11-14 09:33:23 | 显示全部楼层
把while去掉,语句执行一次就够了,在接收回调函数里设置下一次接收长度。

出0入0汤圆

 楼主| 发表于 2017-11-14 09:40:10 | 显示全部楼层
Doding 发表于 2017-11-14 09:33
把while去掉,语句执行一次就够了,在接收回调函数里设置下一次接收长度。 ...

如果没有等待,那不是一只跑下去,第一个没接收完,下一个就执行到了?

出0入75汤圆

发表于 2017-11-14 10:27:18 | 显示全部楼层
eaglelpx 发表于 2017-11-14 09:40
如果没有等待,那不是一只跑下去,第一个没接收完,下一个就执行到了? ...

DMA有中断,在回调函数里处理。

出0入0汤圆

 楼主| 发表于 2017-11-14 11:32:33 | 显示全部楼层
Doding 发表于 2017-11-14 10:27
DMA有中断,在回调函数里处理。

PT_WAIT_UNTIL(pt,HAL_UART_Receive_DMA(&huart1,uart1receivedata,12)==HAL_OK); 用PT调度写的 一直查询

出0入75汤圆

发表于 2017-11-14 11:40:31 | 显示全部楼层
eaglelpx 发表于 2017-11-14 11:32
PT_WAIT_UNTIL(pt,HAL_UART_Receive_DMA(&huart1,uart1receivedata,12)==HAL_OK); 用PT调度写的 一直查询 ...

好好看看HAL的例程吧,不是这样用的。

出0入0汤圆

 楼主| 发表于 2017-11-16 09:49:57 | 显示全部楼层
HAL_UART_Transmit_DMA(&huart1,(uint8_t*)checkmonenycmd,8);
PT_WAIT_UNTIL(pt,hdma_usart1_tx.State==HAL_DMA_STATE_READY);
这样就可以通过了,方便

出0入0汤圆

发表于 2017-11-20 21:00:48 来自手机 | 显示全部楼层
cube的adc我都没看懂。(´-ι_-`)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 08:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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