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

hal库,如果can定时发送,则无法进入can接收中断。

[复制链接]
any012 提问时间:2019-1-16 10:23 /
阅读主题, 点击返回1楼
收藏 评论14 发布时间:2019-1-16 10:23
14个回答
any012 回答时间:2019-1-17 10:23:53
本帖最后由 any012 于 2019-1-17 10:34 编辑
安 发表于 2019-1-17 09:36
我使用的时候,会做错误纠正。当检测到错误标志位时,重新初始化对应的模块。 ...
  1. if (HAL_CAN_Receive_IT(hcan, FIFO0) != HAL_OK)
  2. {
  3.     Error_Handler();
  4. }

  5. static void Error_Handler(void)
  6. {
  7.     while(1)
  8.     {
  9.     }
  10. }
复制代码
像这样?
回答时间:2019-1-17 10:46:55
不是。比如下面的代码:
                if(Systimeout==0 || Systimeout > HAL_GetTick() || HAL_GetTick() - Systimeout >= 60000)
                {
                        MX_USART1_UART_Init();
                        HAL_UART_Receive_IT(&huart1,RxBuffer,sizeof(RxBuffer));
                        Systimeout = HAL_GetTick() ;
                }
any012 回答时间:2019-1-17 10:52:56
谢谢,受教了。
liyang05 回答时间:2019-3-29 20:48:53
您好:我在使用can发送接受数据时,也遇到了相似问题,向请问一下
我用can调试电机pid;使能了can中断接受电机返回数据,在定时器中断里计算pid,然后使用can发送函数把数据发下去,但是程序会一直卡死在can发送函数中,但是我把can发送函数写在主函数中,就不会有问题,想请问一下大概是什么原因造成的,该从哪方面下手解决?
any012 回答时间:2019-4-1 08:45:00
尽量减少中断函数的处理时间,我是在中断函数里只接收数据,然后置个标志位,主循环里读取这个标志位然后进行数据处理。
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版