本帖最后由 gaoyang9992006 于 2020-5-9 14:52 编辑
用STM32CubeMX配置了一个STM32F072的工程,发现GPIO的初始化变量结构体定义在初始化函数内的开头,而ADC初始化变量的结构体定义在了main函数之前,并且注释内容为:私有变量。
我有点拿不住,虽然放内和放外面都可以正常编译,而且没有任何毛病,但是对于初始化函数的变量不是应该放到函数内更好吗?这个就是一个局部变量,函数执行完就会被消灭。不用占用太多空间。
那么这里的这个
/* Private variables ---------------------------------------------------------*/
ADC_HandleTypeDef hadc;
是放在全局变量位置合适,还是放到
static void MX_ADC_Init(void);
函数内合适?
原来这么做是有原因了,为了方便统一ADC库函数的入口,后面要操作用到的HAL库函数,都是通过hadc这个结构体引用的其成员变量,所以放到了外面。
否则后面想再次使用HAL库函数操作的话,就要重新定义,否则访问不到私有成员变量,因此放到全局里面是一劳永逸的做法。
|