设为首页 加入收藏

TOP

AIR32F103(七) AIR32F103CBT6/CCT6启用96K内存(二)
2023-07-23 13:31:14 】 浏览:108
Tags:AIR32F103 AIR32F103CBT6/CCT6 启用 96K 内存
us config SYSCFG->SYSCFG_RSVD0[5] = 0x20018000; RCC->RCC_SYSCFG_CONFIG = 0; // Lock sys_cfg gate control SYSCFG->SYSCFG_LOCK = ~0xa7d93a86; // Lock from level 1 to 3 SYSCFG->SYSCFG_LOCK = ~0xab12dfcd; SYSCFG->SYSCFG_LOCK = ~0xcded3526; *(__IO uint32_t *)(FLASH_R_BASE + 0x28C) = ~0xa5a5a5a5;// Lock QSPI return 1; }

测试 96K 内存的例子

测试96K内存的源代码

DMA_TC_Interrupt_96k_Malloc 和 DMA_TC_Interrupt_96k_Static 这两个示例分别演示动态和静态使用超过64K内存的情况.

Update 2023-01-14: 在 EEVblog 大佬 David Alfa的帮助下, 开启PLL倍频和96K内存的代码已经放入启动文件(startup file), 默认启动自动开启, 所以不再需要任何设置.

3. 动态和静态申请

47000 个 uint16_t, 对应了 47K * 2 = 94K 内存

动态申请

#define BUFF_SIZE 47000
uint16_t *dma_buf;

...

dma_buf =  (uint16_t *)malloc(BUFF_SIZE * sizeof(uint16_t));
printf("Malloc size: %d\r\n", BUFF_SIZE * sizeof(uint16_t));

静态申请

#define BUFF_SIZE 47000
uint16_t dma_buf[BUFF_SIZE];

需要确保在未完成内存容量设置前, 不要使用 dma_buf

最后

据说除了额外的RAM, 还有额外的FLASH, 但是我没试成功, 在写入flash后校验不通过, 也可能我使用的姿势不对.

原先AIR32F103CBT6只有32K内存, 不能跑Helix MP3解码, 现在的96K内存足够跑两个, LOL

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇痞子衡嵌入式:低功耗&高性能边缘.. 下一篇痞子衡嵌入式:探讨i.MXRT下FlexS..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目