三种操作IO口方式的不同时间

2019-07-21 04:25发布

探索者407,运行跑马灯实验,用三种不同方式去操作IO口,看执行时间(在MDK中将Debug-》Setting-》Trace-》Core设为168Mhz):
1,位带操作方式
LED0=0;  //LED0亮(此句设置一个断点)
LED1=1; //LED1灭
delay_ms(300);(此处再设置一个断点)
运行时间:70ns

2,直接操作寄存器
GPIOF->BSRRH=GPIO_Pin_9;//LED0亮(此句设置一个断点)
GPIOF->BSRRL=GPIO_Pin_10;//LED1灭
delay_ms(500);(此处再设置一个断点)
运行时间:40ns

3,直接操作库函数
GPIO_ResetBits(GPIOF,GPIO_Pin_9);  //(此句设置一个断点)
GPIO_SetBits(GPIOF,GPIO_Pin_10);   //
delay_ms(300);(此处再设置一个断点)
运行时间:100ns





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
XXDJ
2019-07-21 15:17
回复【3楼】xuande:
---------------------------------
不是,调试时,看MDK左侧Internal中的Sec参数计算,或者右下侧最底端(Status Bar)t1参数计算。
好像说将MDK里面的参数(在MDK中将Debug-》Setting-》Trace-》Core设为168Mhz)设置好,就差不多了,默认是10Mhz。
只是评估一下直接操纵寄存器和用库函数操作,时间上有多大区别。

一周热门 更多>