IO口翻转速度

2019-07-21 07:40发布

我设置时钟为72Mhz,然后翻转PA8引脚的电平,程序如:
while(1)
{
GPIOA->BSRR=1<<8;
GPIOA->BRR=1<<8;
}
但是实测出来的频率才不到4Mhz,我知道while在执行的时候会占用指令周期,但是按道理这个io口翻转速度可以达到18Mhz左右吧,可是现在这么小,为什么呢?
我设置io口速度为50Mhz。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
a4615800
1楼-- · 2019-07-21 10:26
不会这么慢吧。。。。。。。。你东西又问题。个别情况不考虑。。。。
正点原子
2楼-- · 2019-07-21 14:25
 精彩回答 2  元偷偷看……
ST-FAE-SALE
3楼-- · 2019-07-21 19:05
恩,我知道了,因为有个客户给我的问题是让我外部晶振使用11.0592M,然后使用io口翻转的方法来生成5.53Mhz的方波,他用sliabs系列的c8051内核就做成了,然后用内部晶振倍频到48M给USB使用。就是同时使得两个高晶振使用!
ST-FAE-SALE
4楼-- · 2019-07-22 00:05
 


http://www.amobbs.com/thread-4605481-1-1.html
示波器实测!发现翻转间隔为166ns(6M),如下图,(2us跳12次,一次166us)
这是我在阿莫论坛里面看到的帖子,那我就想知道老大这是为什么呢?可以达到6M哦。


正点原子
5楼-- · 2019-07-22 05:44
看汇编代码比较好找原因.
Pony279
6楼-- · 2019-07-22 10:43
用软件来产生这种速度的方波不是什么好方法,

有跳转的,执行速度还和内部的流水线有关。

而且,用 STM32 做这个,软件还得把大量的时间花在这种地方,太浪费了。

一周热门 更多>