一.main.h

在main.h中提供了几个不同的用户代码区域,每个区域都有特定的用途。以下是各个区域的详细区别:

1. Includes 区域

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
// 放置用户自定义的头文件包含
#include "user_app.h"
#include "custom_driver.h"
/* USER CODE END Includes */

用途:添加项目需要的额外头文件

2. ET (Exported Types) 区域

/* Exported types ------------------------------------------------------------*/
/* USER CODE BEGIN ET */
// 放置需要被其他文件使用的类型定义
typedef struct {
    uint8_t data[64];
    uint16_t length;
} buffer_t;

typedef enum {
    STATE_IDLE,
    STATE_BUSY,
    STATE_ERROR
} system_state_t;
/* USER CODE END ET */

用途:定义导出的数据类型(结构体、枚举、联合等)

3. EC (Exported Constants) 区域

/* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */
// 放置需要被其他文件使用的常量
#define MAX_BUFFER_SIZE 256
#define DEFAULT_TIMEOUT 1000
#define SYSTEM_VERSION "1.0.0"
/* USER CODE END EC */

用途:定义导出的常量(宏定义、const常量等)

4. EM (Exported Macros) 区域

/* Exported macro ------------------------------------------------------------*/
/* USER CODE BEGIN EM */
// 放置需要被其他文件使用的宏函数
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
#define BIT(n) (1UL << (n))
/* USER CODE END EM */

用途:定义导出的宏函数和复杂宏

5. EFP (Exported Functions Prototypes) 区域

/* Exported functions prototypes ---------------------------------------------*/
/* USER CODE BEGIN EFP */
// 放置需要被其他文件调用的函数声明
void User_Init(void);
void User_Process(void);
uint8_t User_Calculate_CRC(uint8_t* data, uint16_t len);
/* USER CODE END EFP */

用途:声明导出的函数原型

6. Private defines 区域

/* Private defines -----------------------------------------------------------*/
/* USER CODE BEGIN Private defines */
// 放置只在main.c中使用的私有定义
#define INTERNAL_BUFFER_SIZE 128
#define DEBUG_MODE 1
/* USER CODE END Private defines */

用途:定义main.c文件内部使用的私有常量

7. PV (Private Variables) 区域

/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
// 放置main.c中使用的私有全局变量
uint32_t system_tick_count = 0;
uint8_t internal_buffer[INTERNAL_BUFFER_SIZE];
/* USER CODE END PV */

用途:定义main.c内部的私有变量

8. PFP (Private Function Prototypes) 区域

/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN PFP */
// 放置main.c内部使用的函数声明
static void Internal_Process(void);
static uint16_t Calculate_Checksum(void);
/* USER CODE END PFP */

用途:声明main.c内部的私有函数

更多推荐