Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
内存分配
SDRAM
外部内存分配SDRAM
发布于 2020-09-18 14:06:04 浏览:1267
订阅该版
 用rt_memheap_init分配堆内存,一到初始化任务分配内存的时候就会出现问题  请教一下是什么原因导致这种情况
查看更多
2
个回答
默认排序
按发布时间排序
RXGC_5534
2020-09-18
这家伙很懒,什么也没写!
已经可以分配 ```c #if defined(RT_USING_MEMHEAP) && defined(RT_USING_MEMHEAP_AS_HEAP) rt_system_heap_init((void *) SDRAM_BANK_ADDR, (void *) STM32_SDRAM_END); rt_memheap_init(&system_heap, "sdram", (void *)SDRAM_BANK_ADDR, IS42S16400J_SIZE); #else rt_system_heap_init((void *) HEAP_BEGIN, (void *) HEAP_END); #5567 ``` 但是还是会死机,是哪里操作不对吗
YMQQ_3390
2021-05-15
这家伙很懒,什么也没写!
先在.s文件 里面添加FSMC_SRAM_Init()函数,实现外部SDRAM的初始化如下图:  然后在初始化的时候先调用 ```c rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END); ``` 初始化内部SRAM,然后调用 ``` rt_memheap_init(&system_heap,"sdram",(void *)0x68000000,0x100000); ``` 将外部SDRAM挂载到heap_map里面。编译下载后,就可以用rt_malloc等接口了。 FSMC_SRAM_Init()如下: ```c void FSMC_SRAM_Init(void) { /*-- GPIOs Configuration -----------------------------------------------------*/ /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */ RCC->AHB1ENR |= 0x00000078; //PD0,1,4,5,8~15 100M AF OUT_PP UP //PE0,1,7~15 100M AF OUT_PP UP //PF0~5,12~15 100M AF OUT_PP UP //PG0~5,10 100M AF OUT_PP UP /* Connect PDx pins to FMC Alternate function */ GPIOD->AFR[0] = 0x00CC00CC; GPIOD->AFR[1] = 0xCCCCCCCC; /* Configure PDx pins in Alternate function mode */ GPIOD->MODER = 0xAAAA0A0A; /* Configure PDx pins speed to 100 MHz */ GPIOD->OSPEEDR = 0xFFFF0F0F; /* Configure PDx pins Output type to push-pull */ GPIOD->OTYPER = 0x00000000; /* pull-up for PDx pins */ GPIOD->PUPDR = 0x55550505; /* Connect PEx pins to FMC Alternate function */ GPIOE->AFR[0] = 0xC00000CC; GPIOE->AFR[1] = 0xCCCCCCCC; /* Configure PEx pins in Alternate function mode */ GPIOE->MODER = 0xAAAA800A; /* Configure PEx pins speed to 100 MHz */ GPIOE->OSPEEDR = 0xFFFFC00F; /* Configure PEx pins Output type to push-pull */ GPIOE->OTYPER = 0x00000000; /* pull-up for PEx pins */ GPIOE->PUPDR = 0x55554005; /* Connect PFx pins to FMC Alternate function */ GPIOF->AFR[0] = 0x00CCCCCC; GPIOF->AFR[1] = 0xCCCC0000; /* Configure PFx pins in Alternate function mode */ GPIOF->MODER = 0xAA000AAA; /* Configure PFx pins speed to 100 MHz */ GPIOF->OSPEEDR = 0xFF000FFF; /* Configure PFx pins Output type to push-pull */ GPIOF->OTYPER = 0x00000000; /* pull-up for PFx pins */ GPIOF->PUPDR = 0x55000555; /* Connect PGx pins to FMC Alternate function */ GPIOG->AFR[0] = 0x00CCCCCC; GPIOG->AFR[1] = 0x00000C00; /* Configure PGx pins in Alternate function mode */ GPIOG->MODER = 0x00200AAA; /* Configure PGx pins speed to 100 MHz */ GPIOG->OSPEEDR = 0x00300FFF; /* Configure PGx pins Output type to push-pull */ GPIOG->OTYPER = 0x00000000; /* pull-up for PGx pins */ GPIOG->PUPDR = 0x00100555; /*-- FMC/FSMC Configuration --------------------------------------------------*/ /* Enable the FMC/FSMC interface clock */ RCC->AHB3ENR |= 0x00000001; //寄存器清零 //bank1有NE1~4,每一个有一个BCR+TCR,所以总共八个寄存器。 //这里我们使用NE3 ,也就对应BTCR[4],[5]。 FSMC_Bank1->BTCR[4]=0X00000000; FSMC_Bank1->BTCR[5]=0X00000000; FSMC_Bank1E->BWTR[4]=0X00000000; //操作BCR寄存器 使用异步模式,模式A(读写共用一个时序寄存器) //BTCR[偶数]:BCR寄存器;BTCR[奇数]:BTR寄存器 FSMC_Bank1->BTCR[4]|=1<<12;//存储器写使能 FSMC_Bank1->BTCR[4]|=1<<4; //存储器数据宽度为16bit //操作BTR寄存器 (HCLK=168M, 1个HCLK=6ns FSMC_Bank1->BTCR[5]|=8<<8; //数据保持时间(DATAST)为9个HCLK 6*9=54ns FSMC_Bank1->BTCR[5]|=0<<4; //地址保持时间(ADDHLD)未用到 FSMC_Bank1->BTCR[5]|=0<<0; //地址建立时间(ADDSET)为0个HCLK 0ns //闪存写时序寄存器 FSMC_Bank1E->BWTR[4]=0x0FFFFFFF;//默认值 //使能BANK1区域3 FSMC_Bank1->BTCR[4]|=1<<0; } ```
撰写答案
登录
注册新账号
关注者
0
被浏览
1.3k
关于作者
RXGC_5534
这家伙很懒,什么也没写!
提问
30
回答
29
被采纳
0
关注TA
发私信
相关问题
1
RT-Thread内存和字符串相关函数与C语言自带的内存和字符串相关函数冲突问题
2
rt_malloc函数调用时在参数检查时出现断言
3
RT-THREAD内核移植在德州仪器DSP(C28)
4
CMUX部分BUG?
5
不同的芯片RAM,可分配的内存空间为什么相同?
6
使用malloc申请内存以后socket无法接收?
7
nano的RT_HEAP_SIZE定义为什么不放在头文件里?
8
free和rt_free
9
遇到内存分配为NULL的问题
10
rt_ringbuffer_peak疑问
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
FATFS文件系统详解
2
PY32移植RT-Thread Nano记录
3
keil+env在STM32H743上实现pwm呼吸灯
4
STM32H7 实现 BootLoader 内 SDRAM 的初始化的注意事项
5
PSoC™ 62 温湿采集功耗测试
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
AT
FinSH
ART-Pi
Bootloader
CAN总线
Hardfault
文件系统
USB
DMA
RT-Thread
线程
SCons
RT-Thread Nano
stm32
MQTT
ESP8266
ota
WIZnet_W5500
RTC
rt-smart
UART
flash
rtthread
packages_软件包
freemodbus
潘多拉开发板_Pandora
I2C
cubemx
FAL
定时器
PWM
BSP
AB32VG1
ADC
中断
消息队列_msg_queue
SDIO
msh
keil
Debug
编译报错
socket
LVGL
SFUD
C++_cpp
本月问答贡献
xiaorui
3
个答案
1
次被采纳
rcp
3
个答案
1
次被采纳
RTT_逍遥
2
个答案
1
次被采纳
WKJay
1
个答案
1
次被采纳
JonasWen
1
个答案
1
次被采纳
本月文章贡献
小权一句两句
1
篇文章
4
次点赞
喵小黑
1
篇文章
4
次点赞
jaffer
1
篇文章
2
次点赞
Agony_L
1
篇文章
1
次点赞
疯洋CrazySheep
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部