目录
- AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告
- AIR32F103(二) Linux环境和LibOpenCM3项目模板
- AIR32F103(三) Linux环境基于标准外设库的项目模板
关于 Air32F103-Template项目地址: https://gitee.com/iosetting/air32f103-template
这是为 GCC Arm 工具链准备的 AIR32F103x 项目开发模板
项目结构
├── Build# 编译结果├── Examples# 示例代码│ ├── FreeRTOS# FreeRTOS示例代码│ └── NonFreeRTOS# 非FreeRTOS示例代码├── Libraries│ ├── AIR32F10xLib# AIR32F103外设层库代码│ │ ├── inc# .h头文件│ │ ├── lib│ │ │ └── cryptlib│ │ └── src# .c源文件│ ├── CORE# Coretex M 核心外设层源文件│ ├── Debug# delay和printf支持│ ├── DeviceSupport# AIR32F103的gcc arm startup文件│ │ └── startup│ │ └── arm-gcc│ ├── FreeRTOS# FreeRTOS 库代码│ └── LDScripts# 连接脚本├── Makefile├── Misc│ └── flash.jlink# JLink烧录脚本├── README.cn.md├── README.md├── rules.mk# make规则└── User# 用户项目代码
快速开始1. 导出项目【三 AIR32F103 Linux环境基于标准外设库的项目模板】git clone https://github.com/IOsetting/hk32f030m-template.git
2. 根据本地环境修改 Makefile修改 Makefile 设置, 确保 ARM_TOOCHAIN 和 JLINKEXE(或ST_Flash) 指向正确的路径##### Project ###### 项目名称PROJECT?= app# 编译结果目录BUILD_DIR= Build##### Options ###### 是否使用 FreeRTOS, y:yes, n:noUSE_FREERTOS ?= n# 烧录工具, jlink 或 stlinkFLASH_PROGRM?= stlink##### Toolchains ######## 根据本地环境, 设置工具链路径ARM_TOOCHAIN?= /opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin# st-flash 可执行文件路径ST_FLASH?= st-flash# JLinkExe 可执行文件路径和设备类型JLINKEXE?= /opt/SEGGER/JLink/JLinkExeJLINK_DEVICE ?= STM32F103CB##### Paths ############# 当前芯片的连接脚本LDSCRIPT= Libraries/LDScripts/air32f103cbt6.ld
3. 编译默认项目并烧录# 清理make clean# 编译make# 带详细输出的编译V=1 make# 烧录make flash
默认的项目会点亮板载的三个LED示例代码示例代码位于 Examples 目录下, 项目中的示例代码几乎都是迁移自合宙的Keil项目中的示例代码, 已经在GCC Arm下运行验证过.
如果需要运行示例代码, 先将 User 目录下的文件清空, 将示例代码复制到 User 目录下, make clean清空, 然后重新编译和烧录.
VSCode 配置文件c_cpp_properties.json 供参考
{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**"],"defines": ["HK32F030MF4P6"],"compilerPath": "/opt/gcc-arm/gcc-arm-11.2-2022.02-x86_64-arm-none-eabi/bin/arm-none-eabi-gcc","cStandard": "gnu99","cppStandard": "gnu++14","intelliSenseMode": "gcc-arm","configurationProvider": "ms-vscode.makefile-tools"}],"version": 4}
tasks.json{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "clean, build","type": "shell","command": "make clean;make","problemMatcher": []},{"label": "build, download","type": "shell","command": "make;make flash","problemMatcher": []},{"label": "build","type": "shell","command": "make","problemMatcher": []},{"label": "clean","type": "shell","command": "make clean","problemMatcher": []},]}
常见问题说明切换GCC编译器版本, 11.2, 11.3 和 12.2项目模板测试过的最新的GCC Arm编译器版本为12.2, 对比 11.2 和 11.3, 12.2 编译会带来一些性能提升, 但是检查也更严格, 按11.2和11.3的配置会产生不少warning. 在GCC Arm 12.2编译提示 LOAD segment with RWX permissions 警告 和 GCC Arm 11.3rel1, 12.2编译提示 _close is not implemented and will always fail 中有说明
经验总结扩展阅读
- 亚麻酸是什么
- 婆婆三周年纪念的说说 怀念婆婆的感人句子
- 婆婆三周年祭日说说 对逝去的人缅怀的句子
- 婆婆去世三年了写一句话怀念一下
- 婆婆三周年祭日短语 儿媳妇悼念婆婆的词
- 对去世婆婆的思念话语什么写 婆婆三周年祭日说说
- 未来三年最赚钱的行业有哪些
- 两个人去张家界旅游三天大概需要多少钱
- 二 Linux进程间通信
- 【pytest官方文档】解读-开发可pip安装的第三方插件