|
吃过晚饭 忽然想测试一下GPIO口的速度 2 j* {! x! k/ P9 _8 [& G 使用的库函数 不是裸奔 晶振8M 9倍频 , k! X! j3 V, I8 M RCC_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) RCC_PCLK1Config(RCC_HCLK_Div1); % 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; GPIO_Init(GPIOC, &GPIO_InitStructure);% v4 [. n4 k+ H& c- H1 V/ x while (1) { GPIO_SetBits(GPIOC, GPIO_Pin_10); _! M2 A+ c6 C2 T GPIO_ResetBits(GPIOC, GPIO_Pin_10); }) 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 ^ $ b/ e9 ~* |" ` ( y' l& U0 s/ r; Q/ x /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 然后力哥裸奔的测试结果是:: u; H8 h* e, Y0 w$ x 裸奔测了一下 ! [/ @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& _ _ { LED1_OFF; LED1_ON; } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8 ]. ?( [1 g9 _6 s 力哥继续测试 考虑上流水线( s. I& v* d. h. d" [' O$ M' y 继续裸奔 示波器显示达到 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# ] { LED1_OFF; LED1_ON; LED1_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; } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + 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) { 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); GPIO_ResetBits(GPIOC, GPIO_Pin_10);2 I& U) ^6 J! o ................ 中间200句 GPIO_SetBits(GPIOC, GPIO_Pin_10); @+ F$ G- d( S, H" g# ^$ Y GPIO_ResetBits(GPIOC, GPIO_Pin_10); GPIO_SetBits(GPIOC, GPIO_Pin_10);5 L. `8 p" n6 d( l1 J* A, }5 }' U GPIO_ResetBits(GPIOC, GPIO_Pin_10); }9 u) E; j- H4 i3 l+ g/ \ 示波器 : 安捷伦 54621D : l% M1 Y2 D" ^$ r5 o" Z; V, Y 然后速度是2.725MHz 呵呵 看来流水线还是起了作用了的 嘿嘿+ @$ ?$ W! p$ E- ^ # S" ?0 K8 P3 L1 m. g8 A) r c9 t ; X$ T4 x' D7 ?. ^; C |
微信公众号
手机版
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
GPIOC->BSRR = GPIO_Pin_10;
GPIOC->BRR = GPIO_Pin_10;
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
原贴地址:http://www.stmfans.com/bbs/viewthread.php?tid=1051&highlight=GPIO
我贴在博客的地址:http://hi.baidu.com/smallwormsea/blog/item/6c00832bca02c7fce6cd4040.html
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
回复:STM32 GPIO口的速度是多少?含全部代码和显示图
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
回复:STM32 GPIO口的速度是多少?含全部代码和显示图
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
RE:STM32 GPIO口的速度是多少?含全部代码和显示图
RE:STM32 GPIO口的速度是多少?含全部代码和显示图