搜索
bottom↓
回复: 6

STM32 FREERTOS 串口只能接收一个字节咨询大家

[复制链接]

出0入0汤圆

发表于 2019-4-26 11:27:26 | 显示全部楼层 |阅读模式
问题不好描述,可能是我对FREERTOS不熟悉,情况是这样,我要用STM32 FREERTOS来操作ESP8266 WIFI模块,使用的正点原子的函数,串口接收中断是这样设计的,比如发送“”AT“握手指令,串口接收A和T之间小于10ms(定时器中断)就认为是一条命令。调试中发现一个问题,只能接收一个前面一个字节"A",后面如果发送“T”的话程序就会卡死!!!不知道是不是FREERTOS的和定时器之前有冲突,还是哪里出现了问题,希望大家遇到过类似问题的话,能帮忙解决一下!!!

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2019-4-26 11:35:50 | 显示全部楼层
串口底层开IDLE中断,或者用软件定时器实现一下断帧,然后发送AT后等待这个IDLE的中断(可用信号量、事件组或者队列实现都是带超时的,这应该是正常套路吧,至于卡死是优先级不对

出0入0汤圆

 楼主| 发表于 2019-4-26 11:40:51 | 显示全部楼层
1328616904 发表于 2019-4-26 11:35
串口底层开IDLE中断,或者用软件定时器实现一下断帧,然后发送AT后等待这个IDLE的中断(可用信号量、事件组 ...

好的 谢谢回复 !!!

出0入0汤圆

发表于 2019-4-26 11:45:53 | 显示全部楼层
估计是在接收中断处理程序中调用了某个函数,这个函数中某处死循环等某个状态,但是那个状态永远不会到来。这个循环之做了需要允许中断下才会正常进行的事,例如spi收发、usart发送等等。
建议:
1、串口接收不要用中断,开个任务来查询接收串口数据
2、如果串口使用中断,收到的数据放入队列中。数据的处理在任务里面搞,不要在中断处理程序中搞

出0入0汤圆

发表于 2019-4-26 11:50:42 | 显示全部楼层
安利一下我们的 at device和at sal。
stm32通过at对接8266的绝配

出0入0汤圆

 楼主| 发表于 2019-4-26 12:06:57 | 显示全部楼层
BD8NCF 发表于 2019-4-26 11:45
估计是在接收中断处理程序中调用了某个函数,这个函数中某处死循环等某个状态,但是那个状态永远不会到来。 ...

好的 谢谢!!! 我去试试

出0入0汤圆

 楼主| 发表于 2019-4-26 12:07:28 | 显示全部楼层
aozima 发表于 2019-4-26 11:50
安利一下我们的 at device和at sal。
stm32通过at对接8266的绝配

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

本版积分规则

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

GMT+8, 2024-5-27 05:19

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

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