int board_pwm_setup(void) { static bool initialized = false; struct pwm_lowerhalf_s *pwm; int ret; /* Have we already initialized? */ if (!initialized) { /* Call stm32_pwminitialize() to get an instance of the PWM interface */ pwm = stm32_pwminitialize(NUCLEO_F303RE_PWMTIMER); if (pwm == NULL) { pwmerr("ERROR: Failed to get the STM32 PWM lower half\n"); return -ENODEV; } /* Register the PWM driver at "/dev/pwm0" */ ret = pwm_register("/dev/pwm0", pwm); if (ret < 0) { pwmerr("ERROR: pwm_register failed: %d\n", ret); return ret; } /* Now we are initialized */ initialized = true; } return OK; }
int pwm_devinit(void) { static bool initialized = false; struct pwm_lowerhalf_s *pwm; int ret; /* Have we already initialized? */ if (!initialized) { /* Call stm32_pwminitialize() to get an instance of the PWM interface */ pwm = stm32_pwminitialize(STM32F4DISCOVERY_PWMTIMER); if (!pwm) { dbg("Failed to get the STM32 PWM lower half\n"); return -ENODEV; } /* Register the PWM driver at "/dev/pwm0" */ ret = pwm_register("/dev/pwm0", pwm); if (ret < 0) { adbg("pwm_register failed: %d\n", ret); return ret; } /* Now we are initialized */ initialized = true; } return OK; }
int stm32_tone_setup(void) { static bool initialized = false; struct pwm_lowerhalf_s *tone; struct pwm_info_s info; struct oneshot_lowerhalf_s *oneshot = NULL; int ret; /* Have we already initialized? */ if (!initialized) { /* Call stm32_pwminitialize() to get an instance of the PWM interface */ tone = stm32_pwminitialize(TONE_PWM_TIMER); if (!tone) { auderr("Failed to get the STM32 PWM lower half to AUDIO TONE\n"); return -ENODEV; } /* Initialize TONE PWM */ tone->ops->setup(tone); tone->ops->start(tone, &info); /* Initialize ONESHOT Timer */ oneshot = oneshot_initialize(ONESHOT_TIMER, OST_RES); if (!oneshot) { auderr("Failed to initialize ONESHOT Timer!\n"); return -ENODEV; } /* Register the Audio Tone driver at "/dev/tone0" */ ret = tone_register("/dev/tone0", tone, oneshot); if (ret < 0) { auderr("ERROR: tone_register failed: %d\n", ret); return ret; } /* Now we are initialized */ initialized = true; } return OK; }
int stm32_rgbled_setup(void) { static bool initialized = false; struct pwm_lowerhalf_s *ledr; struct pwm_lowerhalf_s *ledg; struct pwm_lowerhalf_s *ledb; struct pwm_info_s info; int ret; /* Have we already initialized? */ if (!initialized) { /* Call stm32_pwminitialize() to get an instance of the PWM interface */ ledr = stm32_pwminitialize(1); if (!ledr) { lederr("ERROR: Failed to get the STM32 PWM lower half to LEDR\n"); return -ENODEV; } /* Define frequency and duty cycle */ info.frequency = 100; info.duty = 0; /* Initialize LED R */ ledr->ops->setup(ledr); ledr->ops->start(ledr, &info); /* Call stm32_pwminitialize() to get an instance of the PWM interface */ ledg = stm32_pwminitialize(2); if (!ledg) { lederr("ERROR: Failed to get the STM32 PWM lower half to LEDG\n"); return -ENODEV; } /* Initialize LED G */ ledg->ops->setup(ledg); ledg->ops->start(ledg, &info); /* Call stm32_pwminitialize() to get an instance of the PWM interface */ ledb = stm32_pwminitialize(3); if (!ledb) { lederr("ERROR: Failed to get the STM32 PWM lower half to LEDB\n"); return -ENODEV; } /* Initialize LED B */ ledb->ops->setup(ledb); ledb->ops->start(ledb, &info); /* Register the RGB LED diver at "/dev/rgbled0" */ ret = rgbled_register("/dev/rgbled0", ledr, ledg, ledb); if (ret < 0) { lederr("ERROR: rgbled_register failed: %d\n", ret); return ret; } /* Now we are initialized */ initialized = true; } return OK; }