举例说明:
上图是通过cubemx生成的工程,文件的包含关系如下:
1. main.c文件开头就包含了main.h iwdg.h gpio.h,
由于 iwdg.h 和gpio.h中都对应声明void MX_xxx_Init(void)(xxx表示外设名称),所以main.c中就可以使用这些MX开头的外设函数了,而在iwdg.c gpio.c等c文件中定义void MX_xxx_Init(void)的内容时需要用到各类外设寄存器等,外设寄存器等文件都在stm32f1xx_hal.h的后续包含文件中,而stm32f1xx_hal.h又被包含在main.h中,所以iwdg.h gpio.h中只需包含main.h即可,这样c文件中就能定义void MX_xxx_Init(void)了,这样在iwdg.c 和gpio.c中,他们包含的头文件除了自身的头文件,其他剩余都是一样的,如下图: