就在刚刚阅读NRF51822相关的文档时遇到问题,官方给出了一份模板,我从我安装的example中找出了官方的列程,看到是soft config的方式配置的,于是根据列程的配置,自己新建了一个工程之后手动复制了一份配置,c文件也是直接复制粘贴的,但是发现并不能编译通过,主要的错误是 error-custom translator properties not set,如下图:
s130...hex?看到这里我就想到一个问题,nrf51822的协议栈是需要和程序分开烧写的呢,还是可以直接嵌入到程序中一起烧写呢?
为了搞明白这个问题,我先将hex固件取消勾选,然后再编译,居然不再报错了,然后重新勾选上hex固件之后又报上面的错误,由此可以确定:程序中是不能嵌入hex固件的,固件必须是和程序分开烧写,最好是先烧写固件,再烧写程序。
很有意思啊,怎么会这样呢。但是官方的列程中时勾选了的啊,我编译了他的项目,并没有报错,那么我的项目到底问题出现在什么地方呢??比较两个项目的不同,发现有一点地方疑点很大:如图
这里怎么会有两个呢》?而我的只有一个,而且是默认的Targent1,也不知道怎么设置这地方,找了半天终于找到了设置的地方了:
就是这个,点开之后是这样
如果仔细看,一定会发现,有新建按钮,就在上面,如图:
但是这又能说明什么呢??我跑去查了下这targent和project的关系,不难找到一篇相关的文章:https://www.jianshu.com/p/73f4e11524e9,其中主要的是:
由此可以说明,这两个选项可能对应不同的project设置,于是打开项目目录仔细观察发现:
果然,在不同的选择下,配置是会变化的,选择flash时,会屏蔽main函数,这就是用来刷入固件的选项,而选择nrf51时是烧写应用程序的,此时会自动屏蔽hex,这也就解释了之前为什么编译会出错的原因了,但是问题虽然解决了,新的问题又来了,这个Targent要怎么配置呢?我没找到有入口可以去给每个targent做个性化设置的选项,这是什么鬼?有谁懂的给分享下谢谢了!!感激不尽