最近要做一些带LCD彩屏显示的产品,部分应用需要比较高显示刷新率,为了知道单片机写屏幕的最高刷新率,做了如下简单的测试代码。测试基本思路是:向屏幕写一张满屏的图片,然后记录在1秒内能够写多少次,总共测试10秒,最后显示出每一秒的写入次数(示例代码是用了两张图片交替显示),这个思路也可以测试图形算法的速度
//----------------刷新率测试---------------------
u8 const *img_tab[2]={gImage_1,gImage_2}; //图像表
u8 rate_list[10]; //刷新率记录表
//刷新率测试
void LCD_Refresh(void)
{
static u8 i;
u8 rate; //刷新率
u8 times;
u8 j;
rate = 0;
times = 10;
while (1)
{
if (times) //为0停止刷屏
{
if (++i >= 2)i = 0;
LCD_DrawPicture_565(img_tab[i], 0, 0);
rate++; //刷新计次
}
if (Systick_GetSignal_1ms(1000, 1)) //1秒钟记录一次
{
if(times)
{
times--;
rate_list[times] = rate; //记录到表里
rate = 0; //清零重新记数
if(times == 0)
{
LCD_SetBackColor(BLACK);
LCD_SetForeColor(WHITE);
for (j = 0; j < 10; j++)
{
LCD_ShowNum(10, j * 16, rate_list[j], 3, 16);//显示刷新率
}
}
}
}
}
}
雅特力AT32F403A芯片 240M主频 + XMC 8位数据宽度 驱动ILI9341 320*240分辨率,没有使用DMA,实测写屏速度是37HZ (27.6ms/次)。