单片机/MCU论坛
直播中

吴湛

9年用户 809经验值
擅长:33391
私信 关注
[问答]

CX3在使用OV5640的同时又使用GPIO功能,两个函数无论先定义谁后面的一个就会报错怎么解决?

CX3 想在使用OV5640的同时又使用GPIO功能,这个两个函数无论先定义谁,后面的一个就会报错。请问是不是GPIO设置冲突问题,怎么解决?
CyFxGpioInit (void)
{
gpioClock.fastClkDiv = 2;
gpioClock.slowClkDiv = 0;
gpioClock.simpleDiv = CY_U3P_GPIO_SIMPLE_DIV_BY_2;
gpioClock.clksrc=CY_U3P_SYS_CLK;
gpioClock.halfDiv = 0;
apiRetStatus = CyU3PGpioInit( gpioClock, CyFxGpioIntrCb);
if (apiRetStatus != 0)
{
/* Error Handling */
CyU3PDebugPrint (4, "CyU3PGpioInit failed, error code = %dn", apiRetStatus);
}
}

/* Initialize GPIO module. */
status = CyU3PMipicsiInitializeGPIO ();
if( status != CY_U3P_SUCCESS)
{
CyU3PDebugPrint (4, "nrAppInit:GPIOInit Err = 0x%x",status);
CyCx3AppErrorHandler(status);
}

回帖(1)

杨海清

2024-2-26 16:04:00
根据提供的代码,CyU3PGpioInit函数会初始化GPIO库并注册中断回调函数CyFxGpioIntrCb。这两个函数的顺序应该没有问题,因为注册中断回调函数可以在GPIO库初始化之后完成。

然而,报错可能是因为OV5640的初始化代码中使用了一些与GPIO库冲突的资源或配置。解决这个问题的方法是检查OV5640初始化代码中是否使用了与GPIO库相同的资源或配置,并尝试更改它们,以确保没有冲突。

此外,还可以尝试在CX3的初始化代码中延迟一些时间,以确保OV5640的初始化先于GPIO初始化。可以使用CyU3PThreadSleep函数在初始化之间增加适当的延迟时间。

最后,建议查看CX3和OV5640的开发文档,以了解是否存在任何已知的资源冲突或配置要求,并进行相应的调整。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分