NuttX: Как добавить поддержку ШИМ для плат STM32F7? (stm32_pwm.h не найден) - PullRequest
0 голосов
/ 24 марта 2019

Я бы хотел добавить поддержку ШИМ в конфигурацию моей платы NUTX. Я использую микроконтроллер STM32F765VGT6.

Я начал реализовывать это как в каталоге конфигурации STM32F4Discovery:

  • добавить stm32_pwm_setup() в configs/<board_name>/src/<board_name>.h
  • добавить configs/<board_name>/src/stm32_pwm.c:
#include <nuttx/config.h>

#include <errno.h>
#include <debug.h>

#include <nuttx/board.h>
#include <nuttx/drivers/pwm.h>

#include <arch/board/board.h>

#include "chip.h"
#include "up_arch.h"
#include "stm32_pwm.h"

#include "board_name.h"

#ifdef CONFIG_PWM

int stm32_pwm_setup(void) {
    static bool initialized = false;
    struct pwm_lowerhalf_s *pwm;
    int ret;

    /* Have we already initialized? */

    if (!initialized) {

#if defined(CONFIG_STM32F7_TIM1_PWM)
#if defined(CONFIG_STM32F7_TIM1_CH1OUT)
        pwm = stm32_pwminitialize(1);
        if (!pwm) {
            aerr("ERROR: Failed to get the STM32F7 PWM lower half\n");
            return -ENODEV;
        }

        ret = pwm_register(DEV_PWM3, pwm);
        if (ret < 0) {
            aerr("ERROR: pwm_register failed: %d\n", ret);
            return ret;
        }
#endif

/* ... */
/* other timers and channels */
/* ... */

        initialized = true;
    }

    return OK;
}

#endif /* CONFIG_PWM */
  • добавление stm32_pwm.c в Makefile (configs/<board_name>/src/Makefile)

Однако я всегда получаю ошибку компиляции, что "stm32_pwm.h" не был найден. Кроме того, я не могу позвонить stm32_pwm_initialize() в моем configs/<board_name>/src/stm32_boot.c.

Кто-то уже реализовал поддержку NuttX PWM на STM32F7 или может дать мне подсказку, почему я терплю неудачу?

1 Ответ

1 голос
/ 24 марта 2019

stm32_pwm.h не может быть включено приложениями, пути включения (намеренно) не поддерживаются. Если вы переместите код инициализации в файл config / stm32f4discovery / src / stm32_bringup.c, он должен скомпилироваться нормально.

STM32F7? Для STM32F7 нет stm32_pwm.h. Никто не предоставил драйвер ШИМ. На этот раз компилятор прав, файл заголовка не существует в arch / arm / src / stm32f7. Решением было бы перенести драйвер PWM из аналогичной архитектуры STM32. Выборы:

arch / arm / src / stm32 - Включает L1, F0, F2, F3 и F4, и арка / рука / src / stm32l4 - который только STM32L4

...