高级会员

- 积分
- 527
- 金钱
- 527
- 注册时间
- 2012-10-27
- 在线时间
- 65 小时
|
本帖最后由 arm51avr 于 2019-9-16 18:46 编辑
本测试非常简单,只希望能帮助大家。如有更优解,欢迎上传测试结果并简述I/O配置等测试方案。
使用固定I/O输出STM32内部时钟信号,可以接近手册和固件库最大值,但不在本帖讨论范围。
1、寄存器:反转速率:27.9MHz ;while跳变处:18.8MHz。
2、位带 :反转速率:21.18MHz ;while跳变处 12.02MHz
3、库函数:反转速率:9.9MHz;while跳变处基本和平时一样
硬件环境:
开发板:探索者,STM32F407ZGT6,LED0(DS0);
示波器:Agilent DSOX1102G 200MHz 2GSa/s,探头打到 x10 档以增加带宽。
软件环境:
MDK5;
跑马灯实验;
//反转速率:27.9MHz ;while跳变处:18.8MHz。
while(1)
{
GPIOF->BSRRH=GPIO_Pin_9;
GPIOF->BSRRL=GPIO_Pin_9;
GPIOF->BSRRH=GPIO_Pin_9;
GPIOF->BSRRL=GPIO_Pin_9;
GPIOF->BSRRH=GPIO_Pin_9;
GPIOF->BSRRL=GPIO_Pin_9;
GPIOF->BSRRH=GPIO_Pin_9;
GPIOF->BSRRL=GPIO_Pin_9;
GPIOF->BSRRH=GPIO_Pin_9;
GPIOF->BSRRL=GPIO_Pin_9;
GPIOF->BSRRH=GPIO_Pin_9;
GPIOF->BSRRL=GPIO_Pin_9;
GPIOF->BSRRH=GPIO_Pin_9;
GPIOF->BSRRL=GPIO_Pin_9;
GPIOF->BSRRH=GPIO_Pin_9;
GPIOF->BSRRL=GPIO_Pin_9;
GPIOF->BSRRH=GPIO_Pin_9;
GPIOF->BSRRL=GPIO_Pin_9;
GPIOF->BSRRH=GPIO_Pin_9;
GPIOF->BSRRL=GPIO_Pin_9;
}
//21.18MHz ;while跳变处 12.02MHz
while(1)
{
LED0=0;
LED0=1;
LED0=0;
LED0=1;
LED0=0;
LED0=1;
LED0=0;
LED0=1;
LED0=0;
LED0=1;
LED0=0;
LED0=1;
LED0=0;
LED0=1;
LED0=0;
LED0=1;
LED0=0;
LED0=1;
LED0=0;
LED0=1;
}
// 9.9MHz;while跳变处基本和平时一样
while(1)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
}
|
|