怎么建立自己的第一个407/103工程?

.

建立新工程,不要在VScode下直接新建。

请以example工程为模板,复制一份,在此基础上修改出来自己的工程。

之所以不要从VSCode下直接新建,是因为工程里有很多设置。这些设置从头做一遍,比从example模板上直接改要繁琐的多。

步骤:

1. 先复制一份example,改文件夹名(比如,改成 myProj);

这个路径可以在examples下,也可以在其他任意路径。(注意,路径中不要包含中文)

2. 在VSCode中打开该工程,精简不需要的代码

打开工程后,

可以先把src路径下的全部驱动样例c文件删除掉;

然后example.c改名为main.c,example.h改名为main.h;

然后把main.c里边优化到最简程度(只保留board_init函数)。

工程里的三个asf文件,可以保留一个。.pre和.post一般情况下用不到,也可以删除。

(注:.asf文件是设定cpld中的配置。设置gpio拉高拉低,输出能力,就是在这个.asf里设置的)

把asf和ve文件也改名为自己工程对应的名字。

全部修改后如下图:

包括board_init函数,也可以拿出来自己改掉。

顺便把.asf里边两行set_config注销掉。

到这里,这个工程中的代码基本为空了。

后续开发中,添加需要的功能即可。

那么,使用到的库函数,也就是SDK的源代码怎么进?

Ctrl+鼠标左键 点击main函数中的 INT_SetIRQThreshold 函数,可以跳转到 interrupt.h,查看路径,在安装路径D:\AGM_WORK\AgRV_pio\packages\framework-agrv_sdk\src 下边。

3. 根据自己使用的芯片类型,修改platformio.ini中的配置

在platformio.ini里,主要修改的有:

src_dir = . //编译时的c文件路径

include_dir = ./src //编译时的h文件路径

build_src_filter = "-<*> +<./src/**/*.c>" //配合src_dir一起来决定编译c的路径结构

board = agrv2k_407 //根据实际使用芯片,选择是103还是407

logic_ve = myProj_board.ve //指定工程中使用的ve文件,就是上边修改文件名的ve

logic_device = AGRV2KL100 //根据实际使用芯片,选择脚数

design.asf = ./myProj_board.asf //指定工程中使用的.asf文件,就是上边修改文件名的asf

protocol = cmsis-dap-openocd //使用哪种仿真器。如果是使用jlink,需要修改为 jlink-openocd

logger_if = UART0 //使用哪个串口输出log

4. 根据自己使用到的引脚,配置VE文件

这个文件里,可以先把配置的引脚全部删掉,只保留时钟的配置:

SYSCLK 100

HSECLK 8

其他引脚配置,随后用到哪个打开哪个。

5. 建立工程的编译路径

在开发中,新增了c文件和h文件,怎么编译进来?

  1. 如果新增文件在原有src路径下,则会被自动关联进来编译;
  2. 如果新增了一个文件夹,则要处理如下;

如果文件夹下要存放c文件:在build_src_filter中增加该文件夹

如果文件夹下要存放h文件:在build_flags中增加该文件夹

举例:

在example项目里,只有一个src文件夹(里边存放全部.c和.h)。编译设置为:

src_dir = .

include_dir = ./src

build_src_filter = "-<*> +<./src/**/*.c>"

其中:

src_dir定义“.c文件编译时,查找路径的基路径”

include_dir定义“.h文件编译时,查找路径的基路径”

build_src_filter 定义 “.c文件从哪些路径下搜索”,星号代表通配,双星代表子目录通配,+表示增加一个搜索路径,-表示去除一个搜索路径

如果要新增一个文件夹print(跟src同级),里边也有.c和.h,可以设置如下:

src_dir = .

include_dir = .

build_src_filter = "-<*> +<./src/**/*.c> +<./print/**/*.c>"

build_flags = -Isrc -Iprint

其中:

include_dir路径也退回到根路径下;

build_src_filter 加入print文件夹的选项;

build_flags 是新增的“设置头文件查找路径”的选项。每个头文件路径用 -I 来加入, 多个-I之间加空格。

注意:在build_src_filter和build_flags中,都是使用相对路径。他们是从src_dir/include_dir定义的基路径上再开始的。

如果工程含有c++的文件,只需在build_src_filter的选项中增加cpp选项,如:

build_src_filter = "-<*> +<./src/**/*.c> +<./src/**/*.cpp>"

.

到这里,建立一个完整的空工程结束。

后续,根据自己的需求,再一点点添加自己需要的功能即可。

.

这个工程中,如果使用的是103的32脚芯片,则platformio.ini里注意两项配置为:

board = agrv2k_103 //根据实际使用芯片,选择是103还是407

logic_device = AGRV2KQ32 //根据实际使用芯片,选择脚数。

其他的都不用变。

也就是说,从103改到407,就改这两行的设置就可以了。(至于VE里引脚的使用,按excel表格对应配置即可)

另外,丝印里定义的103/303/407型号,都是对比ST的系列的。实际上,103=303,适用于256K flash。407,适用于1M flash。跟引脚没有关系,引脚是由logic_device项配置的。

.