joeen63 发表于 2010-3-17 09:09:33

STM32F103ZCT6 GPIO 做 Hi/Low 測試

小弟使用 STM32F103ZCT6  跑72Mhz ,  將 GPIO 做 Hi/Low 測試 , 時間約 142ns  , 這是最快的嗎? 還是可以更快呢?
    while(1)
     {
          GPIOB->BSRR = GPIO_Pin_7;
          GPIOB->BRR  = GPIO_Pin_7;
          GPIOB->BSRR = GPIO_Pin_7;
          GPIOB->BRR  = GPIO_Pin_7;
          GPIOB->BSRR = GPIO_Pin_7;
          GPIOB->BRR  = GPIO_Pin_7;
          GPIOB->BSRR = GPIO_Pin_7;
          GPIOB->BRR  = GPIO_Pin_7;
          GPIOB->BSRR = GPIO_Pin_7;
          GPIOB->BRR  = GPIO_Pin_7;
     }

发表于 2010-3-17 09:37:24

RE:STM32F103ZCT6 GPIO 做 Hi/Low 測試

这样操作应该是最快的了。直接写寄存器。
用汇编的话,估计比这个还能快点。
一条机器时间大约是:1/(72*10^6)=0.014us

joeen63 发表于 2010-3-17 13:25:46

回复:STM32F103ZCT6 GPIO 做 Hi/Low 測試

看asm
GPIOB->BSRR = GPIO_Pin_7;    翻成如下

LDR.W    R0,??DataTable108  ;; 0x40010c10
MOVS     R1,#+128
STR      R1,
 
GPIOB->BRR  = GPIO_Pin_7;   翻成如下

 LDR.W    R0,??DataTable28  ;; 0x40010c14
 MOVS     R1,#+128
 STR      R1,
 
 
??DataTable28:
        DC32     0x40010c14
??DataTable108:
        DC32     0x40010c10
 
要如何把 asm 加到程序裡?
 
 
 
 

发表于 2010-3-19 16:05:22

RE:STM32F103ZCT6 GPIO 做 Hi/Low 測試

我的意思是说汇编可能快点。没让你写成汇编,可能是我的表达不太好。
你这样写的话应该是最少时间了。毕竟由总线控制的了。要不你试试超频操作。

joeen63 发表于 2010-3-20 12:36:20

回复:STM32F103ZCT6 GPIO 做 Hi/Low 測試

可以超頻嗎?
 
 
页: [1]
查看完整版本: STM32F103ZCT6 GPIO 做 Hi/Low 測試