Start z STM32 VL Discovery — SysTick 2 zmiana CLK

Start z STM32 VL Discovery — SysTick 2 zmiana CLK
Razem głosów: 8 co stanowi: 97.5% całości.

No tak poznaliśmy działanie SysTic , ale to było nic teraz dopiero zobaczycie moc i potęgę  drzemiącą  w nim.

Jak wiecie ustawienie zegara dla procesora w takich mikrokontrolerach jak AVR , PIC , 8051 jest wiążące

dla całego projektu i w zasadzie powiązane ze sprzętem. Wymagane jest podłączenie fizyczne kwarcu

właściwej wartości , albo użycie określonego wbudowanego generatora.

 

ARM rozwiązuje ten problem nieproporcjonalnie lepszy sposób. Rdzeń ma wybór pomiędzy trzema źródłami sygnału: 

  • HSI oscylator (wewnętrzny kalibrowany RC)
  • Oscylator HSE (zewnętrzny – zazwyczaj kwarc)
  • modyfikacja częstotliwości PLL
Pierwsze dwie opcje są jasne – albo możemy wybrać jako źródło sygnału zegarowego zewnętrzny kwarc
lub 8 MHz, wewnętrzny oscylator (na różnych MCU z rdzeniem Cortex M3, także dla VLDiscovery). 
Ale trzecia opcja daje nam potężne narzędzie do ręki – można ustawić częstotliwość stosowania różnego
podziału i mnożenia sygnału zegara ze źródła sygnału (wewnętrzny / zewnętrzny oscylator),
wynikiem tego jest możliwość ustawienia częstotliwości .Ograniczeniem jest tylko fakt, że PLL
jest w VLDiscovery ograniczona od 16 do 24 MHz, ale w tym zakresie częstotliwości, może być ustawiony dowolnie.
 
Zaletą jest też to że jeśli z jakiegoś powodu nie działa po zresetowaniu cykl zegara zewnętrznego źródła, mcu może korzystać z wewnętrznego oscylatora. Można nawet ustawić nie maskowane przerwanie,
które w przypadku „utraty” zewnętrznego źródła taktowania  zastąpi  je wewnętrznym.
USTAWIANIE ZEGARA:
To co przeczytaliście wcześniej to tylko wprowadzenie dosyć lakoniczne, ale wszystko stanie się jasne 
jak przybliżymy sobie schemat blokowy połączeń obwodów RC :
Free Image Hosting at www.ImageShack.us
Należy pamiętać, że podczas wyboru źródła taktowania dla PLL z wewnętrznego HSI, sygnał jest zawsze
 
podzielony przez 2 (ma to na celu zapewnienie 50% cyklu pracy), a więc wskazuje na częstotliwość 4 MHz. 

Zainteresowani bardziej szczegółowymi informacjami znajdą je w Datasheet, poświęcony tej kwestii jest
rozdział 6.2 od strony 61.
Program 

Progrma napiszemy w oparciu o informacje z  poprzedniej części. Dlatego spotkamy zarówno Delay , jak i
przerwanie SysTick.
Niestety jak wspomniałem powyżej , taktowanie można ustawić tylko po resecie i dlatego cała sprawa
wymaga wyjaśnienia.
 
W pliku  Main.h  należy ustawić częstotliwość, z jaką MCU ma pracować – dokonujemy zmiany w poniższym
kodzie:

SetSysClockTo16

Na tym przykładzie określimy jak wybrać zegar 16Mhz z użyciem PLL aby to sprawdzić nie musimy mieć całego projektu:

Polecam też uwadze pamięć o zmianie SysTick jeśli zmodyfikujesz zegar systemowy.

Najprostszym sposobem jest zastosowanie częstotliwości zegara systemowego wyrażonego w Hz, jak w przykładzie 16 MHz.

Oczywiście zakładam że zainteresowanie będą chcieli dowiedzieć się więcej na temat całego kodu i przetestowania różnych opcji.

 

Nadmienię że powyższy kod  musi być umieszczony w pliku stm32f10x_it.c ,
w którym określa się obsługę przerwań.
Na razie tak na sucho, a przykład realny w postaci gotowego projektu umieszczę tu niebawem.

 

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay