Paparazzi UAS
v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
actuators_pwm_arch.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2013 AggieAir, A Remote Sensing Unmanned Aerial System for Scientific Applications
3
* Utah State University, http://aggieair.usu.edu/
4
*
5
* Michal Podhradsky (michal.podhradsky@aggiemail.usu.edu)
6
* Calvin Coopmans (c.r.coopmans@ieee.org)
7
*
8
*
9
* This file is part of paparazzi.
10
*
11
* paparazzi is free software; you can redistribute it and/or modify
12
* it under the terms of the GNU General Public License as published by
13
* the Free Software Foundation; either version 2, or (at your option)
14
* any later version.
15
*
16
* paparazzi is distributed in the hope that it will be useful,
17
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
* GNU General Public License for more details.
20
*
21
* You should have received a copy of the GNU General Public License
22
* along with paparazzi; see the file COPYING. If not, write to
23
* the Free Software Foundation, 59 Temple Place - Suite 330,
24
* Boston, MA 02111-1307, USA.
25
*/
33
#include "modules/actuators/actuators_pwm_arch.h"
34
#include "
modules/actuators/actuators_pwm.h
"
35
#include "
mcu_periph/gpio.h
"
36
37
/* Default timer base frequency is 1MHz */
38
#ifndef PWM_FREQUENCY
39
#define PWM_FREQUENCY 1000000
40
#endif
41
42
/* Default servo update rate in Hz */
43
#ifndef SERVO_HZ
44
#define SERVO_HZ 40
45
#endif
46
47
/* For each timer the period van be configured differently */
48
#ifndef TIM1_SERVO_HZ
49
#define TIM1_SERVO_HZ SERVO_HZ
50
#endif
51
#ifndef TIM2_SERVO_HZ
52
#define TIM2_SERVO_HZ SERVO_HZ
53
#endif
54
#ifndef TIM3_SERVO_HZ
55
#define TIM3_SERVO_HZ SERVO_HZ
56
#endif
57
#ifndef TIM4_SERVO_HZ
58
#define TIM4_SERVO_HZ SERVO_HZ
59
#endif
60
#ifndef TIM5_SERVO_HZ
61
#define TIM5_SERVO_HZ SERVO_HZ
62
#endif
63
#ifndef TIM8_SERVO_HZ
64
#define TIM8_SERVO_HZ SERVO_HZ
65
#endif
66
#ifndef TIM9_SERVO_HZ
67
#define TIM9_SERVO_HZ SERVO_HZ
68
#endif
69
#ifndef TIM12_SERVO_HZ
70
#define TIM12_SERVO_HZ SERVO_HZ
71
#endif
72
76
PRINT_CONFIG_VAR
(
ACTUATORS_PWM_NB
)
77
PRINT_CONFIG_VAR
(
PWM_FREQUENCY
)
78
PRINT_CONFIG_VAR
(
SERVO_HZ
)
79
80
88
#ifndef PWM_CMD_TO_US
89
#define PWM_CMD_TO_US(_t) (PWM_FREQUENCY * _t / 1000000)
90
#endif
91
101
__attribute__
((unused))
static
void
pwmpcb
(
PWMDriver
*pwmp
__attribute__
((unused))) {}
102
103
#if USE_PWM_TIM1
104
static
PWMConfig
pwmcfg1
= {
105
.frequency =
PWM_FREQUENCY
,
106
.period =
PWM_FREQUENCY
/
TIM1_SERVO_HZ
,
107
.callback =
NULL
,
108
.channels = {
109
{
PWM_OUTPUT_DISABLED
,
NULL
},
110
{
PWM_OUTPUT_DISABLED
,
NULL
},
111
{
PWM_OUTPUT_DISABLED
,
NULL
},
112
{
PWM_OUTPUT_DISABLED
,
NULL
},
113
},
114
.cr2 = 0,
115
.bdtr = 0,
116
.dier = 0
117
};
118
#endif
119
#if USE_PWM_TIM2
120
static
PWMConfig
pwmcfg2
= {
121
.frequency =
PWM_FREQUENCY
,
122
.period =
PWM_FREQUENCY
/
TIM2_SERVO_HZ
,
123
.callback =
NULL
,
124
.channels = {
125
{
PWM_OUTPUT_DISABLED
,
NULL
},
126
{
PWM_OUTPUT_DISABLED
,
NULL
},
127
{
PWM_OUTPUT_DISABLED
,
NULL
},
128
{
PWM_OUTPUT_DISABLED
,
NULL
},
129
},
130
.cr2 = 0,
131
.bdtr = 0,
132
.dier = 0
133
};
134
#endif
135
#if USE_PWM_TIM3
136
static
PWMConfig
pwmcfg3
= {
137
.frequency =
PWM_FREQUENCY
,
138
.period =
PWM_FREQUENCY
/
TIM3_SERVO_HZ
,
139
.callback =
NULL
,
140
.channels = {
141
{
PWM_OUTPUT_DISABLED
,
NULL
},
142
{
PWM_OUTPUT_DISABLED
,
NULL
},
143
{
PWM_OUTPUT_DISABLED
,
NULL
},
144
{
PWM_OUTPUT_DISABLED
,
NULL
},
145
},
146
.cr2 = 0,
147
.bdtr = 0,
148
.dier = 0
149
};
150
#endif
151
#if USE_PWM_TIM4
152
static
PWMConfig
pwmcfg4
= {
153
.frequency =
PWM_FREQUENCY
,
154
.period =
PWM_FREQUENCY
/
TIM4_SERVO_HZ
,
155
.callback =
NULL
,
156
.channels = {
157
{
PWM_OUTPUT_DISABLED
,
NULL
},
158
{
PWM_OUTPUT_DISABLED
,
NULL
},
159
{
PWM_OUTPUT_DISABLED
,
NULL
},
160
{
PWM_OUTPUT_DISABLED
,
NULL
},
161
},
162
.cr2 = 0,
163
.bdtr = 0,
164
.dier = 0
165
};
166
#endif
167
#if USE_PWM_TIM5
168
static
PWMConfig
pwmcfg5
= {
169
.frequency =
PWM_FREQUENCY
,
170
.period =
PWM_FREQUENCY
/
TIM5_SERVO_HZ
,
171
.callback =
NULL
,
172
.channels = {
173
{
PWM_OUTPUT_DISABLED
,
NULL
},
174
{
PWM_OUTPUT_DISABLED
,
NULL
},
175
{
PWM_OUTPUT_DISABLED
,
NULL
},
176
{
PWM_OUTPUT_DISABLED
,
NULL
},
177
},
178
.cr2 = 0,
179
.bdtr = 0,
180
.dier = 0
181
};
182
#endif
183
#if USE_PWM_TIM8
184
static
PWMConfig
pwmcfg8
= {
185
.frequency =
PWM_FREQUENCY
,
186
.period =
PWM_FREQUENCY
/
TIM8_SERVO_HZ
,
187
.callback =
NULL
,
188
.channels = {
189
{
PWM_OUTPUT_DISABLED
,
NULL
},
190
{
PWM_OUTPUT_DISABLED
,
NULL
},
191
{
PWM_OUTPUT_DISABLED
,
NULL
},
192
{
PWM_OUTPUT_DISABLED
,
NULL
},
193
},
194
.cr2 = 0,
195
.bdtr = 0,
196
.dier = 0
197
};
198
#endif
199
#if USE_PWM_TIM9
200
static
PWMConfig
pwmcfg9
= {
201
.frequency =
PWM_FREQUENCY
,
202
.period =
PWM_FREQUENCY
/
TIM9_SERVO_HZ
,
203
.callback =
NULL
,
204
.channels = {
205
{
PWM_OUTPUT_DISABLED
,
NULL
},
206
{
PWM_OUTPUT_DISABLED
,
NULL
},
207
{
PWM_OUTPUT_DISABLED
,
NULL
},
208
{
PWM_OUTPUT_DISABLED
,
NULL
},
209
},
210
.cr2 = 0,
211
.bdtr = 0,
212
.dier = 0
213
};
214
#endif
215
#if USE_PWM_TIM10
216
static
PWMConfig
pwmcfg10
= {
217
.frequency =
PWM_FREQUENCY
,
218
.period =
PWM_FREQUENCY
/
TIM10_SERVO_HZ
,
219
.callback =
NULL
,
220
.channels = {
221
{
PWM_OUTPUT_DISABLED
,
NULL
},
222
{
PWM_OUTPUT_DISABLED
,
NULL
},
223
{
PWM_OUTPUT_DISABLED
,
NULL
},
224
{
PWM_OUTPUT_DISABLED
,
NULL
},
225
},
226
.cr2 = 0,
227
.bdtr = 0,
228
.dier = 0
229
};
230
#endif
231
#if USE_PWM_TIM11
232
static
PWMConfig
pwmcfg11
= {
233
.frequency =
PWM_FREQUENCY
,
234
.period =
PWM_FREQUENCY
/
TIM11_SERVO_HZ
,
235
.callback =
NULL
,
236
.channels = {
237
{
PWM_OUTPUT_DISABLED
,
NULL
},
238
{
PWM_OUTPUT_DISABLED
,
NULL
},
239
{
PWM_OUTPUT_DISABLED
,
NULL
},
240
{
PWM_OUTPUT_DISABLED
,
NULL
},
241
},
242
.cr2 = 0,
243
.bdtr = 0,
244
.dier = 0
245
};
246
#endif
247
#if USE_PWM_TIM12
248
static
PWMConfig
pwmcfg12
= {
249
.frequency =
PWM_FREQUENCY
,
250
.period =
PWM_FREQUENCY
/
TIM12_SERVO_HZ
,
251
.callback =
NULL
,
252
.channels = {
253
{
PWM_OUTPUT_DISABLED
,
NULL
},
254
{
PWM_OUTPUT_DISABLED
,
NULL
},
255
{
PWM_OUTPUT_DISABLED
,
NULL
},
256
{
PWM_OUTPUT_DISABLED
,
NULL
},
257
},
258
.cr2 = 0,
259
.bdtr = 0,
260
.dier = 0
261
};
262
#endif
263
264
265
void
actuators_pwm_arch_init
(
void
)
266
{
267
/*----------------
268
* Configure GPIO
269
*----------------*/
270
#ifdef PWM_SERVO_0
271
gpio_setup_pin_af
(
PWM_SERVO_0_GPIO
,
PWM_SERVO_0_PIN
,
PWM_SERVO_0_AF
,
true
);
272
PWM_SERVO_0_CONF
.channels[
PWM_SERVO_0_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
273
#endif
274
#ifdef PWM_SERVO_1
275
gpio_setup_pin_af
(
PWM_SERVO_1_GPIO
,
PWM_SERVO_1_PIN
,
PWM_SERVO_1_AF
,
true
);
276
PWM_SERVO_1_CONF
.channels[
PWM_SERVO_1_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
277
#endif
278
#ifdef PWM_SERVO_2
279
gpio_setup_pin_af
(
PWM_SERVO_2_GPIO
,
PWM_SERVO_2_PIN
,
PWM_SERVO_2_AF
,
true
);
280
PWM_SERVO_2_CONF
.channels[
PWM_SERVO_2_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
281
#endif
282
#ifdef PWM_SERVO_3
283
gpio_setup_pin_af
(
PWM_SERVO_3_GPIO
,
PWM_SERVO_3_PIN
,
PWM_SERVO_3_AF
,
true
);
284
PWM_SERVO_3_CONF
.channels[
PWM_SERVO_3_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
285
#endif
286
#ifdef PWM_SERVO_4
287
gpio_setup_pin_af
(
PWM_SERVO_4_GPIO
,
PWM_SERVO_4_PIN
,
PWM_SERVO_4_AF
,
true
);
288
PWM_SERVO_4_CONF
.channels[
PWM_SERVO_4_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
289
#endif
290
#ifdef PWM_SERVO_5
291
gpio_setup_pin_af
(
PWM_SERVO_5_GPIO
,
PWM_SERVO_5_PIN
,
PWM_SERVO_5_AF
,
true
);
292
PWM_SERVO_5_CONF
.channels[
PWM_SERVO_5_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
293
#endif
294
#ifdef PWM_SERVO_6
295
gpio_setup_pin_af
(
PWM_SERVO_6_GPIO
,
PWM_SERVO_6_PIN
,
PWM_SERVO_6_AF
,
true
);
296
PWM_SERVO_6_CONF
.channels[
PWM_SERVO_6_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
297
#endif
298
#ifdef PWM_SERVO_7
299
gpio_setup_pin_af
(
PWM_SERVO_7_GPIO
,
PWM_SERVO_7_PIN
,
PWM_SERVO_7_AF
,
true
);
300
PWM_SERVO_7_CONF
.channels[
PWM_SERVO_7_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
301
#endif
302
#ifdef PWM_SERVO_8
303
gpio_setup_pin_af
(
PWM_SERVO_8_GPIO
,
PWM_SERVO_8_PIN
,
PWM_SERVO_8_AF
,
true
);
304
PWM_SERVO_8_CONF
.channels[
PWM_SERVO_8_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
305
#endif
306
#ifdef PWM_SERVO_9
307
gpio_setup_pin_af
(
PWM_SERVO_9_GPIO
,
PWM_SERVO_9_PIN
,
PWM_SERVO_9_AF
,
true
);
308
PWM_SERVO_9_CONF
.channels[
PWM_SERVO_9_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
309
#endif
310
#ifdef PWM_SERVO_10
311
gpio_setup_pin_af
(
PWM_SERVO_10_GPIO
,
PWM_SERVO_10_PIN
,
PWM_SERVO_10_AF
,
true
);
312
PWM_SERVO_10_CONF
.channels[
PWM_SERVO_10_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
313
#endif
314
#ifdef PWM_SERVO_11
315
gpio_setup_pin_af
(
PWM_SERVO_11_GPIO
,
PWM_SERVO_11_PIN
,
PWM_SERVO_11_AF
,
true
);
316
PWM_SERVO_11_CONF
.channels[
PWM_SERVO_11_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
317
#endif
318
#ifdef PWM_SERVO_12
319
gpio_setup_pin_af
(
PWM_SERVO_12_GPIO
,
PWM_SERVO_12_PIN
,
PWM_SERVO_12_AF
,
true
);
320
PWM_SERVO_12_CONF
.channels[
PWM_SERVO_12_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
321
#endif
322
#ifdef PWM_SERVO_13
323
gpio_setup_pin_af
(
PWM_SERVO_13_GPIO
,
PWM_SERVO_13_PIN
,
PWM_SERVO_13_AF
,
true
);
324
PWM_SERVO_13_CONF
.channels[
PWM_SERVO_13_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
325
#endif
326
#ifdef PWM_SERVO_14
327
gpio_setup_pin_af
(
PWM_SERVO_14_GPIO
,
PWM_SERVO_14_PIN
,
PWM_SERVO_14_AF
,
true
);
328
PWM_SERVO_14_CONF
.channels[
PWM_SERVO_14_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
329
#endif
330
#ifdef PWM_SERVO_15
331
gpio_setup_pin_af
(
PWM_SERVO_15_GPIO
,
PWM_SERVO_15_PIN
,
PWM_SERVO_15_AF
,
true
);
332
PWM_SERVO_15_CONF
.channels[
PWM_SERVO_15_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
333
#endif
334
#ifdef PWM_SERVO_16
335
gpio_setup_pin_af
(
PWM_SERVO_16_GPIO
,
PWM_SERVO_16_PIN
,
PWM_SERVO_16_AF
,
true
);
336
PWM_SERVO_16_CONF
.channels[
PWM_SERVO_16_CHANNEL
].mode =
PWM_OUTPUT_ACTIVE_HIGH
;
337
#endif
338
339
/*---------------
340
* Configure PWM
341
*---------------*/
342
#if USE_PWM_TIM1
343
pwmStart
(&
PWMD1
, &
pwmcfg1
);
344
#endif
345
#if USE_PWM_TIM2
346
pwmStart
(&
PWMD2
, &
pwmcfg2
);
347
#endif
348
#if USE_PWM_TIM3
349
pwmStart
(&
PWMD3
, &
pwmcfg3
);
350
#endif
351
#if USE_PWM_TIM4
352
pwmStart
(&
PWMD4
, &
pwmcfg4
);
353
#endif
354
#if USE_PWM_TIM5
355
pwmStart
(&
PWMD5
, &
pwmcfg5
);
356
#endif
357
#if USE_PWM_TIM8
358
pwmStart
(&
PWMD8
, &
pwmcfg8
);
359
#endif
360
#if USE_PWM_TIM9
361
pwmStart
(&
PWMD9
, &
pwmcfg9
);
362
#endif
363
#if USE_PWM_TIM10
364
pwmStart
(&
PWMD10
, &
pwmcfg10
);
365
#endif
366
#if USE_PWM_TIM11
367
pwmStart
(&
PWMD11
, &
pwmcfg11
);
368
#endif
369
#if USE_PWM_TIM12
370
pwmStart
(&
PWMD12
, &
pwmcfg12
);
371
#endif
372
}
373
374
375
void
actuators_pwm_arch_commit
(
void
)
376
{
377
#ifdef PWM_SERVO_0
378
pwmEnableChannel
(&
PWM_SERVO_0_DRIVER
,
PWM_SERVO_0_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_0
]));
379
#endif
380
#ifdef PWM_SERVO_1
381
pwmEnableChannel
(&
PWM_SERVO_1_DRIVER
,
PWM_SERVO_1_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_1
]));
382
#endif
383
#ifdef PWM_SERVO_2
384
pwmEnableChannel
(&
PWM_SERVO_2_DRIVER
,
PWM_SERVO_2_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_2
]));
385
#endif
386
#ifdef PWM_SERVO_3
387
pwmEnableChannel
(&
PWM_SERVO_3_DRIVER
,
PWM_SERVO_3_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_3
]));
388
#endif
389
#ifdef PWM_SERVO_4
390
pwmEnableChannel
(&
PWM_SERVO_4_DRIVER
,
PWM_SERVO_4_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_4
]));
391
#endif
392
#ifdef PWM_SERVO_5
393
pwmEnableChannel
(&
PWM_SERVO_5_DRIVER
,
PWM_SERVO_5_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_5
]));
394
#endif
395
#ifdef PWM_SERVO_6
396
pwmEnableChannel
(&
PWM_SERVO_6_DRIVER
,
PWM_SERVO_6_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_6
]));
397
#endif
398
#ifdef PWM_SERVO_7
399
pwmEnableChannel
(&
PWM_SERVO_7_DRIVER
,
PWM_SERVO_7_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_7
]));
400
#endif
401
#ifdef PWM_SERVO_8
402
pwmEnableChannel
(&
PWM_SERVO_8_DRIVER
,
PWM_SERVO_8_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_8
]));
403
#endif
404
#ifdef PWM_SERVO_9
405
pwmEnableChannel
(&
PWM_SERVO_9_DRIVER
,
PWM_SERVO_9_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_9
]));
406
#endif
407
#ifdef PWM_SERVO_10
408
pwmEnableChannel
(&
PWM_SERVO_10_DRIVER
,
PWM_SERVO_10_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_10
]));
409
#endif
410
#ifdef PWM_SERVO_11
411
pwmEnableChannel
(&
PWM_SERVO_11_DRIVER
,
PWM_SERVO_11_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_11
]));
412
#endif
413
#ifdef PWM_SERVO_12
414
pwmEnableChannel
(&
PWM_SERVO_12_DRIVER
,
PWM_SERVO_12_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_12
]));
415
#endif
416
#ifdef PWM_SERVO_13
417
pwmEnableChannel
(&
PWM_SERVO_13_DRIVER
,
PWM_SERVO_13_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_13
]));
418
#endif
419
#ifdef PWM_SERVO_14
420
pwmEnableChannel
(&
PWM_SERVO_14_DRIVER
,
PWM_SERVO_14_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_14
]));
421
#endif
422
#ifdef PWM_SERVO_15
423
pwmEnableChannel
(&
PWM_SERVO_15_DRIVER
,
PWM_SERVO_15_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_15
]));
424
#endif
425
#ifdef PWM_SERVO_16
426
pwmEnableChannel
(&
PWM_SERVO_16_DRIVER
,
PWM_SERVO_16_CHANNEL
,
PWM_CMD_TO_US
(
actuators_pwm_values
[
PWM_SERVO_16
]));
427
#endif
428
}
429
actuators_pwm.h
actuators_pwm_values
uint16_t actuators_pwm_values[ACTUATORS_ARDRONE_NB]
Definition
actuators.c:69
ACTUATORS_PWM_NB
#define ACTUATORS_PWM_NB
Definition
cc3d.h:158
gpio_setup_pin_af
void gpio_setup_pin_af(ioportid_t port, uint16_t pin, uint8_t af, bool is_output)
Setup a gpio for input or output with alternate function.
Definition
gpio_arch.c:65
TIM3_SERVO_HZ
#define TIM3_SERVO_HZ
Definition
actuators_pwm_arch.c:55
TIM5_SERVO_HZ
#define TIM5_SERVO_HZ
Definition
actuators_pwm_arch.c:61
PWM_CMD_TO_US
#define PWM_CMD_TO_US(_t)
Print the configuration variables from the header.
Definition
actuators_pwm_arch.c:89
pwmpcb
static void pwmpcb(PWMDriver *pwmp)
PWM callback function.
Definition
actuators_pwm_arch.c:101
TIM4_SERVO_HZ
#define TIM4_SERVO_HZ
Definition
actuators_pwm_arch.c:58
SERVO_HZ
#define SERVO_HZ
Definition
actuators_pwm_arch.c:44
TIM8_SERVO_HZ
#define TIM8_SERVO_HZ
Definition
actuators_pwm_arch.c:64
TIM9_SERVO_HZ
#define TIM9_SERVO_HZ
Definition
actuators_pwm_arch.c:67
TIM12_SERVO_HZ
#define TIM12_SERVO_HZ
Definition
actuators_pwm_arch.c:70
PWM_FREQUENCY
#define PWM_FREQUENCY
Definition
actuators_pwm_arch.c:39
TIM1_SERVO_HZ
#define TIM1_SERVO_HZ
Definition
actuators_pwm_arch.c:49
TIM2_SERVO_HZ
#define TIM2_SERVO_HZ
Definition
actuators_pwm_arch.c:52
actuators_pwm_arch_commit
void actuators_pwm_arch_commit(void)
Arch dependent commit function.
Definition
actuators_pwm_arch.c:375
actuators_pwm_arch_init
void actuators_pwm_arch_init(void)
Arch dependent init function.
Definition
actuators_pwm_arch.c:265
gpio.h
Some architecture independent helper functions for GPIOs.
foo
uint16_t foo
Definition
main_demo5.c:58
PWM_SERVO_6
#define PWM_SERVO_6
Definition
naze32_common.h:214
PWM_SERVO_3
#define PWM_SERVO_3
Definition
naze32_common.h:211
PWM_SERVO_4
#define PWM_SERVO_4
Definition
naze32_common.h:212
PWM_SERVO_5
#define PWM_SERVO_5
Definition
naze32_common.h:213
PRINT_CONFIG_VAR
PRINT_CONFIG_VAR(ONELOOP_ANDI_FILT_CUTOFF)
sw
airborne
arch
chibios
modules
actuators
actuators_pwm_arch.c
Generated on Mon Dec 8 2025 10:25:24 for Paparazzi UAS by
1.9.8