NuttX:给新板件添加GPIO实例

NuttX版本:V10.1.0

MCU:STM32F411CEU6

GPIO:PB8  ---  LED

前提知识: NuttX V10.1.0 : gpio示例调用流程__Herc的博客-CSDN博客

目录

一、指定主机平台并指定配置。

二、根据板件修改时钟树

三、添加GPIO底层驱动。

1、修改mcu对应的头文件宏定义stm32f411-minimum.h​

2、指定要使用引脚的参数(定义在stm32f411-minimum.h)

四、修改板特定头文件stm32f411-minimum.h。

1、添加GPIO相关的头文件

2、添加底层gpio驱动中所要使用的宏,根据实际LED引脚,修改宏GPIO_OUT1的指定port和pin(PB8)

3、添加stm32_gpio_initialize(void)的声明

五、将stm32_gpio.c添加到Make.defs中,当开启对应宏时加入编译。

六、将stm32_gpio_initialize()函数在nuttx/boards/arm/stm32/stm32f411-minimum/src/stm32_bringup.c板初始化函数中调用

七、make menuconfig 中开启GPIO驱动,并且把gpio示例应用选中编译进系统

1、在menuconfig中先搜索一下gpio,找到相关配置

2、→ Device Drivers → IO Expander/GPIO Support  选择GPIO driver

 3、→ Application Configuration → Examples 中开启gpio示例应用

八、编译并烧录进系统

九、测试验证

1、查看stm32_gpio_initialize()函数注册的GPIO设备,关注gpout1即可

2、通过help查看内置应用,其中的gpio为gpio实例应用,通过gpio -h即可看到帮助信息

3、输入命令控制led


    由于STM32F411CEU6这个mcu已经在nuttx/boards/arm/stm32/stm32f411-minimum存在对应的boards文件,因此不需要重新创建,只需要在该目录下进行修改。

一、指定主机平台并指定配置。

        nuttx/boards/arm/stm32/stm32f411-minimum/configs存在nsh板配置文件,因此后续使用该板配置文件。

        $./tools/configure.sh -l stm32f411-minimum:nsh

二、根据板件修改时钟树

        对应的时钟树配置文件在nuttx/boards/arm/stm32/stm32f411-minimum/include/board.h

        笔者进行开发验证的板件,其晶振为8M,而nuttx中stm32f411的指定晶振为25M,因此需要进行修改才可以进行后续开发。

三、添加GPIO底层驱动。

        由于官网下载的stm32f411-minimum板并没有gpio的驱动,因此需要自行添加GPIO底层驱动,原始目录如下:

底层GPIO驱动从boards/arm/stm32/stm32f103-minimum/src/stm32_gpio.c移植到nuttx/boards/arm/stm32/stm32f411-minimum/src/目录下,并做出下面的修改:

1、修改mcu对应的头文件宏定义stm32f411-minimum.h

2、指定要使用引脚的参数(定义在stm32f411-minimum.h)

四、修改板特定头文件stm32f411-minimum.h。

1、添加GPIO相关的头文件

2、添加底层gpio驱动中所要使用的宏,根据实际LED引脚,修改宏GPIO_OUT1的指定port和pin(PB8)

3、添加stm32_gpio_initialize(void)的声明

五、将stm32_gpio.c添加到Make.defs中,当开启对应宏时加入编译。

            打开boards/arm/stm32/stm32f103-minimum/src/Make.defs

六、将stm32_gpio_initialize()函数在nuttx/boards/arm/stm32/stm32f411-minimum/src/stm32_bringup.c板初始化函数中调用

七、make menuconfig 中开启GPIO驱动,并且把gpio示例应用选中编译进系统

1、在menuconfig中先搜索一下gpio,找到相关配置

2、→ Device Drivers → IO Expander/GPIO Support  选择GPIO driver

 3、→ Application Configuration → Examples 中开启gpio示例应用

八、编译并烧录进系统

$cd {nuttx源码所在目录}/nuttx/nuttx

$make clean;make

烧录可以使用JFlash进行烧录或者使用openocd,我这里使用JFlash

九、测试验证

        使用USB转ttl模块连接到测试板件的串口1。这一步需要先经过测试能够正常连接nsh并输出信息,才能进行后续测试。

NuttShell前的输出信息为我自行添加的调试信息,可以不用管。

1、查看stm32_gpio_initialize()函数注册的GPIO设备,关注gpout1即可

 

2、通过help查看内置应用,其中的gpio为gpio实例应用,通过gpio -h即可看到帮助信息

3、输入命令控制led

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值