• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于stm32 hal库串口中断回调

追梦少年 2018-03-26 浏览量:3927

请问各位前辈

stm32串口接收中断回调函数   void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)     何时会触发,以及与底层中断函数的关系

我的猜测是如果开启了中断,那么我每接收完一个字符都会触发一次中断,然后回掉函数取决于字符串的长度  也就是HAL_UART_Receive_IT(&huart1,(uint8_t*)rx_buf,strlen(rx_buf));  这个函数里面最后一个参数的长度,一旦接收达到这个长度就会触发一次callback


请问各位前辈我的理解是否正确。。

谢谢

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 中断是跑去执行中断入口的函数,也就是中断处理函数,中断和回调没关系的,只是回调放在中断处理中了,所以中断触发中断处理,处理时候执行了回调而已。中断是出发中断处理,不要理解成中断触发回调。虽然用起来是一样的,但是那么理解有问题。
    • 发布于 2018-03-27
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了 :0603WAF1006T5E 替代型号:HVC0603T1006FET OHMITE 另外一个型号错误。 请参考 回复

其他答案 数量:11
  • 中断回调,进一次中断调用一次
    • 发布于2018-03-26
    • 举报
    • 评论 2
    • 1
    • 0
追梦少年 回复了 robe_zhang :但是我做过实验测试过,好像并没有每次都回调。 多谢回复 回复
电子老工程师 回复了  :AD8099ACP-R2,Analog Devices Inc,供参考 回复

  • 中断接受是触发中断,中断处理时调用回调,不是触发回调。
    • 发布于2018-03-26
    • 举报
    • 评论 1
    • 1
    • 0
电子老工程师 回复了  :原厂资料无相关说明,FAE处无法确认,建议联系供应商
回复

  • 串口中断函数,添加HAL_UART_IRQHandler(&UartHandle);正确接收数据之后会调用你的HAL_UART_RxCpltCallback,

    HAL_UART_Receive_IT默认只能接收一个,你写多了没用(可能是我哪里设置不对)。

    • 发布于2018-03-26
    • 举报
    • 评论 2
    • 1
    • 0
追梦少年 回复了 快没时间了 :那这样子设置这个参数的意义何在呢,还是说这是一个bug. 多谢回复 回复
电子老工程师 回复了  :没有找到 回复

  • 就是你理解 的这样的,当通过HAL_UART_Receive_IT设置了接收字节数后,当接收到这么大小的数据后,就会调用回调函数。
    • 发布于2018-03-26
    • 举报
    • 评论 2
    • 1
    • 0
追梦少年 回复了 厉害企鹅 :我也认为是这样子的,但是我做实验测试时并不是每次都符合这种情况,所以有点疑惑。。。 多谢回复 回复
电子老工程师 回复了  :503518100 已经停产 39000078 没有对应reel 39000047对应reel: 39000046 回复

追梦少年 回复了 冰山一角 :请问可以详细说明一下吗,谢谢 回复
电子老工程师 回复了  :型号:HEF4001B 可订购产品型号HEF4001BT,653(订购编号),同一颗料,名称不同 回复

  • 串口接收到的数据达到了strlen(rx_buf)的值,就会进入中断。
    • 发布于2018-03-26
    • 举报
    • 评论 2
    • 1
    • 0
追梦少年 回复了 我对面的武器 :也就是说回调取决于这个缓冲区的数组是否满吗? 多谢回复 回复
电子老工程师 回复了  :https://pdf1.alldatasheet.com/datasheet-pdf/view/1294886/LEIDITECH/SMF3.3CA.html 回复

  • 你那个中断是个连续接受,长度赋值给一个计数器,接受一个,减1,减到0进中断,中断处理一大堆错误,处理完了回调,然后就退出中断处理。hal 库都是源码,有啥疑问追踪一下
    • 发布于2018-03-27
    • 举报
    • 评论 1
    • 1
    • 0
电子老工程师 回复了  :原厂内部代码,无具体解释 回复

  • 也就是说你接受那么多数据,对这个api来说,一次全部接受完,然后进中断,中断处理完错误回调,然后退出中断处理。


    • 发布于2018-03-27
    • 举报
    • 评论 1
    • 1
    • 0
电子老工程师 回复了  :https://www.st.com/resource/en/datasheet/stm32g061c8.pdf 回复

  • 因为中断向量是固定的位置,中断了就进中断处理了。回调没有固定位置,可有可无。只是中断处理函数分离出来的一些代码而已
    • 发布于2018-03-27
    • 举报
    • 评论 1
    • 1
    • 0
电子老工程师 回复了  :国产没有符合替代。 回复

  • 回调函数只会在接收长度达到参数设置时触发,而不会每接收一个字符就触发一次。

    • 发布于2018-03-28
    • 举报
    • 评论 1
    • 1
    • 0
电子老工程师 回复了  :57031-6000是工具物料。 回复

  • 这个函数配置后,就是接收到了配置的字节长度后,就会进到回调函数中运行
    • 发布于2018-04-22
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

关于stm32 hal库串口中断回调