本帖最后由 ArterySW 于 2022-2-17 19:38 编辑
使用AT32F403A的224KB SRAM时有个注意的地方,之前没详细了解就开用,然后结果是肯定的——掉坑里面了,403A默认的配置是96KB,然后需要对用户选择字节进行配置才能使用224KB SRAM
配置方法 1. 使用雅特力的ICP 进行配置(可在官网下载) (1)当连接上芯片后,点击设备操作->选择字节
‘
(2)选择224KB SRAM (3)然后点击应用到设备,(可以点击从设备加载,来看当前的配置)
感觉该工具做得很不错,非常的容易上手,这里点个赞
2. 使用软件方法进行配置 可参考雅特力的bsp里project\at_start_f403a\examples\sram\extend_sram
使用以下函数进行配置 void extend_sram(void) { if(((USD->eopb0) & 0xFF) != EXTEND_SRAM) { /* FLASH解锁 */ flash_unlock();
/* 擦除选择字节 */ flash_user_system_data_erase();
/* 设置SRAM大小*/ flash_user_system_data_program((uint32_t)&USD->eopb0, EXTEND_SRAM);
/* 系统复位重启生效 */ nvic_system_reset(); } }
#define EXTEND_SRAM 0xFE //使用224K #define EXTEND_SRAM 0xFF //使用96K
该函数放置的位置可以放在SystemInit()函数的程序开始处,如下: void SystemInit (void) { extend_sram(); …. …. }
雅特力官方的做法是放在了.S文件里,也就是相当于先执行extend_sram()函数,后执行SystemInit(),其实效果是一样的,以下是雅特力官方的做法 Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main IMPORT SystemInit ; add for extend sram IMPORT extend_sram MOV32 R0, #0x20001000 MOV SP, R0 LDR R0, =extend_sram BLX R0 MOV32 R0, #0x08000000 LDR SP, [R0]
LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP
配置好了之后就可以愉快的玩耍了,这224K SRAM,嗯..................真香
|
有没有寄存器板的,void extend_SRAM(void)这个函数用AT的库才行,我用的ST的库,编译都通过不了