不同的指针类型在 c 中缺少强制转换
Distinct pointer types lacks a cast in c
我正在使用 ST32 I-cube 示例代码并尝试使用以下代码启动 ADC:
ADC_HandleTypeDef hadc;
void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc) {
if(hadc->Instance==ADC){
GPIO_InitTypeDef GPIO_InitStruct={0};
/*##-1- Enable peripherals and GPIO Clocks #################################*/
/* Enable GPIO clock ****************************************/
__HAL_RCC_GPIOA_CLK_ENABLE();
/* ADC1 Periph clock enable */
/*##- 2- Configure peripheral GPIO #########################################*/
/* ADC3 Channel8 GPIO pin configuration */
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
.........
}
编译器在行中给我一个 "comparison of distinct pointer types lacks a cast" 的警告:
if(hadc->Instance==ADC){
我做错了什么?
感谢帮助!
我几乎可以肯定 ADC
不是有效实例,您应该改用 ADC1
(或 2 或其他)。
查看其中一个 STM32 头文件显示:
// stm32f030x6.h
...
#define ADC1 ((ADC_TypeDef *) ADC1_BASE)
#define ADC ((ADC_Common_TypeDef *) ADC_BASE) /* Kept for legacy purpose */
...
这对我来说表明您可能一直在查看一个旧示例,该示例仍然存在,因此它不是未定义的符号,但是 ADC1
具有它正在寻找的类型,而 ADC
没有。
我正在使用 ST32 I-cube 示例代码并尝试使用以下代码启动 ADC:
ADC_HandleTypeDef hadc;
void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc) {
if(hadc->Instance==ADC){
GPIO_InitTypeDef GPIO_InitStruct={0};
/*##-1- Enable peripherals and GPIO Clocks #################################*/
/* Enable GPIO clock ****************************************/
__HAL_RCC_GPIOA_CLK_ENABLE();
/* ADC1 Periph clock enable */
/*##- 2- Configure peripheral GPIO #########################################*/
/* ADC3 Channel8 GPIO pin configuration */
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
.........
}
编译器在行中给我一个 "comparison of distinct pointer types lacks a cast" 的警告:
if(hadc->Instance==ADC){
我做错了什么?
感谢帮助!
我几乎可以肯定 ADC
不是有效实例,您应该改用 ADC1
(或 2 或其他)。
查看其中一个 STM32 头文件显示:
// stm32f030x6.h
...
#define ADC1 ((ADC_TypeDef *) ADC1_BASE)
#define ADC ((ADC_Common_TypeDef *) ADC_BASE) /* Kept for legacy purpose */
...
这对我来说表明您可能一直在查看一个旧示例,该示例仍然存在,因此它不是未定义的符号,但是 ADC1
具有它正在寻找的类型,而 ADC
没有。