你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 GPIO口的速度是多少?含全部代码和显示图

[复制链接]
得蜜 发布时间:2008-11-28 14:59
吃过晚饭 忽然想测试一下GPIO口的速度 2 j* {! x! k/ P9 _8 [& G
使用的库函数   不是裸奔 晶振8M   9倍频 , k! X! j3 V, I8 M

+ J$ o& L1 E6 [& KRCC_HCLKConfig(RCC_SYSCLK_Div1);& a! @; p5 ~3 b* S' |; M8 k
7 k! \$ {+ _  @* r( v& t8 f4 B1 k
//设置高速 AHB 时钟(PCLK2)0 f: |5 L$ T+ C0 h" r
RCC_PCLK2Config(RCC_HCLK_Div1);7 t3 ^6 }+ D# ~, ^5 c
6 z3 U7 i% U4 r& R! D
//设置低速 AHB 时钟(PCLK1)
% w  p- n3 P0 C6 M+ u( fRCC_PCLK1Config(RCC_HCLK_Div1);
& f' ^7 Q6 P2 Q& ?. C2 H- O+ @% K8 M% F+ G9 I2 x
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 ;8 O8 B) m. y# ]/ f% u9 [& C$ G* S# n
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;8 g7 |4 R% H! _3 z
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
/ d# N2 J- w* y# M6 r* ~# u& Q   GPIO_Init(GPIOC, &GPIO_InitStructure);% v4 [. n4 k+ H& c- H1 V/ x

. \! B9 M+ B/ S( A: O7 H: M   while (1)
+ O4 b# ?) M5 J. f0 Q6 _2 O! z7 Q   {
* @; ~0 g2 d" Q% x% a   GPIO_SetBits(GPIOC, GPIO_Pin_10);  _! M2 A+ c6 C2 T
   GPIO_ResetBits(GPIOC, GPIO_Pin_10);
) L/ Q' j$ |, D. \   }) a- J: m% n0 j8 c) {9 R( R1 S& r* E5 x
    + e0 ~0 h6 [% M4 w# d' X
示波器 : 安捷伦 54621D ' b0 l6 L# b$ I- g) e' b
用示波器看的速度是2.0MHz   呵呵 不知道有没有哥们用裸奔的方法测试了的 呵呵
% J8 x$ f0 z9 p  J# N* Z+ H8 d
 ' U1 x: I) N* U8 ^
 ( f  z4 G( }0 F4 R1 E
0 d1 x6 ^. ]1 S/ V5 v4 ^
* v6 ^, R) ?& T1 N0 e
 $ b/ e9 ~* |" `
 ( y' l& U0 s/ r; Q/ x
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
! Q$ k' D7 x+ W5 @3 B  @1 K+ p- G然后力哥裸奔的测试结果是:: u; H8 h* e, Y0 w$ x
裸奔测了一下
" p% B7 L9 u9 c/ A! [/ @0 _4 ^/ C& I4 q/ S
示波器显示是 2.768M Hz2 x( T; r/ F! u- W9 M
$ J+ @4 H( ^% T* J' c
固纬 GDS-806S 示波器' T. R/ y" L: S: u- e& ~# E, i
* S# ]3 r( u8 b& v" C, K3 V
while(1)+ u( |, V% k& _  _
   {
6 T7 j# j" [: C4 W# YLED1_OFF;
; e& Z6 }& e# g0 X) NLED1_ON;
8 _) t# P5 W; Z2 u  z* g7 N   }

# }+ k; s' T$ S5 y- n  l, G' N* u 
- L; \; p6 b' v  K4 q* ]6 W, F+ ~////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8 ]. ?( [1 g9 _6 s
力哥继续测试 考虑上流水线( s. I& v* d. h. d" [' O$ M' y
继续裸奔
  b* U& T  Y, J示波器显示达到 4M Hz$ a# n) z8 L  W8 h& _. F
6 s3 u0 [: i; V: N# e# y
固纬 GDS-806S 示波器+ Y8 C- p3 Q2 b
6 Y% s7 U' z' h! M
   while(1)) a2 f6 S! ^! B# ]
   {
; i6 y4 ~% U0 \6 m* s: Q3 N) g  aLED1_OFF;
1 ^# ?3 ?/ Q: ]$ N; o. S; zLED1_ON;
6 y% ~6 G. u- }  X& FLED1_OFF;; o# O0 S4 Z: ~/ r
LED1_ON;7 R  j$ k" I. u/ Z) w, h" O
.................................................(200行重复)" M$ H9 T2 g+ P- O9 X( \
LED1_OFF;: |. u  R* k8 Y$ _8 C# A" j
LED1_ON;, `) o' ~( k4 [9 L# o0 }, o* X
LED1_OFF;/ k/ P9 F. |2 ]
LED1_ON;
& b4 p4 u- x  I; }- f; R" {   }

8 A. ~8 F  i2 X- a 
2 D% a* s' Q! }$ m* d- H$ c///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  I: d5 n  N% c1 Q* K + Z# h% j; R  e0 v( R5 i5 n6 S
然后我也把流水线考虑进去 继续使用固件库的方式: E) d+ x/ L! e3 o; q2 S9 y
呵呵 我也在循环体内部加了N句 也考虑了流水线! g. ^0 J' I& Z
% ]# v9 ?* A) m, E& Y) h' U
   while (1)
" ]2 \+ m* y6 w9 Y$ M   {
, g+ l' s6 e5 ]& X   GPIO_SetBits(GPIOC, GPIO_Pin_10);* Q4 o7 ^9 {. j7 s* @
   GPIO_ResetBits(GPIOC, GPIO_Pin_10);8 Q7 i. [$ d4 a! c' W" A
   GPIO_SetBits(GPIOC, GPIO_Pin_10);
: E* C9 Y8 [7 P   GPIO_ResetBits(GPIOC, GPIO_Pin_10);2 I& U) ^6 J! o
   ................ 中间200句
: n4 l8 Y6 H5 M& J1 }  V4 z. _' O   GPIO_SetBits(GPIOC, GPIO_Pin_10);  @+ F$ G- d( S, H" g# ^$ Y
   GPIO_ResetBits(GPIOC, GPIO_Pin_10);
+ X9 i; ^7 H* y/ ], V- _9 D   GPIO_SetBits(GPIOC, GPIO_Pin_10);5 L. `8 p" n6 d( l1 J* A, }5 }' U
   GPIO_ResetBits(GPIOC, GPIO_Pin_10);
( K/ X3 q* X3 e" R   }
9 u) E; j- H4 i3 l+ g/ \
 
  b- n# Q% `4 E1 a: g6 c# E; u示波器 : 安捷伦 54621D : l% M1 Y2 D" ^$ r5 o" Z; V, Y
然后速度是2.725MHz   呵呵   看来流水线还是起了作用了的 嘿嘿
+ @$ ?$ W! p$ E- ^

1 D- c8 H: s- {  J+ n; ]: H& c# S" ?0 K8 P3 L1 m. g8 A) r  c9 t
 ; X$ T4 x' D7 ?. ^; C
赞 收藏 评论19 发布时间:2008-11-28 14:59

举报

19个回答
sonicll 回答时间:2008-11-28 16:18:45

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

用固件库函数肯定会慢吧,库函数里都有检查参数的函数。直接对寄存器赋值操作试试看
# a0 w" a6 L0 v$ EGPIOC->BSRR = GPIO_Pin_10;
  W4 Y* n$ p2 p3 E  }8 F& PGPIOC->BRR = GPIO_Pin_10;
jklh-95293 回答时间:2008-11-30 01:51:17

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

直接利用寄存器操作肯定快多了,但我没有示波器,你再实验一下,看看结果如何
zhyf 回答时间:2008-12-10 15:50:29

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

感谢分享!
littleworm-9649 回答时间:2008-12-11 11:03:57

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

貌似是我的原创啊% i, S. t4 L- e  R2 [
原贴地址:http://www.stmfans.com/bbs/viewthread.php?tid=1051&highlight=GPIO
  U+ q! g; K2 i. W( n$ D我贴在博客的地址:http://hi.baidu.com/smallwormsea/blog/item/6c00832bca02c7fce6cd4040.html
aleyn 回答时间:2008-12-11 20:17:20

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

看到虫子的示波器在上面了。
得蜜 回答时间:2008-12-11 23:00:35

回复:STM32 GPIO口的速度是多少?含全部代码和显示图

楼上二位给我发个站内短消息吧。
cangbai 回答时间:2008-12-24 14:30:29

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

zangdianjun 回答时间:2008-12-24 15:13:47

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

这个还真没试过,不过用寄存器直接操作,速度肯定会更快的!
yy_kernel-10076 回答时间:2008-12-25 11:32:55

回复:STM32 GPIO口的速度是多少?含全部代码和显示图

这个不是IO速度好不好,这个是IO控制速度,和控制IO的指令多少有关的啊。。。
jackcai-22729 回答时间:2008-12-25 14:37:14

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

IO速度最快能达到多少?
qsj 回答时间:2008-12-28 14:15:23

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

qsj 回答时间:2008-12-31 19:34:46

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

navyxumay 回答时间:2009-1-3 12:59:14

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

我试过了,速度为9m
yxj9377 回答时间:2009-1-5 21:45:30

RE:STM32 GPIO口的速度是多少?含全部代码和显示图

不错 又学习了一课 简单精辟!
12下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版