Processor Expert z Kinetis Design Studio – wygoda tworzenia [PRZYKŁAD]
[...] /* User includes (#include below this line is not maintained by Processor Expert) */ int delay_ms; [...] void TI1_OnInterrupt(LDD_TUserData *UserDataPtr){ if(delay_ms) --delay_ms; } Natomiast w pliku main.c definiujemy funkcję wait_ms(), przy czym robimy to w miejscu które nie zostanie nadpisane przez generator kodu (można byłoby ją zdefiniować w oddzielnym pliku, ale dla wygody przy niewielkich programach można to zrobić w tym samym pliku co funkcja main()): [...] /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/ void wait_ms(int d){ extern int delay_ms; delay_ms = d; while( delay_ms ); } [...]
Pamiętajmy również o umieszczeniu deklaracji danej funkcji gdzieś w dozwolonym miejscu na początku pliku, aby uniknąć błędów kompilacji. Zamieniamy także w głównej pętli programu instrukcje:
for(i = 0; i < 0xAFFF; ++i);
na instrukcje:
wait_ms(250);
W wyniku takiej modyfikacji czerwona dioda LED będzie zapalana i gaszona z częstotliwością 2Hz. Dodatkowo program można uzupełnić o obsługę pozostałych diod LED dostępnych na płytce FRDM-KL25Z (rysunek 5,19,20), zapalanych po kolei w sekwencji R, G, B, OFF.
Rys. 19. Dodanie komponentów z widoku Components Library
Rys. 20. Uzupełnienie projektu o dodatkowe komponenty typu BitIO_LDD
int main(void) /*lint -restore Enable MISRA rule (6.3) checking. */ { /* Write your local variable definition here */ /*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/ PE_low_level_init(); /*** End of Processor Expert internal initialization. ***/ /* Write your code here */ while(1){ wait_ms(250); RLED_ClrVal(NULL); GLED_SetVal(NULL); BLED_SetVal(NULL); wait_ms(250); RLED_SetVal(NULL); GLED_ClrVal(NULL); BLED_SetVal(NULL); wait_ms(250); RLED_SetVal(NULL); GLED_SetVal(NULL); BLED_ClrVal(NULL); wait_ms(250); RLED_SetVal(NULL); GLED_SetVal(NULL); BLED_SetVal(NULL); } /*** Don't write any code pass this line, or it will be deleted during code generation. ***/ /*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/ #ifdef PEX_RTOS_START PEX_RTOS_START(); /* Startup of the selected RTOS. Macro is defined by the RTOS component. */ #endif /*** End of RTOS startup code. ***/ /*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/ for(;;){} /*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
Eksportowanie, importowanie i kopiowanie projektu
Co jakiś czas zdarzają się sytuacje, gdy potrzeba zachować aktualny stan projektu lub utworzyć jego kopię, którą następnie można wykorzystać jako podstawę do rozwoju innego projektu. W pierwszym przypadku możemy skorzystać z funkcji eksportu projektu – klikając PPM na nazwie wybranego projektu w widoku Project Explorer wywołujemy menu kontekstowe i wybieramy Export. W okienku jakie się pojawi mamy do wyboru wiele opcji (co i do jakiej postaci wyeksportować), jednak w danej chwili interesuje nas zachowanie projektu w pojedynczym pliku skompresowanym dlatego wybieramy General ? Archive File i przechodzimy dalej klikając Next (rysunek 21). Wskazujemy miejsce gdzie zostanie zapisany plik archiwalny i klikamy Finish (reszta ustawień pozostaje nietknięta, jak pokazano na rysunku 22).
Rys. 21. Eksportowanie projektu do pliku archiwalnego
Rys. 22. Wybór projektów, plików konfiguracyjnych, ścieżki oraz formatu pliku wyjściowego