Hallo,
ich hab mir vor kurzem das FRDM KL25Z geholt mit dem MKL25Z128VLK4 als
MCU geholt. Als IDE verwende ich Keil µVision. Mein Code ist folgender
(ich möchte einfach ein bisschen experimentieren, da es so gut wie gar
keine Tutorials gibt) :
1 | #include <MKL25Z4.h>
|
2 | #include "RegisterBitNames.h"
|
3 |
|
4 | void set_timer();
|
5 |
|
6 | void TPM0_IRQHandler() {
|
7 | TPM0->SC = (1UL << TOF);
|
8 | FPTB->PTOR = (1UL << 19);
|
9 | }
|
10 |
|
11 | int main() {
|
12 | SystemCoreClockUpdate();
|
13 |
|
14 | SIM->SCGC5 |= (1UL << CLKB); //Schalte Clock auf PORTB
|
15 |
|
16 | PORTB->PCR[19] = (1UL << GPIOe); //Schalte PB19 auf GPIO
|
17 | //PORTB->PCR[18] = (1UL << 8) | (1UL << 9);
|
18 | set_timer();
|
19 | FPTB->PDOR = (1UL << 19);// | (1UL << 18);
|
20 | FPTB->PDDR = (1UL << 19);// | (1UL << 18); //Schalte PB19 auf Output
|
21 | FPTB->PCOR = (1UL << 19);
|
22 |
|
23 | while(1);
|
24 | }
|
25 |
|
26 | void set_timer() {
|
27 | MCG->C1 = (1UL << IRCLKEN) | (1UL << IREFS);
|
28 | MCG->C2 = (1UL << IRCS);
|
29 | SIM->SCGC6 = (1UL << TPM0e);
|
30 | SIM->SOPT2 = (1UL << TPMSRC1x) | (1UL << TPMSRCx1);
|
31 |
|
32 | TPM0->SC = (1UL << TOIE) | (1UL << CMODx1) | (1UL << PS1xx) | (1UL << PSx1x) | (1UL << PSxx1); //TOIE an, CMOD: Zähle bei jedem LPTPM counter clock
|
33 | TPM0->CNT = 0; //Initialisiere Counter, Reset
|
34 |
|
35 | TPM0->MOD = 16383;
|
36 | }
|
In der Datei RegisterBitNames habe ich mit selber #defines angelegt,
welche einfach nur dem Stellenwert der Einstellungsbits entsprechen.
Nun möchte ich gerne, dass wenn der Timer TPM0 einen Interrupt auslöst,
der Pin PB18 togglet (Ist eine LED dran). Leider wird der IRQ_Handler
gar nicht aufgerufen, was ich nachvollziehen kann, weil er wohl falsch
implementiert ist.
Weiß jemand, wie man eine IRQ_Handler hier implementiert? Ich hänge mal
die von der IDE vorgegebenen Dateien mit den Definitionen der IRQs an
(werden beim beim Linken mitgelinkt). In der .S Datei werden die
Interrupts in Assembler definiert.
Ich hoffe, es sind alle nötigen Dateien angehängt. Weiß jemand
vielleicht auch nur einen Tipp?
Das vielleicht nötige MCU-Manual ist hier:
http://cache.freescale.com/files/32bit/doc/ref_manual/KL25P80M48SF0RM.pdf
Aber dort finde ich dazu auch nichts.
Gruß,
Christian