困惑:同样代码ARM9比M3执行更慢?

2019-12-14 12:43发布

本帖最后由 prince2010 于 2018-12-11 09:25 编辑

代码——

static void delay(u32 n)
{
    volatile u32 i = n;

    while(i--);
}


N32926调用——

void SpeedTest(void)
{
    gpio_setportdir(GPIO_PORTG, 0x01 << 9, 0x01 << 9);
    gpio_configure(GPIO_PORTG, 9);
    gpio_setportval(GPIO_PORTG, 0x01 << 9, 0x00 << 9);//输出低电平

    while(1)
    {
        delay(5000);//实测约8ms        

        gpio_setportval(GPIO_PORTG, 0x01 << 9, 0x00 << 9);//输出低电平

        delay(5000);

        gpio_setportval(GPIO_PORTG, 0x01 << 9, 0x01 << 9);//输出高电平
    }
}

STM32F103调用——

void SpeedTest(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;//POWER
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    while(1)
    {
        delay(5000);//实测600us        

        GPIO_ResetBits(GPIOC, GPIO_Pin_13);
        
        delay(5000);

        GPIO_SetBits(GPIOC, GPIO_Pin_13);
    }
}


疑问:高系统时钟的ARM9反而比低系统时钟的M3慢?


补充:N32926:162MHz;STM32:72MHz


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
yuanzhengrong
1楼-- · 2019-12-14 16:09
 精彩回答 2  元偷偷看……
浮华一生
2楼-- · 2019-12-14 19:34
MMU Cache 这些开了没有?
prince2010
3楼-- · 2019-12-14 21:31
yuanzhengrong 发表于 2018-12-11 09:29
arm9的程序是裸机还是Linux下运行的?

裸..............
prince2010
4楼-- · 2019-12-15 01:36
浮华一生 发表于 2018-12-11 09:30
MMU Cache 这些开了没有?

找到原因了,确实是没有打开Cache
aozima
5楼-- · 2019-12-15 04:18
ARM9 也分N种,有部分开了cache也比M3要慢。
bitcoin2
6楼-- · 2019-12-15 07:43
 精彩回答 2  元偷偷看……

一周热门 更多>