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

STM32 HAL库的串口使用问题

[复制链接]
yukaigogogo 提问时间:2017-8-4 08:14 /
本帖最后由 yukaigogogo 于 2017-8-4 08:16 编辑

在使用HAL库的时候发现同一串口的接收和发送如果同时进行的话会发生问题,因为
如果在串口接收完成中断中再次用调用下面的函数(我每次只接收一个字节,在接收完成中断中再次调用此函数)
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

进行接收串口数据的时候,有可能
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

也正在进行中,而这两个函数都会对串口资源上锁
__HAL_LOCK(huart);
导致中断接收函数 HAL_StatusTypeDef HAL_UART_Receive_IT  返回hal_busy; 没有正常的执行,所以串口接收中断也没有打开,再也接收不到下一个字节了。

我简单粗爆的把 __HAL_LOCK(huart);注释掉了。

大家有什么好办法,不改动库,又能把这件事情做漂亮

收藏 评论1 发布时间:2017-8-4 08:14

举报

1个回答
废鱼 回答时间:2017-8-4 08:56:41
发送和接收都用中断。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版