中级会员
- 积分
- 269
- 金钱
- 269
- 注册时间
- 2022-11-1
- 在线时间
- 53 小时
|
楼主 |
发表于 2023-3-22 10:44:34
|
显示全部楼层
老哥,我是按正点原子带的开发手册写的,它上面地址是可以变化的,这是主函数的代码
- int main(void)
- {
- u8 key;
- u8 i=0;
- u8 *p=0;
- u8 *tp=0;
- u8 paddr[18]; //存放P Addr:+p地址的ASCII值
- u8 sramx=0; //默认为内部sram
-
- delay_init(); //延时函数初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
- uart_init(115200); //串口初始化为115200
- LED_Init(); //初始化与LED连接的硬件接口
- KEY_Init(); //初始化按键
- FSMC_SRAM_Init(); //初始化外部SRAM
- my_mem_init(SRAMIN); //初始化内部内存池
- my_mem_init(SRAMEX); //初始化外部内存池
-
- printf("\r\n KEY0:Malloc KEY2:Free \r\n");
- printf("\r\n KEY_UP:SRAMx KEY1:Write \r\n");
-
- printf("\r\n SRAMIN \r\n");
- printf("\r\n SRAMIN USED: 0 % \r\n");
- printf("\r\n SRAMEX USED: 0 % \r\n");
-
- while(1)
- {
- key=KEY_Scan(0); //不支持连按
- switch(key)
- {
- case 0: //没有按键按下
- break;
-
- case KEY0_PRES: //KEY0按下
- p=mymalloc(sramx,2048);//申请2K字节
- if(p!=NULL)sprintf((char*)p,"Memory Malloc Test%03d",i);//向p写入一些内容
- //printf ("\r\n P Addr: %x\r\n",paddr); //显示地址
- printf("\r\n SRAMIN USED: %d %% \r\n",my_mem_perused(SRAMIN)); //显示内部内存使用率
- printf("\r\n SRAMEX USED: %d %% \r\n",my_mem_perused(SRAMEX)); //显示外部内存使用率
- break;
-
-
- case KEY1_PRES: //KEY1按下
- if(p!=NULL)
- {
- sprintf((char*)p,"Memory Malloc Test%03d",i);//更新显示内容
- printf("\r\n %s \r\n",p); //显示p的内容
- }
- break;
-
-
- case KEY2_PRES: //KEY2按下
- myfree(sramx,p);//释放内存
- p=0; //指向空地址
- //printf ("\r\n P Addr: %x\r\n",paddr);
- printf("\r\n SRAMIN USED: %d %% \r\n",my_mem_perused(SRAMIN)); //显示内部内存使用率
- printf("\r\n SRAMEX USED: %d %% \r\n",my_mem_perused(SRAMEX)); //显示外部内存使用率
- break;
-
- case WKUP_PRES: //KEY UP按下
- sramx=!sramx; //切换当前malloc/free操作对象
- if(sramx)
- printf("\r\n SRAMEX \r\n");
- else
- printf("\r\n SRAMIN \r\n");
- break;
- }
-
-
- if(tp!=p) //判断申请地址是否改变
- {
- tp=p;
- sprintf((char*)paddr,"P Addr:0X%08X",(u32)tp);
-
- printf ("\r\n P Addr: 0X%X\r\n",paddr); //申请到的内存值的地址
- if(p)
- printf ("\r\n %s \r\n",p); //显示p的内容
-
- }
- delay_ms(10);
- i++;
- if((i%20)==0)//DS0闪烁.
- {
-
- LED1=!LED1;
- }
- }
- }
复制代码 |
|