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

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

[复制链接]
得蜜 发布时间:2008-11-28 14:59
吃过晚饭 忽然想测试一下GPIO口的速度 3 Y1 h6 a0 z3 w5 r, f) y6 w) K& M
使用的库函数   不是裸奔 晶振8M   9倍频 3 d& ^6 }7 d4 P. O! _) c. c

% f, K; m2 ~# m- RRCC_HCLKConfig(RCC_SYSCLK_Div1);
! P; m" |' B& K; |0 s0 B) \5 r* h6 i2 t! v7 B2 t3 H0 }7 f
//设置高速 AHB 时钟(PCLK2)
) ^  C  V; ^  ?( GRCC_PCLK2Config(RCC_HCLK_Div1);  |/ G" H: _! D) ?
: w7 \6 f2 V1 a# |" ?
//设置低速 AHB 时钟(PCLK1)/ Y  Q) e/ ^$ j+ |) d
RCC_PCLK1Config(RCC_HCLK_Div1);
' M- V3 _. \& f0 S+ O* z
+ H( A6 A: o0 i7 V" Z) o   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 ;
0 Q9 C" K; Y) J3 E/ n   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
" x+ \# k+ j+ |# I  ~! R' X5 B4 [" c   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;) m3 _& ?% o2 k3 C6 K) F0 X; \) `
   GPIO_Init(GPIOC, &GPIO_InitStructure);
. d# t- s5 W* @6 |, B" u0 B5 a: d6 ~1 x, M- |6 s6 [6 Z( a* i8 e, i
   while (1)8 x6 V% D2 q* U: \3 J9 x
   {
( D4 K8 n1 @7 x0 x* q   GPIO_SetBits(GPIOC, GPIO_Pin_10);0 q9 q5 Y: s' @
   GPIO_ResetBits(GPIOC, GPIO_Pin_10);
- W9 j/ q$ |7 t+ ]) K0 n; T   }
) R1 _& ?( k0 B7 ]0 g8 M; G! _    ! Z8 L1 G6 |/ Y$ r
示波器 : 安捷伦 54621D / z$ \3 z3 c* ]+ G; _
用示波器看的速度是2.0MHz   呵呵 不知道有没有哥们用裸奔的方法测试了的 呵呵

2 e- B5 t( e3 i8 x7 U  A4 B- y / Y( e, W6 z1 j" a
 - i. L, U/ C( m
; s( v2 I5 v6 w  L) P9 @

0 s5 ]- M' N. f9 P " M/ C( H  h8 U9 u7 H/ p9 H
 5 i1 Z7 v; E6 L8 i8 Q; p
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3 ^' @2 B# ]& T  M2 W  O
然后力哥裸奔的测试结果是:! J9 O' E! r. l2 g+ m
裸奔测了一下- S& u( z& i  z% ^. z: D
# u3 l: C7 S( Y# X3 j2 ]6 }
示波器显示是 2.768M Hz
# g# g4 Y8 U. @& m- `9 D
1 b6 H3 p! C# @- @5 x8 g9 T2 j1 {固纬 GDS-806S 示波器4 t* m% }% }, u8 l6 ]) x

