STM32F4 komplementär PWM Problem in ChibiOs

Gast #4883722
Lesenswert?

Hallo,

in ChibiOs versuche ich vergeblich die komplementären PWMs vom STM32F407 
Discovery Board zu testen.

Kann mir jemand bitte helfen, wo der Fehler liegt. Ich messe nur 
Rauschen am PA8, PA9 und PA10.

Danke im Voraus.
1
#include "ch.h"
2
#include "hal.h"
3

4
static THD_WORKING_AREA(waThread1, 128);
5
static THD_FUNCTION(Thread1, arg) {
6

7
  (void)arg;
8
  chRegSetThreadName("blinker");
9
  while (true) {
10
    palTogglePad(GPIOD, GPIOD_LED3);
11
    palTogglePad(GPIOD, GPIOD_LED4);
12
    palTogglePad(GPIOD, GPIOD_LED5);
13
    palTogglePad(GPIOD, GPIOD_LED6);
14

15
    chThdSleepMilliseconds(500);
16
  }
17
}
18

19
static PWMConfig pwm1cfg = {
20
  8000000,          /* 8MHz PWM clock frequency.   */
21
  US2ST(20),          /* PWM period 20us.       */
22
  NULL,
23
  {
24
  {PWM_OUTPUT_ACTIVE_HIGH | PWM_COMPLEMENTARY_OUTPUT_ACTIVE_LOW, NULL}, /* PWM1, CH1 */
25
  {PWM_OUTPUT_ACTIVE_HIGH | PWM_COMPLEMENTARY_OUTPUT_ACTIVE_LOW, NULL}, /* PWM1, CH2 */
26
  {PWM_OUTPUT_ACTIVE_HIGH | PWM_COMPLEMENTARY_OUTPUT_ACTIVE_LOW, NULL}, /* PWM1, CH3 */
27
  {PWM_OUTPUT_DISABLED, NULL}
28
  },
29
  0,
30
  0
31
};
32

33
int main(void) {
34

35
  halInit();
36
  chSysInit();
37

38
  pwmStart(&PWMD1, &pwm1cfg);
39

40
  palSetPadMode(GPIOA, 8, PAL_MODE_ALTERNATE(1));
41
  palSetPadMode(GPIOA, 9, PAL_MODE_ALTERNATE(1));
42
  palSetPadMode(GPIOA, 10, PAL_MODE_ALTERNATE(1));
43
  palSetPadMode(GPIOB, 13, PAL_MODE_ALTERNATE(1));
44
  palSetPadMode(GPIOB, 14, PAL_MODE_ALTERNATE(1));
45
  palSetPadMode(GPIOB, 15, PAL_MODE_ALTERNATE(1));
46

47
  pwmEnableChannel(&PWMD1, 1, PWM_PERCENTAGE_TO_WIDTH (&PWMD1, 1000));
48
  pwmEnableChannel(&PWMD1, 1, PWM_PERCENTAGE_TO_WIDTH (&PWMD1, 7000));
49
  pwmEnableChannel(&PWMD1, 2, PWM_PERCENTAGE_TO_WIDTH (&PWMD1, 7000));
50

51
  /*
52
   * Activates the serial driver 2 using the driver default configuration.
53
   * PA2(TX) and PA3(RX) are routed to USART2.
54
   */
55
  sdStart(&SD2, NULL);
56
  palSetPadMode(GPIOA, 2, PAL_MODE_ALTERNATE(7));
57
  palSetPadMode(GPIOA, 3, PAL_MODE_ALTERNATE(7));
58

59
  chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
60

61
  while (true) {
62
    sdWrite(&SD2, (uint8_t *)"Hallo\n", 6);
63
    if (palReadPad(GPIOA, GPIOA_BUTTON))
64
      sdWrite(&SD2, (uint8_t *)"Press\n", 6);
65
    chThdSleepMilliseconds(500);
66
  }
67
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren