OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3641|回复: 10

OV2640 一直发生指针越界 进入HardFault_Handler

[复制链接]

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
发表于 2016-10-8 22:49:42 | 显示全部楼层 |阅读模式
1金钱
代码是移植的原子哥的

[mw_shl_code=c,true]int main(void)
{
        System_Init();
        LED_Init();                                                                               
        Button_Init();
        USART_Config(115200);
        LED_On(LED_Red|LED_Green);
        OV2640_Init();
        DCMI_DMA_Init((u32)JPEG_Buff0   
                                                                ,JPEGBuffSize,DMA_MemoryDataSize_Word,DMA_MemoryInc_Enable);
       
        printf("InitOK\r\n");       
       
        jpeg_test();
}
void jpeg_test(void)
{
        u32 i;
        u8 *p;
        OV2640_JPEG_Mode();
        OV2640_OutSize_Set(320,240);
        DCMI_Start();
        while(1)
        {
                if(jpeg_data_ok==1)        /
                {  
                        p=(u8*)JPEG_Buff0;
                        for(i=0;i<jpeg_data_len*4;i++)
                        {
        while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
                                USART_SendData(USART1,p);
                        }                                   
                }
                jpeg_data_ok=2;       
        }                  
} [/mw_shl_code]

[mw_shl_code=c,true]void jpeg_data_process(void)
{
        if(jpeg_data_ok==0)
        {       
                DMA_Cmd(DMA2_Stream1, DISABLE);
                while (DMA_GetCmdStatus(DMA2_Stream1) != DISABLE){}
                jpeg_data_len=JPEGBuffSize-DMA_GetCurrDataCounter(DMA2_Stream1);
                       
                jpeg_data_ok=1;
        }
        if(jpeg_data_ok==2)
        {
                DMA2_Stream1->NDTR=JPEGBuffSize;       
                DMA_SetCurrDataCounter(DMA2_Stream1,JPEGBuffSize);
                DMA_Cmd(DMA2_Stream1, ENABLE);
                jpeg_data_ok=0;
        }
}

void DCMI_IRQHandler(void)
{
        if(DCMI_GetITStatus(DCMI_IT_FRAME)==SET)
        {
                jpeg_data_process();
                DCMI_ClearITPendingBit(DCMI_IT_FRAME);
                LED_Toggle(LED_Red);
        }
} [/mw_shl_code]

摄像头ID能都出来  串口没有数据传出来 仿真看了 缓存里面是有数据而且一直是在变的

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
 楼主| 发表于 2016-10-8 22:52:30 | 显示全部楼层
上面代码有个小错误   第一篇的30行是 USART1  
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2016-10-8 22:56:01 | 显示全部楼层
JPEG_Buff0是什么类型,开辟多大的内存给这个数组?
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
 楼主| 发表于 2016-10-8 22:58:46 | 显示全部楼层
小温 发表于 2016-10-8 22:56
JPEG_Buff0是什么类型,开辟多大的内存给这个数组?

字符数组  20*1024大小
回复

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
 楼主| 发表于 2016-10-8 22:59:21 | 显示全部楼层
板子是 stm32f429discovery
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2016-10-8 23:00:48 | 显示全部楼层
秋夜月汐 发表于 2016-10-8 22:58
字符数组  20*1024大小

你为什么还要定义一个p指针?
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2016-10-8 23:01:05 | 显示全部楼层
秋夜月汐 发表于 2016-10-8 22:58
字符数组  20*1024大小

你为什么还要定义一个p指针?
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
 楼主| 发表于 2016-10-8 23:02:07 | 显示全部楼层
小温 发表于 2016-10-8 23:00
你为什么还要定义一个p指针?

这个没大碍吧  我是直接拿的原子哥F407的代码 修改了一下
回复

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2016-10-8 23:06:27 | 显示全部楼层
你试试 USART_SendData(USART1,JPEG_Buff0[i]); ,我觉得这样用指针有大碍
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
 楼主| 发表于 2016-10-8 23:11:26 | 显示全部楼层
小温 发表于 2016-10-8 23:06
你试试 USART_SendData(USART1,JPEG_Buff0); ,我觉得这样用指针有大碍

我改了  还是没用
回复

使用道具 举报

22

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
金钱
252
注册时间
2015-7-25
在线时间
20 小时
 楼主| 发表于 2016-10-8 23:45:08 | 显示全部楼层
越界的问题解决了  缓存被我定义成 字符数组但是DMA缓存大小没改

串口仍旧没有输出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 21:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表