在stm32f103上运行nuttx,添加app和driver的流程

以stm32f103的led(PC13)为例子
heyi@ubuntu:~/nuttx/heyi_1_nuttx/nuttx/tools$ ./configure.sh stm32f103-minimum:nsh
heyi@ubuntu:~/nuttx/heyi_1_nuttx/nuttx:
make oldconfig menuconfig进行修改了以后,进行更新配置?这条指令暂时不需要
make menuconfig
在这里插入图片描述在这里插入图片描述Board led status support 需要取消掉,这个是ARCH_LED配置,共用了同一个led,如果勾选了这个配置,表示用于表示mcu的程序运行了。跟下面的userled驱动只能2选择1
退出到下面界面 device drivers,点击进去进行led的配置勾选
在这里插入图片描述在这里插入图片描述在这里插入图片描述进行app 应用程序的添加,先退出到根目录
在这里插入图片描述在这里插入图片描述在这里插入图片描述退出到App这一层后,再进行串口打印的放开(disable printf的勾选取消掉)
在这里插入图片描述在这里插入图片描述在这里插入图片描述保存当前的配置
在这里插入图片描述执行make指令,生成buttx.bin,安装《使用jlink直接烧写bin文件流程.docx》烧写bin程序到mcu中去

(二)简单的代码架构描述
nuttx\boards\arm\stm32\stm32f103-minimum\src 这个目录下主要是针对stm32f103的驱动函数存放处,例如lm75温度芯片的初始化(主要是片选管脚、i2c初始化,event等注册,还有该设备注册到driver/平台上去,例如设备名字/dec/userleds)
nuttx\arch\arm\src\stm32 这个目录下主要是具体的对mcu的功能模块的操作,例如i2c、gpio的pinmux配置、读写操作,rcc配置等;
\nuttx\drivers 这个目录下是所有mcu统一出来的标准驱动封装,例如app中会打开这里的驱动,然后由这里的驱动调用stm32f103下的驱动代码,再进行相应的动作。

apps\examples 这个目录下主要存放的是应用程序,例如leds应用程序
(三)修改led的pin管脚

nuttx\boards\arm\stm32\stm32f103-minimum\src\stm32f103_minimum.h 修改成其他gpio管脚,目前只有一个led,如果需要的话,可以多增加几个leds(这个其他stm32配置中已经有现成的,参考着修改就行)
在这里插入图片描述
修改好后,执行指令 make重新生成nuttx即可

如果要添加驱动程序,可以参考stm32_gpio.c进行修改,主要是当前目前的Makefile以及上一层的Kconfig也要进行修改,最后在make menuconfig中进行勾选

(四)app应用程序添加
以app/examples/hello为例子,移植新的app程序hellolead

  1. hellolead目录下的.c文件 Kconfig Makefile Make.defs都要进行修改
    Kconfig进行如下修改,Program name的名字在nsh打印中能看到对应的app名字,所以这三个stack size都是需要添加的
    在这里插入图片描述

Makefile如下修改:
-include $(TOPDIR)/Make.defs

Hello, Leadchina! built-in application info

PROGNAME = $(CONFIG_EXAMPLES_HELLOLEAD_PROGNAME)
PRIORITY = $(CONFIG_EXAMPLES_HELLOLEAD_PRIORITY)
STACKSIZE = $(CONFIG_EXAMPLES_HELLOLEAD_STACKSIZE)
MODULE = $(CONFIG_EXAMPLES_HELLOLEAD)

Hello, World! Example

MAINSRC = hellolead_main.c

include $(APPDIR)/Application.mk

Make.defs添加如下代码:
ifneq ($(CONFIG_EXAMPLES_HELLOLEAD),)
CONFIGURED_APPS += $(APPDIR)/examples/hellolead
endif

  1. 上一级目录的Kconfig也要修改? 这个貌似是自动生成的,主要是改hellolead下的内容
    上一级的Kconfig,当初在文件末端添加source “nuttx/apps/examples/hellolead/Kconfig”,但是貌似没生效,在重新make menuconfig之后,顺序进行了变化;如果是这样的话,EXAMPLES_HELLOLEAD这个宏放在那里,其他的也要放到类似的地方;
    如果有的时候不生效,make distclean,全部清空,再重新来一遍
    3)在make menuconfig中勾选EXAMPLES_HELLOLEAD,进行编译,然后烧写到mcu中去
    4)串口如下打印:
    在这里插入图片描述
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值