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

串口接收超时判断,采用HAL_USART_Receive还是HAL_USART_Receive_IT?

[复制链接]
anka120 提问时间:2018-7-3 08:53 /
串口接收超时判断问题

方法一:
HAL_USART_Receive(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)

自带Timeout ,方便好用(设定systick ,每1ms中断 ),处理器每1ms检查寄存器标记及超时。
....
while(__HAL_USART_GET_FLAG(husart, Flag) == RESET)
    {
      /* Check for the Timeout */
      if(Timeout != HAL_MAX_DELAY)
      {
        if((Timeout == 0)||((HAL_GetTick() - tickstart ) > Timeout))
        {
....


方法二:
HAL_USART_Receive_IT(USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size)

在中断中设定接收完成标记,主循环中检查超时,处理器每1ms检查收完成标记及超时;每次中断接收后,还要重新启动中断。


即使在多任务中,处理器在每1ms检查过程中,可以做其他事情。

采用中断的方式好像没有什么优势??
大家有什么看法

收藏 评论9 发布时间:2018-7-3 08:53

举报

9个回答
电子星辰 回答时间:2018-7-3 09:15:48
但是HAL_USART_Receive接收不到或接收不完整的频率很高

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wenyangzeng 回答时间:2018-7-3 09:24:34
中断方式可以迅速反应事件以便及时处理。特别是USART,可以减少通讯数据丢失

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

anka120 回答时间:2018-7-3 09:33:02
wenyangzeng 发表于 2018-7-3 09:24
中断方式可以迅速反应事件以便及时处理。特别是USART,可以减少通讯数据丢失 ...

HAL_USART_Receive 本身存在通讯不稳定的问题?哥们使用真存在该问题?
anka120 回答时间:2018-7-3 09:33:46
wenyangzeng 发表于 2018-7-3 09:24
中断方式可以迅速反应事件以便及时处理。特别是USART,可以减少通讯数据丢失 ...

HAL_USART_Receive 本身存在通讯不稳定的问题?哥们使用真存在该问题?
wenyangzeng 回答时间:2018-7-3 09:52:31
anka120 发表于 2018-7-3 09:33
HAL_USART_Receive 本身存在通讯不稳定的问题?哥们使用真存在该问题?

HAL_USART_Receive 不存在通讯不稳定的问题,主要是采用中断方式时,可以在系统任务繁忙时能够及时接收USART数据。
anka120 回答时间:2018-7-3 10:08:11
针对 超时判断的情况,如之前描述,没有发现方法一比方法二更加及时啊
废鱼 回答时间:2018-7-3 14:32:43
看使用环境吧。我感觉两个都不是很好用。还是习惯使用之前的标准库,串口这里完全不用考虑接收满以后会自动关闭中断的问题。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

KEY1 回答时间:2018-8-6 23:54:46
我觉得方法二 更实用, 首先在裸机环境下,方法2 优势明显,
在操作系统中,
方法一 简单好用, 阻塞就阻塞, 单任务阻塞不会影响其他任务运行,
方法2 使用中断 稍微麻烦些,但是 会提升效率, 但是效率提升不会太明显, 因为操作系统本身有任务调度,因此也只能提升少数任务上的效率, 因此串口接收任务效率提升了不见得会对整个系统效率有明显贡献,.

anka120 回答时间:2018-8-8 17:59:20
50031185 发表于 2018-8-6 23:54
我觉得方法二 更实用, 首先在裸机环境下,方法2 优势明显,
在操作系统中,
方法一 简单好用, 阻塞就阻塞,  ...

我是提出这种思路,这种思路推广到其他外设,或者多个外设的时候的选择

所属标签

相似问题

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