Hallo, ich möchte gerne ein PWM Signal mit einem STM32F4 erzeugen. Das Signal soll einen Frequenz von 50Hz haben und eine Puls von 1500µs länge. Hat jemand vielleicht einen Code-Ausschnitt für mich wo ein Timer Initalisiert und gestartet wird? Am besten wenn der Timer auch noch per DMA geladen wird. Moritz
Gast
#2481954
Bei mein discovery board (STM32F100) lauft das mit Timer 1 in PWM mode (hat 4 Channels, damit kan men dan 4 verschiedene Servo-signale erzeugen). Timer lauft an 1 MHz (forteiler), zaehlt bis 19999 (= 20ms), dan fangt er wieder an. Die 4 channels stellt men dan ein auf 1000 bis 2000 (= 1 bis 2 ms). Auflosung ist dan 1µs. Code config Timer 1 : (GPIO und clock Timer 1 auch noch configurieren !)
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 | |
Hallo, viele Dank für das Beispiel. Hat jemand viellecht noch ein Beispiel für STM32F4? Moritz
Hallo, hat jemand vielleicht einen Kompletten source code, wo ein TIMER Initalisiert wird? Weiß jemand wovon der TIMCLK1 abgeleitet wird? Moritz
Gast
#2483152
Beim F1er gabs in der Firmwarebibliothek Beispiele für alle Peripherieeinheiten, beim F4er nicht? Andersrum wird hier ein Schuh draus: zeige, was du bisher geschafft hast und wir helfen dir Fehler zu finden. Für dich was schreiben wird hier niemand! Aber zwischen den Zeilen lese ich eine gewisse Unlust zur selbstständigen Arbeit heraus...
Hallo, ja ich möchte schon selber etwas programmieren doch leider weiß ich noch nichts über die Timer (Deshalb frage ich ja). Am einfachsten für mich ist es aus fertigem code zu lernen. Bei der Lib sind auch einige Beispiele dabei dabei, allerdings erklärt die nicht woher der Takt der Timer kommt, was die verschidenen Vorteile Bedeuten und wozu die gut sind usw... . In den Reference Manual und dem Datasheet werde ich auch nicht schlauer. Moritz
Hi Moritz mir ist das Benutzen eines Timers heute erfolgreich mit dem STM32F4 Board gelungen. Das folgende Beispiel nutzt TIM4 mit PWM. Das "Ergebnis" wird auf der grünen onboard LED ausgegeben. Die LED wird entsprechend heller und dunkler.
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 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | |
134 | |
135 | |
136 | |
137 | |
138 | |
139 | |
140 | |
141 | |
142 | |
143 | |
144 | |
145 | |
146 | |
147 | |
148 | |
149 | |
150 | |
151 | |
152 | |
153 | |
154 | |
155 | |
156 | |
157 | |
158 | |
159 | |
160 | |
161 | |
162 | |
163 | |
164 | |
165 | |
166 | |
167 | |
168 | |
169 | |
170 | |
171 | |
Ich hoffe, ich habe nichts vergessen hier rein zu kopieren... Gib mir Bescheid, wenn es nicht läuft. Wie du am englischen Kommentar siehst, funktioniert der Code innerhalb der main Methode komischerweise nicht, wenn ich ihn in eine separate Funktion schiebe. Warum habe ich noch nicht herausgefunden... Das Beispiel aber läuft soweit gut. Das Delay muss natürlich auch nicht sein. Nur der Vollständigkeit halber. Gruß, Markus -- http://www.robotiklabor.de http://www.direcs.de
PS.: Wenn nicht Channel 1 des Timers verwendet wird, müssen die Zeilen
1 | |
2 | |
natürlich angepasst werden. Für Channel 2 dann z.B.
1 | |
2 | |
Und so weiter...
Gast
#3387907
small remark regarding while loop markus_k64. it can be as simple as :
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
Gast
#4090392
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.