我正在努力解决如何安排任务的问题。我的设置:STM32F103连接在CAN上。通过I2C使用Lidar V3模块通信进行测量,然后在CAN上分配该测量值中断1是1ms定时器中断,用于启动CAN上的消息发送接收到CAN报文后,中断2有效我还必须在LIDAR单元上通过I2C轮询寄存器,以确保测量完成后再使用I2C读取距离寄存器,下面显示的代码片段 status = CheckLidarStatus();
while ((status & LIDAR_BUSY) == LIDAR_BUSY)
{
status = CheckLidarStatus();
}
我认为我的程序应采取的正确流程如下所示:
我主要担心的是:- 这种流程似乎是一种合乎逻辑的方法吗?
- 如果我优先考虑用于CAN传输的定时器中断(而不是RX int),这是否会对CAN网络产生负面影响,即不能及时处理收到的CAN消息?
- 如果在I2C通信期间任何一个中断处于活动状态,它是否会导致I2C通信“掉线”?
- 坐在一个等待Checklidar状态的while循环中是否可以接受,因为不忙,或者有更好的方法吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>