首页 > 解决方案 > IAR 中的错​​误函数指针

问题描述

我正在使用 IAR,但出现以下错误:

Error[Pe513]: a value of type "void *" cannot be assigned to an entity of type "void (*)(void)" 

下面是产生错误的代码:

uint32_t resethandler_adress = (volatile uint32_t)(FLASH_SECTOR2_BASE_ADRESSE + 4);

void (*app_reset_handler)(void);
app_reset_handler = (void*)resethandler_adress;

标签: cembedded

解决方案


如错误所述, avoid (*)(void)与 a 不同void*。解决方案是将整数转换为适当的类型。这可以直接完成;目前尚不清楚为什么将其转换为uint32_tthenvoid*或为什么您可能声明一个文字常量volatile

typedef void (*tResetHandlerFn)(void);
tResetHandlerFn app_reset_handler = (tResetHandlerFn)(FLASH_SECTOR2_BASE_ADDRESS + 4) ;

推荐阅读