![](https://i-blog.csdnimg.cn/blog_migrate/e178cfd648774f9bfd0a2e3e0c20f748.png)
如图所示,在stm32的库函数中可以看到:在GPIO输出模式,有三种频率可以选择,2MHz、10MHz和50MHz。这三个频率说的是I/O口驱动电路的响应频率而不是输出信号的频率。芯片的内部做了多个响应频率不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路。通过选取不同频率的输出驱动电路达到最佳的控制噪声和降低功耗的效果。
高频驱动电路噪声高,不需要高的输出频率时应该选择低频驱动电路,以提高系统的EMI性能。当然如果要输出较高频率的信号却选用了较低的输出驱动模块,很可能会得到失真的输出信号。例如,对于串口,假如最大波特率只需115.2kb/s,那么用2MHz的GPIO引脚频率就可以了,既省电,噪声也小。对于I2C接口,假如使用400kb/s波特率,又想留一些裕量,2MHz或许不够,可以选择10MHz的引脚频率。对于SPI接口,假如使用18Mb/s或9Mb/s的波特率,用10MHz的引脚频率显然不够了,需要选50MHz的。当然引脚频率是对输出而言的,当GPIO配置为输入模式时,输出速度配置毫无意义,因为输出驱动电路与输入端口是断开的。