while(1)
{
PE1 ^= 1;
}
执行以上代码 ,高低电平时间为142ns
while(1)
{
PE1 ^= 1;
cnt++;
cnt++;
cnt++;
cnt++;
cnt++;
cnt++;
cnt++;
cnt++;
}
执行以上代码,高低电平时间各为846ns
(846-142)/8 = 88
我理解成执行cnt++ 需要88ns
看keil中,这条语句执行了5条汇编
0x000005AA 4840 LDR r0,[pc,#256] ; @0x000006AC
0x000005AC 8800 LDRH r0,[r0,#0x00]
0x000005AE 1C40 ADDS r0,r0,#1
0x000005B0 493E LDR r1,[pc,#248] ; @0x000006AC
0x000005B2 8008 STRH r0,[r1,#0x00]
那执行一条汇编大概为17ns,按17ns算的话,CPU工作时钟才58Mhz
这样的话,IO翻转的速度才7M? |