943|1

422

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

【nRF7002-DK Wi-Fi® 6开发套件评测】#4 nRF的设计工程框架和解析 [复制链接]

1 nRF的设计工程启动和结构组成

如上一帖一次打开工程展现VS code界面,这次没有打开项目的界面

选择open folder打开项目然后切换到nRF的界面,如下

2 切换到开发环境并对比

首先尝试直接进入windows的命令行界面,如下cmd命令输入

启动的命令行页面直接输入west,显然没有这个东东,那么神马是west呢?

且慢,这里没有并不等于真没有。这里就解释了问什么要从tool chain manager界面进入VS code了,在Open VScode的右侧有小标签,分别点击bash和cmd界面,这里再输入west,就显示该命令被激活了。那么这个就是nRF command line的命令环境,是用west为核心命令,执行编译,下载和调试功能的。而vs Code也是基于该环境,不过是GUI界面,
3 工程框架分析
可以进入这个blinky源码界面,然后从下到上,首先,这个是展开工程中的开发板配置情况,包括了哪些开发板的资源,如GPIO和哪个内核

打开cmak的配置界面,这个nRF是基于cMake的,而且是自己安装全套的,不用系统的cMake,所以,如果系统要求安装,你直接无视

一共三个配置文件,这个是工程配置,这里只用了GPIO

然后是内核的配置,

这个是zephyr的配置,内核的RTOS,而前面测试的west就是zephyr的开发工具。整个配置文件时kconfig命令完成的,也是nRF的配套配置工具,应该也是用scons这个开发配置命令完成的,看界面是非常的相似。

 

 

最后展开应用的结构,可以看到这个框架是由众多底层库支持的,而选择哪些库是由上面的config完成的。注意,这个是经过build之后生成的,所以,用户干预可以是零,如果不满意自动生成的配置,在这里直接修改,也是可以的,不过二进制文件不跟着改楼。

最后,才是我们的代码,用户代码就简单得很了,目测无需注解。

4 用户代码开发简析

先贴上代码,这个代码也是先定义端口,再确定GPIO的输出方向,然后初始化,在loop循环中,每切换状态就等待1000毫秒

#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>

#define SLEEP_TIME_MS   1000

#define LED0_NODE DT_ALIAS(led0)

static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);

int main(void)
{
	int ret;

	if (!gpio_is_ready_dt(&led)) {
		return 0;
	}

	ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
	if (ret < 0) {
		return 0;
	}

	while (1) {
		ret = gpio_pin_toggle_dt(&led);
		if (ret < 0) {
			return 0;
		}
		k_msleep(SLEEP_TIME_MS);
	}
	return 0;
}

选择flash,下载代码,这里显示下载的进度

然后就可以显示每隔1000毫秒的亮灯过程了。

5 小结

这个开发的框架是比较清晰的,但是显然环境的配置比较多,虽然是自动配置,但是也需要搞懂才好。

 

此帖出自RF/无线论坛

最新回复

哇,好厉害,学习学习   详情 回复 发表于 2023-11-7 11:11
点赞 关注
 

回复
举报

28

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

哇,好厉害,学习学习

此帖出自RF/无线论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表