新手入门
- 积分
- 7
- 金钱
- 7
- 注册时间
- 2021-5-3
- 在线时间
- 3 小时
|

楼主 |
发表于 2021-5-20 18:39:06
|
显示全部楼层
本帖最后由 17862703213 于 2021-5-20 18:40 编辑
问题又进一步缩小了,貌似是我写的有问题
#include "sys.h"
#include "delay.h"
#include "can.h"
u8 CAN1_DateForCheck[8][8]={0}; //检查回告报文数据打包数组
u8 NumberForCheck=0; //**********这里!!!!!
u8 CAN1_DateForControl[8]={0}; //CAN1控制回告报文
u8 ErrorII=0;
int main(void)
{
u8 NumberForCheck=0; //**********这里!!!!
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(360,25,2,8); //设置时钟,180Mhz
delay_init(180); //初始化延时函数
CAN1_Mode_Init(CAN_SJW_1TQ,CAN_BS2_6TQ,CAN_BS1_8TQ,6,CAN_MODE_NORMAL); //CAN初始化,波特率500Kbps (先测试回环模式) 普通模式为 CAN_MODE_NORMAL
CAN1_DateForControl[1]=NumberForCheck;//这里!!!!!
while(1)
{
if(ErrorII==0)
{
delay_us(3000);
if(ErrorII==0xE7)
{
CAN1_DateForCheck[7][5]=ErrorII;
CAN1_Send_Msg(CAN1_DateForCheck[7],8);
}
}
while(1);
}
}
我最后把程序删的只剩下上面那些了,变量(NumberForCheck)定义在main外与main里面有什么区别,应该定义在什么地方?
当我把NumberForCheck在main里面重新初始化一下就好了,但是如果不在main里面初始化,只在main外面初始化,再执行CAN1_DateForControl[1]=NumberForCheck;时,大概是在进入wihle循环后2000us左右,ErrorII 的值就会跟着变,我测试过。
请大神帮忙解释一下这是什么原理。 |
|