STM32 IO口速度测试报告
测试条件:STM32F10F103VET6 @ 72MHz, Keil Ver:4.71.2.0
注:不同情况下测试结果有所不同,
本测试结果仅作为编程的参考
IO口软件翻转测试 | |||||
测试语句
|
IO口时钟(MHz)
| 测得IO口翻转速度(MHz) | |||
优化级别0
| 优化级别1
| 优化级别2
| 优化级别3
| ||
while(1) { GPIO_SetBits(GPIOD,GPIO_Pin_All); GPIO_ResetBits(GPIOD,GPIO_Pin_All); }
| 2 | 1.712 | 2.404 | 2.315 | 2.315 |
10 | 1.712 | 2.404 | 2.315 | 2.315 | |
50
| 1.712
| 2.000
| 1.938
| 1.938
| |
while(1) { GPIO_SetBits(GPIOD,GPIO_Pin_11); GPIO_ResetBits(GPIOD,GPIO_Pin_11); }
| 2 | 1.712 | 2.404 | 2.315 | 2.315 |
10 | 1.712 | 2.404 | 2.315 | 2.315 | |
50
| 1.712
| 2.000
| 1.938
| 1.938
| |
while(1) { GPIOD->ODR = 0xffff; GPIOD->ODR = 0x0000; }
| 2 | 4.808 | 7.937 | 7.937 | 7.937 |
10 | 4.808 | 7.937 | 7.937 | 7.937 | |
50
| 4.808
| 12.05
| 12.05
| 12.05
| |
while(1) { GPIOD->ODR |= 0x0800; GPIOD->ODR &= 0xf7ff; }
| 2 | 1.634 | 3.597 | 3.597 | 3.597 |
10 | 1.634 | 3.597 | 3.597 | 3.597 | |
50
| 1.634
| 3.597
| 3.597
| 3.597
| |
while(1) { GPIOD->ODR |= 0x0800; GPIOD->ODR &= ~0x0800; }
| 2 | 2.000 | 3.597 | 3.597 | 3.597 |
10 | 2.000 | 3.597 | 3.597 | 3.597 | |
50
| 2.000
| 3.597
| 3.597
| 3.597
| |
while(1) { GPIOD->BSRR = 0x0800; GPIOD->BRR = 0x0800; } | 2 | 4.505 | 7.937 | 7.937 | 7.937 |
10 | 4.505 | 7.937 | 7.937 | 7.937 | |
50 | 4.505 | 12.05 | 12.05 | 12.05 |
原创文章,转载请注明出处。
如有疑问或建议,请在回复中说明,谢谢!