内部 144K RAM 测试@120MHz读写, STC32G144K246
程序内指定了内部IRC的时钟频率,
CPU工作在120MHz, 通过HPLL倍频到120MHz,
CKCON &= ~0x07:xdata操作等待时间设置为0
RAM分布:16K edata,64K xdata,
64k far(同样属于xdata,但是编译器只认64K内的,后面的需要使用far关键词)
需要注意的是,far部分需要设置,具体是在底部的RAM区域设置起始地址和范围:
程序使用三个数组来测试,对数组每个位写入一个自增变量然后再读出:
- unsigned char far eramtest[1024UL*63];
- unsigned char xdata eramtest1[1024UL*63];
- unsigned char edata eramtest2[1024UL*14];
复制代码
- //用户程序
- eramtest[index] = index&0xff;
- eramtest1[index] = index&0xff;
- if(index<14336)eramtest2[index] = index&0xff;
- uart_send(sprintf(uart_buff, "\t\tt0[%ld]:0x%x",index,(int)eramtest[index]));
- uart_send(sprintf(uart_buff, "\t\tt1[%ld]:0x%x",index,(int)eramtest1[index]));
- if(index<14336)uart_send(sprintf(uart_buff, "\t\tt2[%ld]:0x%x",index,(int)eramtest2[index]));
- uart_send(sprintf(uart_buff, "\r\n"));
- index++;
- if(index>=64512){index = 0;while(1);}//进入死循环,暂停
复制代码
此时编译后的输出信息为:
结果:(需要设置波特率为500000)
可以看到打印信息中,同一个索引下的读出地址一致
且打印到最后也没有异常重启或者数据错乱
以下是编译通过的工程:
STC32G144K246 全144K RAM测试.zip
(71.12 KB, 下载次数: 9)
|