Novinka:STM32L Discovery HODINY
(Kategorie: Mikroprocesory)
Napsal mard
01.01.1970

Kolega Luděk mi poslal projekt hodin, aby též vlastníci kitu STM32L Discovery měli tady nějakou inspiraci pro programování. Za zaslání projektu děkujeme! Jedná se o jednoduché hodiny, které ukazují čas/datum/den v týdnu - zobrazená informace se přepíná tlačítkem nebo scrollování všech údajů na displeji. Konstrukce je příkladem na použití RTC a funkcí pro displej.



K projektu autor uvádí:

Postup

Použil jsem vygenerování projektu wizzardem pro kit STM32LDISCOVERY, který obsahuje všechny potřebné soubory pro jádro i periferie. Plus utility pro samotnou desku a lcd knihovnu.
Z kódu jsem odstranil vše přebytečné - hlavně řádky určené pro kit STM32EVAL - projekt je totiž společný pro oba.

Nejdřív jsem se snažil o použití slideru jako tlačítek pro ovládání, ale ani po dlouhé době se mi nepodařilo rozchodit knihovnu STM32_TouchSensing_Driver. Pokud by měl někdo větší štěstí (a byl bych vděčen, kdyby se podělil) - vše je již připraveno - stačí jen definovat "SLIDER_BUTTON_USED" a samozřejmě includovat příslušnou knihovnu.

Proto jsem tedy musel použít tlačítka připojená na GPIO piny - na kitu jich ovšem k mání není mnoho - celkem 5 - já jsem z nich použil 4 pro tlačítka "+","-","ent" a "esc" (jejich funkce je vysvětlená v hlavičce souboru "main.c"). Znamenalo to doplnit původní funkci "Init_GPIOs" o konfiguraci oněch 4 GPIO jako vstupy s pullupy.

Dál bylo potřeba deklarovat struktury pro práci s RTC - definice typů jsou v souboru stm32lxx_rtc.h a RTC inicializovat funkcí RTC_Config() kterou jsem našel v examplech a zbytek jsem si napsal sám.

Nastavování datumu je velmi zjednodušené a nezohledňuje krátký/dlouhý měsíc - takže klidně se tam dá nastavit 30.2. - RTC je pak tak zblblý, že o půlnoci přejde na 31.2. ! Jde jen o jakési demo pro případné zájemce o programování, k dopilování do dokonalosti.

V režimu rolování textu je potřeba pro přechod na jiné zobrazení držet tlačítko až do doby, kdy skončí rolování textu (neboť během rolování se tlačítka netestují).



Použití funkcí z stm32l_discovery_lcd.c:

void LCD_GLASS_DisplayString(uint8_t* ptr); zobrazí text (max 6 ASCII znaků) - LCD_GLASS_DisplayString("HODINY");

void LCD_GLASS_ScrollSentence(uint8_t* ptr, uint16_t nScroll, uint16_t ScrollSpeed); scrolluje delší text určenou rychlostí
LCD_GLASS_ScrollSentence("Toto je moc dlouhy text", 1, 100);

void LCD_GLASS_DisplayStrDeci(uint16_t* ptr); zobrazuje číselné hodnoty včetně (desetinných) teček a dvojteček, které jsou součástí každé segmentovky - proto je nutné pole pro tento text definovat jako int - v horním byte je informace, jestli se má zobrazit tečka, dvojtečka nebo nic - před zobrazením je nutné příslušný znak vymaskovat definovanými makry "DOT" nebo
"DOUBLE_DOT".


Odkazy


Brožuru ST k nízkopříkonovým mcu naleznete zde.
Datasheet k řadě STM32L naleznete zde.
AN3216: Getting started with STM32L1xxx hardware development je zde.
Referenční manuál (RM0038) naleznete zde. (cca 10 MB, pdf)
Další věci si můžete stáhnout na stránce ST, kterou naleznete zde.

STM32L Discovery ADC naleznete zde. (ADC)

Zdrojový kód pro tento článek si můžete stáhnout zde.


Závěr (mard)

Doufám že se dočkáme textů ke kitům i od dalších autorů, kteří se tak mohou podělit o nabyté zkušenosti, jak co konfigurovat a zprovoznit - čímž ušetří mnoho práce těm, kteří teprve tápou.


Autorem tohoto článku je kolega Luděk.


Tato novinka je z -MCU Mikroelektronika - Community Site
( http://mcu.cz/news.php?extend.3204 )