移植自己的工程其实更好的让自己熟悉SDK中相关的文件功能,作为开发其实不需要一定要移植自己的。下面开始我的工作。
我用的是keil 5.23,先建立新工程,最好是建立在SDK的example下,方便只有的include引用,不然自己来回添加会崩溃的。我的目录和工程名如下
D:\work\project\FR801xH-SDK\examples\mine\clock
微信图片_20200202133712.png
建立工程点击保存,弹出如下
微信图片_20200202133757.png
选择设备型号,按照例程,直接选择ARM Cortex M3即刻,点击ok
微信图片_20200202133802.png
弹出这个页面,因为整个工程有自己的启动文件和库,所以这里不要选任何的,直接点击右上角关闭。
微信图片_20200202133806.png
进入工程,点击工程配置图中左上角红绿白那个图形,修改工程名和建立群组:app,util,driver,platform,patch,lib,其中后四个就是库和启动文件所需要的。
微信图片_20200202133810.png
另外在工程文件夹下,也要建立相应的app和util的文件夹。下边开始设置工程,你们也可以自己参照例程的工程设置
微信图片_20200202133813.png 微信图片_20200202133816.png 微信图片_20200202133820.png 微信图片_20200202133826.png 微信图片_20200202133839.png
按照图中修改,我也不知道为什么,是抄例程的。上边图有点多,图1、图2和图3不解释,图四就是麻烦的放,不过幸好,你可以直接从例程中复制。复制完后,再点击旁边的...来微调,删掉原有工程的..\code目录,添加app和util目录,ok退出。
不过这里有个遗漏,我是犯了错误,编译出错才知道,不过你们可以不用犯错了,图4里要把..\..\..\..\*****所有的这个路径删掉一级改为..\..\..\*****,因为建立工程师和例程的工程差了一个目录级别,所以删掉一组..\。一定都要删掉,除了你后添加的自己工程的路径。
图中,linke下,按照复制,可以去例程里复制。
微信图片_20200202133910.png 微信图片_20200202133843.png
这两个图是关于链接文件的。先从例程中复制图1中的三个文件放在建立的工程下。然后再图2种的选择选择工程下复制过来的ble_5_0.txt。
好了以上工程设置完成,开始基本文件吧
添加相关文件
微信图片_20200202135947.png
fr8010h_stack.lib 路径 D:\work\project\FR801xH-SDK\components\ble\library,是整个库文件,运行核心。
patch.c 路径 D:\work\project\FR801xH-SDK\components\modules\patch,官方说是必须的文件
app_boot_vectors.s 和 core_cm3_isr.c 路径 D:\work\project\FR801xH-SDK\components\modules\platform\source,启动文件和内核有关的文件
driver 下所有文件 路径 D:\work\project\FR801xH-SDK\components\driver,驱动文件
以上是工程的基本血肉。下面是需要自己建立的。
在app下建立文件main.c和user_task.c,以及在工程的文件夹下建立文件user_task.h
main.c中先复制历程中proj_main.c所有内容。
然后修改,把button_toggle_detected(gpio_value);注释掉。
__attribute__((section("ram_code"))) void pmu_gpio_isr_ram(void)
  • {
  •     uint32_t gpio_value = ool_read32(PMU_REG_GPIOA_V);
  •    
  •     //button_toggle_detected(gpio_value);
  •     ool_write32(PMU_REG_PORTA_LAST, gpio_value);
  • }
  • 复制代码
    void user_entry_after_ble_init(void)
  • {
  •     printf("APP BLE Peripheral");
  •     // User task initialization, for buttons.
  •     //user_task_init();
  •    
  •     // Application layer initialization, can included bond manager init,
  •     // advertising parameters init, scanning parameter init, GATT service adding, etc.   
  •     //simple_peripheral_init();
  • }
  • 复制代码
    这个函数中所有都注释,只留一个打印。

    另外,在user_task.c和user_task.h种先不用添加内容。只是有这个文件就行,
    好了编译,下载,打开串口,复位查看输出
    微信图片_20200202135754.png
    出现这个,那么恭喜你完成了
    总结:相对移植起来还是挺容易,我本次移植,没有加上ble的功能,这个方面可以自己后填,按照例程的指示,添加任务和相关配置就可以完成基本的蓝牙功能呢。