金牌会员
 
- 积分
- 2375
- 金钱
- 2375
- 注册时间
- 2017-8-7
- 在线时间
- 207 小时
|

楼主 |
发表于 2018-3-14 14:16:47
|
显示全部楼层
换了种写法,u32 *sdram_array[NETCAM_FIFO_NUM] __attribute__((at(0XC2000000)));定义完之后按照写fifo的方法
u8 fifo_read(u32 **buf)
{
if(netcamfifordpos==netcamfifowrpos)return 0;
netcamfifordpos++; //¶áλÖüó1
if(netcamfifordpos>=NETCAM_FIFO_NUM)netcamfifordpos=0;//1éáã
*buf=sdram_array[netcamfifordpos];
return 1;
}
u8 fifo_write(u32 *buf)
{
u16 i;
u16 temp=netcamfifowrpos; //¼Ç¼μ±Ç°D′λÖÃ
netcamfifowrpos++; //D′λÖüó1
if(netcamfifowrpos>=NETCAM_FIFO_NUM)netcamfifowrpos=0;//1éáã
if(netcamfifordpos==netcamfifowrpos)
{
netcamfifowrpos=temp; //»1Ô-Ô-à′μÄD′λÖÃ,′Ë′ÎD′èëê§°ü
//printf("shit:%d\r\n",temp);
return 1;
}
for(i=0;i<NETCAM_LINE_SIZE;i++)sdram_array[netcamfifowrpos][i]=buf[i];//¿½±′êy¾Y
return 0;
}
在回调函数用
if(DMA2_Stream1->CR&(1<<19))
{
pbuf=(u16*)dcmi_line_buf[0];
fifo_write(dcmi_line_buf[0]);
}
else
{
pbuf=(u16*)dcmi_line_buf[1];
fifo_write(dcmi_line_buf[1]);
}
还是执行到这立马进入进入hardfault |
|