怎么建立自己的第一个407/303/103工程?
.
建立新工程,不要在VScode下直接新建。
请以example工程为模板,复制一份,在此基础上修改出来自己的工程。
之所以不要从VSCode下直接新建,是因为工程里有很多设置。这些设置从头做一遍,比从example模板上直接改要繁琐的多。
.
建立步骤:
1. 先复制一份example,改文件夹名(比如,改成 myProj);
这个复制的工程,可以仍放在examples下,也可以放在其他路径下(但注意,该路径中不要包含中文)。
.
2. 在VSCode中打开该工程,精简不需要的代码;
用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的源代码),比如,上图中的INT_SetIRQThreshold函数?
Ctrl+鼠标左键 点击main函数中的 INT_SetIRQThreshold 函数,可以跳转到 interrupt.h。
继续查看该.h的路径,可以看到在 D:\AGM_WORK\AgRV_pio\packages\framework-agrv_sdk\src下。----这个路径,就是SDK路径。
.
3. 根据自己使用的芯片类型,修改platformio.ini中的配置;
在platformio.ini里,常见修改的配置项有:
src_dir = . //编译时的c文件路径
include_dir = ./src //编译时的h文件路径
build_src_filter = "-<*> +<./src/**/*.c>" //配合src_dir一起来决定编译c的路径结构
board = agrv2k_407 //根据实际使用芯片,选择是303还是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文件,怎么编译进来?
- 如果新增文件在原有src路径下,则会被自动关联进来编译;(不必改动)
- 如果新增了一个文件夹,则要处理如下;
如果文件夹下要存放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
其中:
src_dir和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表格对应配置即可)
.
关于型号,board项里选103,303还是407?
首先说明的是,丝印里定义的103/303/407型号,都是为了对比ST系列,在AG32中并没有明显区分。
实际上,103=303(103完全等同于303)。
如果使用的芯片flash大小是256K,就选 303(或103);
如果使用的芯片flash大小是1M,就选407.
型号跟引脚数没有关系,引脚数是由logic_device项配置的。
.