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

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

[复制链接]
得蜜 发布时间:2008-11-28 14:59
吃过晚饭 忽然想测试一下GPIO口的速度 - E7 [9 N7 k* Y3 I6 ^8 ^/ C1 c+ e; o
使用的库函数   不是裸奔 晶振8M   9倍频 1 i* ^# d: f) h( s

( H4 a/ y* z3 {( YRCC_HCLKConfig(RCC_SYSCLK_Div1);
7 m) o$ O/ Q" N: A4 [% F* l; w6 [  x% D& t, |3 ~. L
//设置高速 AHB 时钟(PCLK2)
  W8 b3 n: b- W# A3 {- gRCC_PCLK2Config(RCC_HCLK_Div1);
& R# U+ J4 l6 k) m6 g. ~" v. \  o  o; `$ J% ]% x) G
//设置低速 AHB 时钟(PCLK1)9 o# J, N& W! I( ?
RCC_PCLK1Config(RCC_HCLK_Div1);
6 T: Y0 C' {. ~  L
" i4 a  v2 S2 @# @0 V9 P! A% k   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 ;
/ m. \) g! L& ~- e1 U   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
0 V2 ]; ]5 B6 x' Z. A   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
# I" E# x4 j: E" p7 l) n   GPIO_Init(GPIOC, &GPIO_InitStructure);" H- l  m2 y# B; ]; [

8 A! H  g" k* d! h6 T   while (1)
1 F. [' [$ i+ ^* O   {. a; w, M/ J) Y1 [* k
   GPIO_SetBits(GPIOC, GPIO_Pin_10);
; I- e8 P3 k3 P0 y% C) a' d   GPIO_ResetBits(GPIOC, GPIO_Pin_10);- I" q! l6 k. U
   }8 p  n2 `. `' q; m
    ) N8 v( d. C6 ]) A0 m
示波器 : 安捷伦 54621D
" t. ~, z9 j/ l- L% G用示波器看的速度是2.0MHz   呵呵 不知道有没有哥们用裸奔的方法测试了的 呵呵

+ U  o, K) r; Z+ J: a7 ]$ J - w* }; P% M9 G! [; d
 + H. X  i7 E6 ]

3 j7 ~5 j  h8 I
5 G1 _1 E" {) Y/ c1 i+ A & }, z) u) K( G; z
 
" |! j8 A. N" c; S5 |: F/ M) R, M///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; ^* j; z% w/ [然后力哥裸奔的测试结果是:$ H9 [; P- \  Z; X0 G: b' R' W
裸奔测了一下2 @4 @' R' C& h9 C' b

" I' V6 O# z. ~: b示波器显示是 2.768M Hz. ]0 r# V5 q0 W7 u" ?) L
* _/ {1 ^4 \; O- `. x' A! }
固纬 GDS-806S 示波器
: b5 U5 P9 \9 G! z
# _$ m" w( v. X9 C. Q0 jwhile(1)4 L) \1 l' @7 a3 i. F( m
   {4 {, `) V3 n4 z1 F# Y- D* K3 l, o5 H
LED1_OFF;% B( w' F; h# Y: T
LED1_ON;
! K7 Q+ j7 Z4 d" z% n$ Z   }

, b* ~8 V8 l- j0 G: Y 
/ C3 U. S4 l: P* k: }////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
8 w  _, M8 N/ D' _) r# [力哥继续测试 考虑上流水线
6 M. X- B6 q1 Q$ c. h继续裸奔
. p0 r6 {5 {  P" n+ Q8 J) m示波器显示达到 4M Hz" Y# K* F' z% `- j6 ~7 h( R

8 N0 h) k) `& Y9 o固纬 GDS-806S 示波器
- b( W  @  P  e$ a3 B% K( M0 r- P  o0 q4 ?( f5 x
   while(1)
+ m  e& o2 F. Y" |   {4 b# A* s8 a; `, Z; w8 Y5 G
LED1_OFF;' T+ S0 E- u3 x
LED1_ON;
) `) d. L& V) C* }) ?LED1_OFF;# d, \& Z6 T7 d( v3 X
LED1_ON;8 C! M5 T: J8 z& H
.................................................(200行重复)4 A7 j1 a6 B% T0 J4 _
LED1_OFF;
- z% F1 _- ^# J8 \5 B* S) V* u3 nLED1_ON;& F0 T# t9 r( e+ g* Y( z( [- b* h4 W
LED1_OFF;" |& k, z0 Q! l: X, B1 y4 i  e+ x
LED1_ON;# |' D3 y: e3 {+ v# ^2 F
   }
8 V  ^8 i) b2 h. m( }  q
 ' O: L2 r: F& C4 P) {
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// X* t( n! A, m* U
 / t2 a: p1 |$ c
然后我也把流水线考虑进去 继续使用固件库的方式# U& u: m5 G  Q1 V' A
呵呵 我也在循环体内部加了N句 也考虑了流水线
' g% n1 x7 z5 X- T. G! H+ u- t5 X: s/ Q
   while (1)
* G, ]7 L, u/ D$ H/ Z   {, e/ s- i# x$ V- p1 d) z$ V$ n
   GPIO_SetBits(GPIOC, GPIO_Pin_10);
/ b, @" {, `- R2 M/ y   GPIO_ResetBits(GPIOC, GPIO_Pin_10);- p  P5 `8 ]1 l- K9 N
   GPIO_SetBits(GPIOC, GPIO_Pin_10);9 \1 o7 S6 S+ w$ r0 G- H& E
   GPIO_ResetBits(GPIOC, GPIO_Pin_10);
, s8 \' b7 D: ~/ m. n* R  e   ................ 中间200句$ U, y) W3 q9 X) }/ ]
   GPIO_SetBits(GPIOC, GPIO_Pin_10);
5 {$ {) v7 e9 ?4 I4 R, s% F   GPIO_ResetBits(GPIOC, GPIO_Pin_10);2 p( z0 n! v5 E
   GPIO_SetBits(GPIOC, GPIO_Pin_10);
0 a9 l$ F: j- O# l7 H   GPIO_ResetBits(GPIOC, GPIO_Pin_10);
  J) V! a0 m8 ^2 i* a   }

+ `6 `' n0 l9 e$ Y2 u% i2 Z& K. U 
0 A; U$ Z2 \6 q3 y. F2 B示波器 : 安捷伦 54621D
9 `0 Q: `. f; \* g然后速度是2.725MHz   呵呵   看来流水线还是起了作用了的 嘿嘿

- Q+ U7 l+ Y% s5 v  Y( v  t2 n$ |' G3 }$ p

: m$ J- w# N5 y8 v 6 e$ O) D# f5 t7 H5 X% u
收藏 评论19 发布时间:2008-11-28 14:59

举报

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

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

用固件库函数肯定会慢吧,库函数里都有检查参数的函数。直接对寄存器赋值操作试试看2 S$ Y& G" O0 c
GPIOC->BSRR = GPIO_Pin_10;* l3 s3 G1 d8 S' t2 O1 q. ^* Y" ]
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口的速度是多少?含全部代码和显示图

貌似是我的原创啊
; |/ Y* B3 s, T: O2 y' {) |, m原贴地址:http://www.stmfans.com/bbs/viewthread.php?tid=1051&highlight=GPIO
; K. e; [9 H$ R! R我贴在博客的地址: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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版