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


Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym
Najczęstsze błędy firm przy wyborze dostawcy energii i jak ich uniknąć
Fotorezystor, czyli czujnik światła dwojakiego działania. Przykład innowacji w automatyce i elektronice możliwej dzięki technologii fotooporników 



