以stm32f103的led(PC13)为例子
[email protected]:~/nuttx/heyi_1_nuttx/nuttx/tools$ ./configure.sh stm32f103-minimum:nsh
[email protected]:~/nuttx/heyi_1_nuttx/nuttx:
make oldconfig menuconfig进行修改了以后,进行更新配置?这条指令暂时不需要
make menuconfig
在stm32f103上运行nuttx,添加app和driver的流程在stm32f103上运行nuttx,添加app和driver的流程Board led status support 需要取消掉,这个是ARCH_LED配置,共用了同一个led,如果勾选了这个配置,表示用于表示mcu的程序运行了。跟下面的userled驱动只能2选择1
退出到下面界面 device drivers,点击进去进行led的配置勾选
在stm32f103上运行nuttx,添加app和driver的流程在stm32f103上运行nuttx,添加app和driver的流程在stm32f103上运行nuttx,添加app和driver的流程进行app 应用程序的添加,先退出到根目录
在stm32f103上运行nuttx,添加app和driver的流程在stm32f103上运行nuttx,添加app和driver的流程在stm32f103上运行nuttx,添加app和driver的流程退出到App这一层后,再进行串口打印的放开(disable printf的勾选取消掉)
在stm32f103上运行nuttx,添加app和driver的流程在stm32f103上运行nuttx,添加app和driver的流程在stm32f103上运行nuttx,添加app和driver的流程保存当前的配置
在stm32f103上运行nuttx,添加app和driver的流程执行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配置中已经有现成的,参考着修改就行)
在stm32f103上运行nuttx,添加app和driver的流程
修改好后,执行指令 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都是需要添加的
    在stm32f103上运行nuttx,添加app和driver的流程

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)串口如下打印:
    在stm32f103上运行nuttx,添加app和driver的流程

相关文章:

  • 2021-10-29
  • 2022-12-23
  • 2021-06-15
  • 2021-07-21
  • 2021-12-16
  • 2021-09-12
  • 2022-01-10
  • 2022-12-23
猜你喜欢
  • 2021-12-27
  • 2021-08-22
  • 2021-06-28
  • 2022-01-06
  • 2021-07-13
  • 2022-12-23
  • 2021-06-23
相关资源
相似解决方案