目的:在模板工程目录下增加一个sysled.c 文件,用于LED闪烁,控制引脚和闪烁频率均可用过 Env menuconfig 页面配置

1.在源码目录下更改SConscript文件

Import('RTT_ROOT')
Import('rtconfig')
from building import *cwd     = os.path.join(str(Dir('#')), 'drivers')# add the general drivers.
src = Split("""
board.c
drv_gpio.c
""")CPPPATH = [cwd]# add uart drivers.
if GetDepend('RT_USING_SERIAL'):src += ['drv_usart.c']# add sdram drivers.
if GetDepend('BSP_USING_SDRAM'):src += ['drv_exmc_sdram.c']# add Ethernet drivers.
if GetDepend('RT_USING_LWIP'):src += ['drv_enet.c', 'synopsys_emac.c']# add lcd drivers.
if GetDepend('PKG_USING_GUIENGINE'):src += ['drv_lcd.c', 'gd32f450z_lcd_eval.c']# add spi flash drivers.
if GetDepend('RT_USING_SFUD'):src += ['drv_spi_flash.c', 'drv_spi.c']
elif GetDepend('RT_USING_SPI'):src += ['drv_spi.c']//这里判断是否定义了USING_SYS_LED,如果定义了,就增加SysLed.c到工程下
# add sys led drivers.
if GetDepend('USING_SYS_LED'):src += ['SysLed.c']    # add lcd drivers.
if GetDepend('PKG_USING_GUIENGINE'):src += ['drv_lcd.c', 'gd32f450z_lcd_eval.c']group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)Return('group')

如上面代码,加两行代码,用于判断是否要增加SysLed.c到工程组了,,

2.在kconfig制作evn menuconfig选项

打开kconfig

然后增加以下代码


menu "Config System LED"             #制作一个Config System LED菜单menuconfig USING_SYS_LED         bool "Enable System LED"     #一个bool选项default y
#        select USING_SYS_LED         if USING_SYS_LEDconfig SYS_LED_GPIOint "the gpio gruop for LED"default "GPIOD"helponly write the last char, if you want to use GPIOD ,you should  write Dconfig SYS_LED_PIN_NUMint "the gpio pin num for LED"default "13"config SYS_LED_FLICKER_PERIODint "the LED flicker half-Period "default "500"endif
endmenu

最终制作成的menuconfig如下

进入菜单

通过这些选项可以更改CPU指示灯的参数

配置完成之后退出菜单保存,

evn工具会更新 rtconfig.h 文件,如下增加了一些对应的宏定义

能生成宏定义之后,源代码用预编译指令,代码需要针对宏定义进行调用

#include "SysLed.h"#include <rtthread.h>
#include <board.h>#ifdef USING_SYS_LED#define CPU_LED_PIN   (GET_PIN(SYS_LED_GPIO, SYS_LED_PIN_NUM))
#define CPU_LED_ON()    rt_pin_write(CPU_LED_PIN, PIN_LOW)
#define CPU_LED_OFF()   rt_pin_write(CPU_LED_PIN, PIN_HIGH)void SystemLedTicker (void)
{CPU_LED_ON();rt_thread_mdelay ( SYS_LED_FLICKER_PERIOD );CPU_LED_OFF();rt_thread_mdelay ( SYS_LED_FLICKER_PERIOD );
}static int sys_led_init(void)
{rt_pin_mode(CPU_LED_PIN, PIN_MODE_INPUT_PULLDOWN);CPU_LED_OFF();   return 0;
}
INIT_DEVICE_EXPORT(sys_led_init);#endif 

至此,在env工具下用 scons 命令就可以构建出带sysled.c的工程。

用scons --target=iar 编译出IAR工程

