List. 9. Program testowy umieszczony w pliku main.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
#include "clock.h" #include "delay.h" #include "key.h" #include "out.h" #include "sleep.h" #define HSI_MHZ 8 #define HCLK_MHZ 72 // #define SUPPLY_CURRENT // #define USLEEP_TIME 1 // #define MSLEEP_TIME 1 #define HSI_DELAY (HSI_MHZ * 1000000) #define HCLK_DELAY (HCLK_MHZ * 1000000) int main() { AllPinsDisable(); OutConfigure(); KeyConfigure(); LED1on(); Delay(HSI_DELAY); error_check(ClockConfigure(HCLK_MHZ), 1); error_check(SleepConfigure(HCLK_MHZ), 2); LED1off(); #ifdef SUPPLY_CURRENT USleep(65535); LED1on(); Delay(HCLK_DELAY); LED1off(); MSleep(8000); LED1on(); Delay(HCLK_DELAY); LED1off(); Sleep(12); LED1on(); Delay(HCLK_DELAY); /* Dioda przestaje świecić po wejściu w tryb czuwania. */ Standby(16); /* Program nigdy tu nie dochodzi. */ error_check(-1, 3); #else for (;;) { FREQon(); #ifdef USLEEP_TIME USleep(USLEEP_TIME); #endif #ifdef MSLEEP_TIME MSleep(MSLEEP_TIME); #endif FREQoff(); #ifdef USLEEP_TIME USleep(USLEEP_TIME); #endif #ifdef MSLEEP_TIME MSleep(MSLEEP_TIME); #endif } #endif } |
1 2 3 |
#define SUPPLY_CURRENT #define USLEEP_TIME 1 #define MSLEEP_TIME 1 |
Aby skompilować przykład, potrzebny jest jeszcze plik nagłówkowy delay.h zawierający sygnaturę funkcji Delay, która została przedstawiona na początku pierwszej części artykułu. W pliku delay.c należy umieścić jej implementację, a w pliku out.c – implementacje funkcji, których sygnatury są na listingu 6. Ponadto Standard Peripheral Library wymaga obecności pliku stm32f10x_conf.h, który w naszym przypadku zawiera tylko puste makro:
1 |
#define assert_param(expr) ((void)0) |