' ^' S  L2 [. ewhile(1)
) L- k  ]) b6 o   {! H4 r+ z' B2 e! `- h% k3 L6 z1 c
LED1_OFF;2 X( O. R- |3 Y' ?" T3 ^' [6 y
LED1_ON;
0 T% Z1 g. u! L0 N& k9 V( ]   }
$ l! I+ h" E7 J7 A4 t) s
 $ D  Y1 F4 P  m
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
' [  r% G* v& b3 J' F5 l力哥继续测试 考虑上流水线
, Z, |& {- T* s( `1 ^继续裸奔& m& T/ h0 w* T/ n9 y! t/ a
示波器显示达到 4M Hz' B  _' F5 z3 o  c% F6 S5 c$ Z
) b7 V- J# R% C' ?
固纬 GDS-806S 示波器4 I# ?: V2 S4 |9 W
/ s/ \3 s" J+ C: k1 Y! I4 E1 [6 H
   while(1)$ Y  H3 M7 Y; p+ Q! W( E# _
   {. u8 y# i) q# N3 t4 h7 g
LED1_OFF;
, T+ m" D4 Z" \1 ?# ], @; B6 `1 QLED1_ON;
3 ?5 b! O( ?0 X$ v+ A9 u  L4 a& P/ uLED1_OFF;
. m: A) k6 v  @& u2 W8 S" C; QLED1_ON;
' `  I$ z" p+ N; j+ F) Z.................................................(200行重复)- ^+ f, o; z0 P- l/ ?/ f9 r% l7 _
LED1_OFF;+ q: I( e. G2 X, T1 Y; X8 J
LED1_ON;
, M9 M5 r! W+ O. |/ {( FLED1_OFF;
1 S+ U3 `% m6 ?1 CLED1_ON;. V* N' }2 w0 {' }* Y0 {
   }

/ E8 \+ F+ Y. ^9 @9 P7 c3 u, ? 4 w  E% j5 H; U& M
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ H+ E5 Z( F* ^5 e 
6 R* W+ k5 k, _) C! }然后我也把流水线考虑进去 继续使用固件库的方式7 e$ q7 k( _2 a* h) C
呵呵 我也在循环体内部加了N句 也考虑了流水线# h% T- I0 j; W; c$ [! Y
' u! t+ b. R6 `9 T% `3 O5 W1 c4 v
   while (1)( V8 W+ I% z, A- b7 [. h, [: F
   {
) B9 b: a+ P) a! a: B: Z* j   GPIO_SetBits(GPIOC, GPIO_Pin_10);
; t/ K, Y1 j, o0 O( R5 c   GPIO_ResetBits(GPIOC, GPIO_Pin_10);+ V7 c* d; \4 Z! ^+ s
   GPIO_SetBits(GPIOC, GPIO_Pin_10);
8 W) C3 ^, `$ o0 l) m; s% p   GPIO_ResetBits(GPIOC, GPIO_Pin_10);( l. J! W) a" h3 W$ P
   ................ 中间200句
  y" Z7 W: N& V7 ?! M- m% O   GPIO_SetBits(GPIOC, GPIO_Pin_10);
- B5 `( d' p7 \7 }& g. [8 u, M: }   GPIO_ResetBits(GPIOC, GPIO_Pin_10);
) H; ]( g3 l" {: W7 Y   GPIO_SetBits(GPIOC, GPIO_Pin_10);
8 I# o2 S6 ~3 v   GPIO_ResetBits(GPIOC, GPIO_Pin_10);( n/ c* P% c+ i& d' _' V3 V% N
   }
- F5 v1 X" ~7 {) X, \+ i
 
; w/ N2 B% O9 a% p示波器 : 安捷伦 54621D
! U. F% r% w; I& P然后速度是2.725MHz   呵呵   看来流水线还是起了作用了的 嘿嘿
( v7 L) o* A6 _2 i

1 b# E% o+ i) x1 V
2 p/ q' t# _3 \, n# o- u : m0 p8 X1 }6 Z, T! J9 o
赞 收藏 评论19 发布时间:2008-11-28 14:59

举报

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

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

用固件库函数肯定会慢吧,库函数里都有检查参数的函数。直接对寄存器赋值操作试试看2 Z5 T8 |! ]5 g+ s# p8 a2 j. S
GPIOC->BSRR = GPIO_Pin_10;
; y9 {4 J: W" o& u4 \GPIOC->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口的速度是多少?含全部代码和显示图

貌似是我的原创啊
6 }' v' C, e: O% ?" o2 C原贴地址:http://www.stmfans.com/bbs/viewthread.php?tid=1051&highlight=GPIO
" [" K' Q4 y: c1 l0 V我贴在博客的地址: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 手机版