RT-Thread Env工具下 scons命令构建工程 SConscript和Kconfig修改示例相关推荐

  1. Yeelink平台使用——远程控制 RT Thread + LwIP+ STM32

    1.前言     [2014年4月重写该博文]     经过若干时间的努力终于搞定了STM32+LwIP和yeelink平台的数据互通,在学习的过程中大部分时间花在以太网协议栈学习上,但是在RT Th ...

  2. keil删除工程_RTT 是如何管理和构建工程的?

    前言 rtthread 是一个功能强大,组件丰富的物联网操作系统.它相比于其他的 RTOS 的一个主要区别之一,也就是它不仅仅是一个实时内核,还具备丰富的中间层组件.那对于 rtt 来讲,它又是如何管 ...

  3. 基于rt thread smart构建EtherCAT主站

    我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开.rt thre ...

  4. rt thread系统下添加wiznet软件包后,不插网线CPU利用率100%问题

    rt thread系统下添加wiznet软件包后如果不插网线的话其他任务运行很卡,使用ps命令发现优先级低的任务很多都超时了 rt thread线程错误码 添加了一个可以查看CPU利用率的软件包CPU ...

  5. 【Android 命令行工具】Android 命令行工具简介 ( 官方文档 | SDK 命令行工具 | SDK 构建工具 | SDK 平台工具 | 模拟器工具 | Jetifier 工具 )

    文章目录 一.官方文档 二.Android 命令行工具简介 1.SDK 命令行工具 2.SDK 构建工具 3.SDK 平台工具 4.模拟器工具 5.Jetifier 工具 一.官方文档 Android ...

  6. Linux命令行如何编辑word文档,在Linux平台下用命令行工具显示Word文档

    在Linux平台下用命令行工具显示Word文档 ·Antiword ·Catdoc ·wvWare[@more@] Viewing Word files at the command line Wed ...

  7. Windows环境下的命令行工具cmder的安装和使用

    当习惯了Linux环境下的命令行以后,再去使用Windows环境下的命令行,往往会不太顺手.切换为Windows环境和Linux双系统又比较麻烦,现在有一款比较方便的命令行工具,只需安装就可以运行Li ...

  8. windows下的命令行工具babun

    Babun 可以直接在winodows下面编译linux代码 但是本人只成功编译过个个go的linux 和 C的linux,C++的编译不出来东西 安装很简单,下下来,直接双击批处理 install ...

  9. RT Thread根据开发板制作BSP方法

    之前一直不懂怎么使用RT Thread的软件包,感谢网上的大神,看了你们的博客后大概了解一些,在此做下记录.用RT Thread软件包需要RT Thread的系统,但是RT Thread和RT Thr ...

  10. stm32f407单片机rt thread 片外spi flash OTA升级配置示例

    参考地址https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/ 第一步,生成Boot ...

最新文章

  1. 从我开始学单片机到完成一个智能小车的制作我都需要掌握哪些知识?
  2. redis php ismember,Spring StringRedisTemplate 配置
  3. mysql 跨库复制_Mysql跨数据库(在同一IP地址中)复制表
  4. 软件质量与测试 黑盒测试
  5. 因未交赎金,世界航天巨头机密文档遭勒索软件公开
  6. 职称计算机怎么练,2017职称计算机windows操作训练题
  7. java楼宇报警器_智能楼宇包含哪些安防子系统
  8. 如何修改计算机mac地址吗,如何修改电脑的Mac地址
  9. SpringBoot:yml文件详解
  10. 斐波那契数列的几种求解方法
  11. 2016百度之星 - 初赛(Astar Round2A)题解
  12. arp -s命令报错,ARP项添加失败:请求的操作需要提升。
  13. 拍案惊奇——软件调试实战训练营暑期特别班(v2.1)
  14. Linux C编程 itoa()函数 atoi()函数
  15. Java多线程开发的实际应用场景
  16. 使用og协议分享web页面到WhatsApp
  17. H.265流媒体播放器EasyPlayer.js集成时页面报错出现“X”,该如何解决?
  18. e级超级计算机济南,国之重器!神威E级原型机8月将在国家超级计算济南中心落地...
  19. python鱼眼图像识别_使用OpenCV校准鱼眼镜头的方法
  20. 我们的UED设计流程及方法

热门文章

  1. Filtered off site request to
  2. ppt导出1000dpi的图
  3. 悬针纹怎么去除 悬针纹化解方法有哪些
  4. HTML onfocus (获得焦点)和 onblur (失去焦点)
  5. luci编程 openwrt_【玩转开源】BananaPi R2 —— 第四篇 Openwrt Luci 初探
  6. 利用R代码从UCSC XENA下载mRNA, lncRNA, miRNA表达数据并匹配临床信息
  7. jQuery 插件——免费版
  8. 手机号码变成空号导致亚马逊账号登陆两步验证失败的恢复网址及方法
  9. c 语言count函数什么意思,在C ++ STL中设置count()函数
  10. HDU6357——Hills And Valleys