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

串口接收超时判断,采用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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版