OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7110|回复: 5

请教原子哥援助 探索者F4 SD卡实验,内存申请 ,buf=mymalloc(0,512); (这句话是什么意思) 其中的0 代表什么意思 请看程序注释细说的

[复制链接]

21

主题

129

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
440
金钱
440
注册时间
2015-6-17
在线时间
136 小时
发表于 2015-9-20 22:14:41 | 显示全部楼层 |阅读模式
5金钱
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"  
#include "malloc.h" 
#include "sdio_sdcard.h"    

void show_sdcard_info(void)
{
switch(SDCardInfo.CardType)
{
case SDIO_STD_CAPACITY_SD_CARD_V1_1:printf("Card Type:SDSC V1.1\r\n");break;
case SDIO_STD_CAPACITY_SD_CARD_V2_0:printf("Card Type:SDSC V2.0\r\n");break;
case SDIO_HIGH_CAPACITY_SD_CARD:printf("Card Type:SDHC V2.0\r\n");break;
case SDIO_MULTIMEDIA_CARD:printf("Card Type:MMC Card\r\n");break;
}

  printf("Card ManufacturerID:%d\r\n",SDCardInfo.SD_cid.ManufacturerID);
  printf("Card RCA:%d\r\n",SDCardInfo.RCA); 
 printf("Card Capacity:%d MB\r\n",(u32)(SDCardInfo.CardCapacity>>20));
  printf("Card BlockSize:%d\r\n\r\n",SDCardInfo.CardBlockSize); 
}


int main(void)
{        
u8 key;  
u32 sd_size;
u8 *buf;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
delay_init(168);
uart_init(115200); 
LED_Init();  
  LCD_Init(); 
  KEY_Init(); 

//my_mem_init(SRAMIN); //我把内部内存池的内存的初始化注释掉了
//my_mem_init(SRAMCCM); //我把内部内存池的内存的初始化注释掉了

  POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");
LCD_ShowString(30,70,200,16,16,"SD CARD TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2014/5/15");   
LCD_ShowString(30,130,200,16,16,"KEY0:Read Sector 0");   
  while(SD_Init())
{
LCD_ShowString(30,150,200,16,16,"SD Card Error!");
delay_ms(500);
LCD_ShowString(30,150,200,16,16,"Please Check! ");
delay_ms(500);
LED0=!LED0;
}
show_sdcard_info(); 
  POINT_COLOR=BLUE; 
LCD_ShowString(30,150,200,16,16,"SD Card OK    ");
LCD_ShowString(30,170,200,16,16,"SD Card Size:     MB");
LCD_ShowNum(30+13*8,170,SDCardInfo.CardCapacity>>20,5,16);

while(1)
{
key=KEY_Scan(0);
if(key==KEY0_PRES)
{
buf=mymalloc(0,512);   (这句话是什么意思???)  0应该是内部内存块啊 malloc里面的定义, 可是这是SD卡,malloc里面又没有定义,怎么定义的
if(SD_ReadDisk(buf,0,1)==0) 
{
LCD_ShowString(30,190,200,16,16,"USART1 Sending Data...");
printf("SECTOR 0 DATA:\r\n");
for(sd_size=0;sd_size<512;sd_size++)
printf("%x ",buf[sd_size]);
printf("\r\nDATA ENDED\r\n");
LCD_ShowString(30,190,200,16,16,"USART1 Send Data Over!");
}
myfree(0,buf)
}   

}

最佳答案

查看完整内容[请看2#楼]

就是内存申请,0代表内部内存。 楼主要学会看代码,看函数注释。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-9-20 22:14:42 | 显示全部楼层
就是内存申请,0代表内部内存。
楼主要学会看代码,看函数注释。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

21

主题

129

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
440
金钱
440
注册时间
2015-6-17
在线时间
136 小时
 楼主| 发表于 2015-9-21 08:36:08 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
SD_ReadDisk(buf,0,1)-->这句话的意思是读取SD卡的第0扇区(512字节) 放到buf里面,理解的没错吧??
buf=mymalloc(0,512);——>这句话的意思是从内存块0分配512字节的空间。
mymalloc(0,512)括号中的0是代表内部内存 这个内部内存说的是哪个内部???如果想要从SD卡申请内存的话应该要在malloc里面定义SD卡的地址并且修改管理SD容量大小等等。。
话说过来 mymalloc(0,512)其中的0代表从内部SRAM(STM32F407ZGT6 196K的ram 内存管理只管理了100K的空间,不加内存管理表的大小)中申请512字节的内存???是这样吗??  如果是这样的话那就是从内部内存SRAM中申请的512字节的空间,最后SD卡读取的又是怎么回事??
希望我理解的是错的
回复

使用道具 举报

21

主题

129

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
440
金钱
440
注册时间
2015-6-17
在线时间
136 小时
 楼主| 发表于 2015-9-21 09:10:14 | 显示全部楼层
回复【2楼】明白了,是先从内部SRAM里面申请512字节的内存,然后读取SD卡扇区512字节放到内部SRAM里面,就是提前申请的512字节,然后把从SD卡里面读取的512字节的数放到内部SRAM之后再连续读取内部SRAM的512字节数据,然后把从内部SRAM的数据打印到串口。。。
明白了。。。。。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2017-7-6
在线时间
0 小时
发表于 2017-7-6 16:36:01 | 显示全部楼层
李振 发表于 2015-9-21 09:10
回复【2楼】明白了,是先从内部SRAM里面申请512字节的内存,然后读取SD卡扇区512字节放到内部SRAM里面,就 ...

谢谢,我正在学习这里了,还没有想明白,一看你的回复就立刻明白了。
回复

使用道具 举报

5

主题

22

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2018-4-6
在线时间
93 小时
发表于 2018-5-17 17:52:30 | 显示全部楼层
李振 发表于 2015-9-21 09:10
回复【2楼】明白了,是先从内部SRAM里面申请512字节的内存,然后读取SD卡扇区512字节放到内部SRAM里面,就 ...

好赞,看完代码后也有这疑惑,一下子说到点上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 04:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表