测试不同情况下IO翻转的速度
int main()
{
uint32_t i;
RCC_Configuration(); //时钟配置64M
GPIO_Configuration();//LED初始化
while(1)
{
PA08_TOG();
}
}
速率为4MHz:
int main()
{
uint32_t i;
RCC_Configuration(); //时钟配置64M
GPIO_Configuration();//LED初始化
while(1)
{
PA08_SETHIGH();
PA08_SETLOW();
}
}
所示频率为6.41MHz
int main()
{
uint32_t i;
RCC_Configuration(); //时钟配置64M
GPIO_Configuration();//LED初始化
loop:
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
PA08_SETHIGH();
PA08_SETLOW();
goto loop;
}
测得波形如下:
从上图我们得知频率可以达到15.9MHz。
【总结】经测试,对GPIO进行了原子的操作,最高速度可以达到15.9MHz。对寄存器直接写BSRR、BRR,相比TOG速度还是要快很多。当于提供了TOG这个寄存器,对于需要翻转电平,还是非常方便的。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !