NuttX:如何为 STM32F7 板添加 PWM 支持? (stm32_pwm.h 未找到)
NuttX: How to add PWM support for STM32F7 boards? (stm32_pwm.h not found)
我想在我的 nuttx 板配置中添加 PWM 支持。
我正在使用 STM32F765VGT6 MCU。
我开始在 STM32F4Discovery 配置目录中实现它:
- 在
configs/<board_name>/src/<board_name>.h
中添加stm32_pwm_setup()
- 添加
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 */
- 在 Makefile 中追加
stm32_pwm.c
(configs/<board_name>/src/Makefile
)
但是,我总是得到"stm32_pwm.h"找不到的编译错误。
另外,我无法在 configs/<board_name>/src/stm32_boot.c
.
中调用 stm32_pwm_initialize()
是否有人已经在 STM32F7 上实现了 NuttX PWM 支持,或者可以提示我失败的原因?
stm32_pwm.h 不能被应用程序包含,包含路径(有意)不支持。如果将初始化代码移动到 configs/stm32f4discovery/src/stm32_bringup.c,它应该可以正常编译。
STM32F7? STM32F7没有stm32_pwm.h。没有人贡献过PWM驱动。这次编译器没错,头文件在arch/arm/src/stm32f7中不存在。解决方案是从类似的 STM32 架构移植 PWM 驱动程序。选项是:
arch/arm/src/stm32 - 其中包括 L1、F0、F2、F3 和 F4,以及
arch/arm/src/stm32l4 - 这只是 STM32L4
我想在我的 nuttx 板配置中添加 PWM 支持。 我正在使用 STM32F765VGT6 MCU。
我开始在 STM32F4Discovery 配置目录中实现它:
- 在
configs/<board_name>/src/<board_name>.h
中添加 - 添加
configs/<board_name>/src/stm32_pwm.c
:
stm32_pwm_setup()
#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 */
- 在 Makefile 中追加
stm32_pwm.c
(configs/<board_name>/src/Makefile
)
但是,我总是得到"stm32_pwm.h"找不到的编译错误。
另外,我无法在 configs/<board_name>/src/stm32_boot.c
.
stm32_pwm_initialize()
是否有人已经在 STM32F7 上实现了 NuttX PWM 支持,或者可以提示我失败的原因?
stm32_pwm.h 不能被应用程序包含,包含路径(有意)不支持。如果将初始化代码移动到 configs/stm32f4discovery/src/stm32_bringup.c,它应该可以正常编译。
STM32F7? STM32F7没有stm32_pwm.h。没有人贡献过PWM驱动。这次编译器没错,头文件在arch/arm/src/stm32f7中不存在。解决方案是从类似的 STM32 架构移植 PWM 驱动程序。选项是:
arch/arm/src/stm32 - 其中包括 L1、F0、F2、F3 和 F4,以及 arch/arm/src/stm32l4 - 这只是 STM32L4