为了实现不同FLASH区来实现不同APP的起启,这一篇需要规划一下CW32L083的启动的一些基础配置,主要配置FLASH总扇区、AB起始地址等。
首先我们找到CW32L083的用户手册,找到FLASH的说明部分,其描述如下:
主 FLASH 存储器,共 256KB,地址空间为 0x00000000 - 0x0003 FFFF。该区域主要用于存放应用程序代码
W32L083 内部集成 256KB 用户可访问的 FLASH 存储器,按每页 512 字节进行分页管理,共 512 页,用户可以对 FLASH 进行整页擦除和逐字节编程操作。
因此,我在main.h中做宏定义如下:
/* 配置APP起动的地址 */ #define CW32L083_FLASH_START_ADDR 0x00000000 /*256K,0x0000 0000 - 0x0003 FFFF */ #define CW32L083_PAGE_SIZE 512 /* 按每页 512 字节进行分页管理,共 512 页 */ #define CW32L083_PAGE_NUM 512 #define CW32L083_B_PAGE_NUM 40 /* BOOT区 20K */ #define CW32L083_A_PAGE_NUM CW32L083_PAGE_NUM - CW32L083_B_PAGE_NUM /* APP区 扇区总数 */ #define CW32L083_A_START_PAGE CW32L083_B_PAGE_NUM /* APP起始扇区编号 */ #define CW32L083_A_START_ADDR CW32L083_FLASH_START_ADDR + CW32L083_A_START_PAGE * CW32L083_PAGE_SIZE /* APP 开始地址 */