完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好!
我真的不知道如何解释这个。但我已经启用了 CANBUS,它工作得很好。我也激活了 USB,它也可以工作。 但是由于我已经将CANBUS RX0的抢占从0改为1,所以我无法使用USB连接。 我将 CANBUS RX0 的抢占从 0 更改为 1,否则 Systick 将停止。只要我在 CANBUS RX 中断函数中,HAL_GetTick() 就会给出相同的数字。 当我优先为 CANBUS RX0 设置 1 并插入 USB 时会发生什么。从我的电脑角度来看,它说它无法连接设备。 从我的 STM32 角度来看,我永远陷入 wIstr = 41465的 while 循环中
我需要帮助的是 HAL_GetTick() 不适用于 CANBUS RX0 优先级 0,所以我将优先级更改为 1。所以现在 HAL_GetTick() 在上面的 CANBUS RX 中断函数中工作。 但是 USB 将无法工作,因为如果 CANBUS RX0 优先级为 1,我将无法连接它。所以我需要再次将其设置为 0,但我遇到了与以前相同的问题。 那么我应该在这里做什么?
我的 STM32 是 STM32F373VBTx,我使用的是 STM32CubeIDE 1.7.0。 |
|
相关推荐
1个回答
|
|
为了能够在中断中正确使用 HAL_GetTick()(HAL 依赖它),SysTick 必须具有比中断更高的优先级。
因此,将 SysTick 的优先级设置为最高级别在理论上将允许它在任何地方使用。 不幸的是,根据应用程序,将 SysTick 设置为最高优先级可能会导致其他事件的反应性损失。 根据经验,根本不建议在 ISR 中等待事件或执行耗时的任务。 选择选项 1 是最合乎逻辑的事情。选项 2 在理论上应该可行。选项 3 不会有任何改变。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2574 浏览 1 评论
3192 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1761 浏览 1 评论
3587 浏览 6 评论
5965 浏览 21 评论
924浏览 4评论
1300浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
563浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1286浏览 3评论
1338浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 06:05 , Processed in 1.291147 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号