怎么建立自己的第一个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文件也改名为自己工程对应的名字。
全部修改后如下图:
![](http://www.agm-support.com.cn/wp-content/uploads/2024/08/image-44-1024x450.png)
包括board_init函数,也可以拿出来自己改掉。
顺便把.asf里边两行set_config注销掉。
![](http://www.agm-support.com.cn/wp-content/uploads/2024/08/image-45.png)
到这里,这个工程中的代码基本为空了。
后续开发中,添加需要的功能即可。
那么,使用到的库函数,也就是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文件,怎么编译进来?
- 如果新增文件在原有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
其中:
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项配置的。
.