这里总结一些个人认为比较有用的API
1 CyFxAppErrorHandler 错误处理
固件中遇到错误可以调用这个函数,这个函数是固件DEMO中的,不是官方库
在这个函数中可以增加一些错误处理,比如点灯,比如复位等
void
CyFxAppErrorHandler (
CyU3PReturnStatus_t apiRetStatus /* API return status */
)
{
/* Application failed with the error code apiRetStatus */
/* Add custom debug or recovery actions here */
CyU3PDebugPrint("Failed to create thread! \n", ); // 打印错误信息
CyU3PGpioSetValue(59, CyTrue); //点灯指示错误
CyU3PThreadSleep(1000); // 等待一段时间观察错误指示灯
CyU3PFreeHeaps();// 释放资源或进行清理工作
CyU3PDeviceReset(CyFalse); //最终,如果无法恢复,可以执行软件重启
/* Loop Indefinitely */
for (;;)
{
/* Thread sleep : 100 ms */
CyU3PThreadSleep (100);
}
}
2 CyU3PDeviceReset 复位
CyU3PDeviceReset (
CyBool_t isWarmReset /**< Whether this should be a warm reset or a cold reset. */
);
官方库函数 ,true 是 软复位,不会重新加载FX3 固件;false 会重新加载FX3固件。
3 CyFxApplnDebugInit 串口调试
输出打印函数,demo中的函数,可以根据自己需要修改。
串口初始化流程
1 CyU3PUartInit 初始化UART
2 CyU3PMemSet 复位内存
3 CyU3PUartSetConfig 设置串口的配置
以下步骤在使用uart debug的时候执行,否则不执行
4 CyU3PUartTxSetBlockXfer 设置发送大小
5 CyU3PDebugInit 初始化debug模式
4 CyFxBulkSrcSinkApplnI2CInit 初始化I2C
流程
1 CyU3PI2cInit
2 CyU3PMemSet
3 CyU3PI2cSetConfig
5 CyU3PPibRegisterCallback(gpif_error_cb,0xffff)
callback to see if there is any overflow of data on the GPIF II side
6 CyU3PUsbRegisterSetupCallback(CyFxSlFifoApplnUSBSetupCB, CyTrue);
注册用户回调函数CyFxSlFifoApplnUSBSetupCB,用于处理类/供应商请求。
CyFxSlFifoApplnUSBSetupCB 这个函数就是处理用户的事件请求的,比如用户的一些指令参数可以放到这个函数中。
CyTrue
表示启用USB fast enumeration。这样,USB设备的配置和枚举过程就会由FX3库自动处理,应用程序只需要处理类/供应商请求。
Fast enumeration mode是一种USB设备工作模式,其中USB设备的配置和枚举过程完全由USB设备的固件库(如Cypress FX3固件库)处理。在fast enumeration模式下,设备的USB连接设置是由固件库自动处理的,而应用程序只需要处理类/供应商请求,这样可以简化应用程序的开发流程并加快USB连接的建立速度
带补充......