问题遇到的现象和发生背景
用cubemx配置dcmi,在编写回调函数HAL_DCMI_FrameEventCallback的时候,调用函数__HAL_DCMI_CLEAR_FLAG和__HAL_DCMI_ENABLE_IT的参数中句柄显示报错,但是这个句柄是cubemx自动生成的。
用代码块功能插入代码,请勿粘贴截图
DCMI_HandleTypeDef hdcmi;
DMA_HandleTypeDef hdma_dcmi;
void MX_DCMI_Init(void) //cubemx自动生成的初始化代码
{
hdcmi.Instance = DCMI;
hdcmi.Init.SynchroMode = DCMI_SYNCHRO_HARDWARE;
hdcmi.Init.PCKPolarity = DCMI_PCKPOLARITY_FALLING;
hdcmi.Init.VSPolarity = DCMI_VSPOLARITY_LOW;
hdcmi.Init.HSPolarity = DCMI_HSPOLARITY_LOW;
hdcmi.Init.CaptureRate = DCMI_CR_ALL_FRAME;
hdcmi.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B;
hdcmi.Init.JPEGMode = DCMI_JPEG_ENABLE;
if (HAL_DCMI_Init(&hdcmi) != HAL_OK)
{
Error_Handler();
}
}
void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
{
__HAL_DCMI_CLEAR_FLAG(&hdcmi,DCMI_FLAG_FRAMERI);//清除帧中断
jpeg_data_process();//jpeg数据处理
ov_frame++;
//重新使能帧中断,因为HAL_DCMI_IRQHandler()函数会关闭帧中断
__HAL_DCMI_ENABLE_IT(&hdcmi,DCMI_IT_FRAME);
}
运行结果及报错内容
Error[Pe132]: expression must have pointer-to-struct-or-union type
错误[Pe132]:表达式必须有指向结构或联合类型的指针,但是这个&hdcmi是自动生成的。
我的解答思路和尝试过的方法
我试过在DCMI_HandleTypeDef和函数里把hdcmi改成hdcmi1,这样能把报错消除,但是这样肯定运行不了