如何开发可移植到不同 MCU 的软件

语法

申明变量

  • 正确 #include <stdint.h> uint8_t sizeBuffer; #include <stdbool.h> false true
  • 错误 UINT8 sizeBuffer(编译器报错); FALSE TRUE(未定义类型)

申明结构体

  • 如果一个结构体用于系统内部,那么对齐方式按系统默认效率更好。
  • 如果一个结构体需要与外部交换(通信数据,日志数据),那么它在内存的位置需要向 1 对齐,如
#pragma pack(1) // aligned to 1 byte
typedef struct
{
    uint8_t    byCS;
    uint8_t    byTail;
} COMM_FRAME_TAIL;
#pragma pack() // restore defaults

组织源文件

头文件

  • 正确 引用外部接口(函数,变量,宏等)一定要显性包含对应的头文件。如引用了 REGION_CN470 它包含在头文件 #include "main.h"
  • 错误 不要借助隐性包含头文件,某些编译器会出错从而引发未知的错误。如 #include "LoRaMac.h"(尽管它包含了 "main.h")

预编译路径依赖

  • 列出 project 与 头文件 所在的路径,如
    D:\Project\LoRaOS\code\Project\STM32_SX1262\IAR
    D:\Project\LoRaOS\code\Application\Module\Inc
  • 计算相对路径:从 project 到 code 有 3 个 '\' ,那么 Inc 的相对路径:$PROJ_DIR$\..\..\..\Application\Module\Inc
posted @ 2022-04-27 16:36  KevinAshton  阅读(52)  评论(0编辑  收藏  举报