初级会员

- 积分
- 87
- 金钱
- 87
- 注册时间
- 2021-4-4
- 在线时间
- 34 小时
|
5金钱
用STM32F407进行CAN实验时候遇到这样一个问题:间隔10ms用同一个扩展帧ID发送数据,其中数据内容会发生变化
于是我把发送信息放在缓冲区controlbuf内,然后通过定时器间隔10ms发送缓冲区内信息,数据发生变化时在主函数更改缓冲区数据内容即可
但是实际测试时发现当发送数据发生变化时,can测试软件检测到的内容顺序发生了变化,请问有没有什么好的解决方案
定时器函数:
void TIM3_IRQHandler(void)
{
if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中断
{
res = CAN1_Send_Msg(controlbuf,8);
controlbuf[6]+=0x10;
controlbuf[7]=controlbuf[0]^controlbuf[1]^controlbuf[2]^controlbuf[3]^controlbuf[4]^controlbuf[5]^controlbuf[6];
}
TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中断标志位
}
向controlbuf依次写入A、B、C,每次写入时间间隔随机,至少500ms
正常CAN测试软件收到的数据应该是A、B、C,但目前实际情况是A、B、A、B、C这种,是哪儿的问题呢?
|
|