메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

STM32 자료실
(*.112.151.168) 조회 수 8481 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

STM32F103 시리즈는 최대 72Mhz까지 동작합니다. 그렇다고 모든 기능이 72Mh로 동작하는 것은 아니고, 각 기능마다 약간씩 다릅니다. 그 중에서 I/O 토글링은 18Mhz까지 제어할 수 있습니다.

 

 

 

While 사용

위와 같이 기본값을 설정하고 main 에서 while문으로 PORTE의 4번핀을 토글하게 되면

18Mhz로 동작할거 같은데 실제로는 아래처럼 3.13Mhz 로 파형이 나옵니다.

 

 

 

 

Optimizations

이는 컴파일 옵션에서 옵티마이즈가 None으로 되어 있어서 그런 겁니다.

아래처럼 옵션에서 High(Speed)로 지정하면 됩니다.

그러면 약 8Mhz까지 나옵니다.

왜 8Mhz 까지만 나올까요?

그것은 while(1) 때문입니다. 아래 2줄을 수행한 후 while문을 검사해야 하기 때문에 8Mhz 이상이 나오지 않는 겁니다.

GPIOE->BSRR = GPIO_Pin_4;
GPIOE->BRR = GPIO_Pin_4;

그렇다면 어떻게 해야 18Mhz 를 얻을 수 있을까요?

While(1)을 사용하지 않으면 될텐데…. While(1)을 사용하지 않는다면 프로그램은 무한히 실행되지 않을 겁니다.

그냥 while(1) 문 안에 무한히 토글해주면 됩니다.

while(1){

GPIOE->BSRR = GPIO_Pin_4;

GPIOE->BRR = GPIO_Pin_4;

GPIOE->BSRR = GPIO_Pin_4;

GPIOE->BRR = GPIO_Pin_4;

}

13.0902Mhz

while(1){

GPIOE->BSRR = GPIO_Pin_4;

GPIOE->BRR = GPIO_Pin_4;

GPIOE->BSRR = GPIO_Pin_4;

GPIOE->BRR = GPIO_Pin_4;

GPIOE->BSRR = GPIO_Pin_4;

GPIOE->BRR = GPIO_Pin_4;

}

13.4992Mhz

아래처럼 하면 거의 18Mhz에 가까워 집니다.

관련 문서가 검색되었습니다.
  1. [2016/01/06] Flash Loader Demonstrator 설치 by ()
  2. [2013/10/30] ZEO-S, CDS로 빛 밝기 -> LED ON/OFF by WhiteAT (8018)
  3. [2013/10/28] ZEO-IO2 BOARD [ZEO IO 실험 보드2] by WhiteAT (5852)
  4. [2013/09/02] ZEO-S PWM 펄스를 Pulse Counter로 읽기, C# by WhiteAT (5960)
  5. [2013/08/29] ZEO-S, Pulse Counter, C# by WhiteAT (5516)
  6. [2013/06/28] Keil 라이선스 설치 by WhiteAT (3898)
  7. [2013/06/13] ZEO-S, 스위치로 LED ON/OFF, C# by WhiteAT (9450)
  8. [2013/06/08] ZEO-S, LED 연속으로 이동, C# by WhiteAT (8261)
  9. [2013/06/06] ZEO-S, LED 이동 속도 조절, C# by WhiteAT (7973)
  10. [2013/04/10] ZEO-IO BOARD – ZEO IO 실험 보드 by WhiteAT (7044)
?