注册会员
- 积分
- 58
- 威望
- 43
- 贡献
- 9
- 兑换币
- 10
- 注册时间
- 2014-7-21
- 在线时间
- 3 小时
- 毕业学校
- 油麻地小学
|
用的是TI公司的M4内核的MCU, 由于速度不够, 采集数据时, 先采集下来存到img二维数组里, 然后暂停中断开始上报数据, 再开中断。
但是每次发送到img[25][47]就会出错, 每次都在同一个地方。 SRAM大小应该也是够的。
下面是串口部分。
uint16_t i, j;
while(print){//数据采集结束print就置位
MAP_GPIOIntDisable(GPIO_PORTC_BASE, Pin_PCLK|Pin_HREF|Pin_VSYN);//暂停 interrupt
UARTCharPut(UART0_BASE, 0xff);//数据头
for(i=0; i<240; i+=2){
for(j=0; j<640; j+=4){
if(img[j] == 0xff){
img[j] = 0xfe;//防止误判为数据头
}
if((i%2==0)&&(j%4==0)){
MAP_UARTCharPut(UART0_BASE, img[i/2][j/4]);//img大小是[120][160],隔2行隔4列存储
SysCtlDelay(3);//怕是传太快导致的, 加个延时
}
}
//UARTCharPut(UART0_BASE, 0xff);
SysCtlDelay(3);//打个断点, 看哪里出错了
}
print = 0;//标志位 打印结束 中断继续
Delay_us(1);
MAP_GPIOIntEnable(GPIO_PORTC_BASE, Pin_PCLK|Pin_HREF|Pin_VSYN);//开中断
break;
}
现在错误定位在i=50 j=148的地方, 即img[25][47], 每次输出到这里就进入faultISR。
我试过在DEBUG的时候, 把i的值设置为51或者52甚至100, 立刻出错。
请问可能是什么原因导致的呢。
|
|