发新帖我要提问
12
返回列表
打印
[STM32F1]

STM32基础篇 ——SRAM 内存管理实验

[复制链接]
楼主: aizaixiyuanqian
手机看帖
扫描二维码
随时随地手机跟帖
21
aizaixiyuanqian|  楼主 | 2018-3-7 22:39 | 只看该作者 回帖奖励 |倒序浏览
内存管理例程主函数
int main(void)
{
uint32_t i;
uint8_t ledState, keyValue, addr = 0;
uint8_t *p[64];
/* 初始化 */
TFT_Init();
FLASH_Init();
USART1_Config(9600);
SRAM_Config();
KEY_Config();
LED_Config();
MEMORY_Init();
GUI_DisplayInit();
while(1)
{
/* 通过按键进行相应的操作 */
keyValue = KEY_Scan();
if(keyValue)
{
switch(keyValue)
{
case(KEY_UP):
p[addr] = malloc(32 * 100); //一次开辟 100 个内存块
if(addr<64)
{
addr++;
}
break;
case(KEY_DOWN):
if(addr > 0)
{
addr--;
}
free(p[addr]);
break;
}
GUI_DisplayData();
}
/* LED 灯闪烁 */
i++;
if(i>0x5FFFF)
{
i = 0;
if(ledState == 0xFE)
{
ledState = 0xFF;
}
else
{
ledState = 0xFE;
}
LED_SetState(ledState);
}
}
}

使用特权

评论回复
22
aizaixiyuanqian|  楼主 | 2018-3-7 22:39 | 只看该作者
这个主函数的实现效果是,按 KEY_UP 键申请 3.2KB 内存;按 KEY_DOWN
键,释放相应的内存。大家注意在使用内存申请的时候,申请的空间内存用完要
释放,否则的话内存池空闲内存只会越来越少。主函数中还调用一些显示函数,
这里就不详细讲了,大家可以查看例程里面的具体程序实现。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则