新手入门
- 积分
- 14
- 金钱
- 14
- 注册时间
- 2026-5-26
- 在线时间
- 2 小时
|
2金钱
求救求救新手求助。在移植摄像头实验代码后,发现主程序能跑完,初始化程序和开始采集图片程序无异常,但就是无法显示图像。具体现象如下图:
此外,在单步调试时,发现与例程代码不同的是程序单步调试运行到static HAL_StatusTypeDef DCMIPP_CSI_SetVCConfig(DCMIPP_HandleTypeDef *hdcmipp, uint32_t Pipe, uint32_t VirtualChannel)函数后会进入函数内部的do { if ((HAL_GetTick() - tickstart) > DCMIPP_TIMEOUT) { return HAL_ERROR; } } while ((csi_instance->SR0 & (CSI_SR0_VC0STATEF << VirtualChannel)) != (CSI_SR0_VC0STATEF << VirtualChannel));陷入循环返回error。但单步调试不进入这个函数体就不会返回error。而例程代码即使进入这个函数体也不会返回error。还有一个小问题,就是在主函数中,一旦有MX_LTDC_Init();这句代码,运行程序后再次运行就一定会提示Target is not responding, retrying...,直到重新上电为止。求各位大佬能够帮忙答疑解惑
|
最佳答案
查看完整内容[请看2#楼]
找到了问题,主要是以下几点:
1、时钟不对,LTDC时钟不对就会造成无法二次烧录的情况,还需要重新上电。DCMIPP也是需要IC17和IC18对应的时钟,也就是300M和20M。
2、中断没设置,例程代码里自己写了中断相关的函数,在xxxit.c里面,但如果用cubemx的话,需要把DCMIPP和CSI的中断使能勾上,然后配置好优先级才可以。
|