LinkedIn YouTube Facebook
Szukaj

Wstecz
Artykuły

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

 

Autor: Jan Szemiet