⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 malloc.c

📁 基于STM32的RTOS例程
💻 C
字号:
/**************************************************************************
*                                                                         *
*   PROJECT     : ARM port for ucos                                       *
*                                                                         *
*   MODULE      : malloc.c                                                *
*                                                                         *
*   AUTHOR      : luo_huilian					 						  *
*                 URL  : http://www.bogodtech.com							  *
*                 EMAIL: armgcc@foxmail.com                               *
*                                                                         *
*   PROCESSOR   : STR710 (32 bit ARM7TDI RISC core )                      *
*                                                                         *
*   IDE         : SDT 2.51 & ADS 1.2                                      *
*                                                                         *
*   DESCRIPTION :                                                         *
*   This is the Framework module. Creates an operating infrastructure.    *
*                                                                         *
**************************************************************************/


#include "config.h"



/* ********************************************************************* */
/* Local  Maric definitions */


/* MEMORY */


#define BlockNum 				8  
#define BlockSize 				16 


/* ********************************************************************* */
/* Global variable definitions */


OS_MEM 	*Malloc_Sixteen_p;
INT8U 	malloc_sixteen_addr[BlockNum][BlockSize];


/*
*********************************************************************************************
*                                       mem_init
*
* Description: Create PLUS Memory Pool.               
*
* Arguments  : none.
*
* Return     : none.
*
* Author     : luo_huilian
*
* Date       : 2007-3-14
*
* Note(s)    : 
*********************************************************************************************
*/

void mem_init(void)
{
	INT8U err;
	
	/* 创建第一个内存分区 16Byte/block */ 
	//memset((INT8U*)malloc_sixteen_addr , 0xFE , sizeof(malloc_sixteen_addr));
	
	Malloc_Sixteen_p = OSMemCreate(malloc_sixteen_addr, BlockNum, BlockSize, &err); 

	if(err == OS_NO_ERR )
		printf("Create_Memory_partition_successfully,Malloc_Sixteen_p\n");
	else
		printf("Create_Memory_partition_error: %d\n",err);	
}

/*
*********************************************************************************************
*                                       mem_malloc
*
* Description: Malloc PLUS Memory Pool with SUSPEND.             
*
* Arguments  : none.
*
* Return     : none.
*
* Author     : luo_huilian
*
* Date       : 2007-3-14
*
* Note(s)    : 
*********************************************************************************************
*/

void *mem_malloc_sixteen(INT16U alloc_size)
{
	INT8U 		err;
	void 		*temp_ptr = (void*)0;

	OS_MEM_DATA mem_info;

	if(alloc_size < 16)
	{
		err= OSMemQuery(Malloc_Sixteen_p,&mem_info); 
		//printf("mem_info value: %d\n",mem_info.OSNFree);
		if(mem_info.OSNFree >= 1)
		{
			temp_ptr=OSMemGet(Malloc_Sixteen_p,&err);
		}
		else
		{
			printf("Malloc_Sixteen_p is not free memory!\n");	 	
		}
	}
	
	return temp_ptr;
	
}



/*
*********************************************************************************************
*                                       mem_free
*
* Description: It is free memory that is allocte by mem_malloc or mem_startup.             
*
* Arguments  : none.
*
* Return     : none.
*
* Author     : luo_huilian
*
* Date       : 2007-3-14
*
* Note(s)    : 
*********************************************************************************************
*/
void mem_free_sixteen(void *memory_ptr)
{
	INT8U	err;
	
	err = OSMemPut(Malloc_Sixteen_p,memory_ptr); 

	if (err == OS_NO_ERR)
		printf("free ok\n");
	else
		printf("mem_free_sixteen  is fail!\n");
	
}



/* ************************************end of file **************************************** */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -