# stm32103zet6 **Repository Path**: yaoguai_x/stm32103zet6 ## Basic Information - **Project Name**: stm32103zet6 - **Description**: 基于freertos建立的c框架。有助于mcu快速开发。支持硬件 smt32f103ze stm32f401rc - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2020-12-01 - **Last Updated**: 2022-08-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # stm32103zet6 #### 介绍 此仓库是基于freertos建立的c框架。有助于mcu快速开发。支持硬件 smt32f103ze stm32f401rc # 开发手册 ### 1.安装开发环境STM32CUBEIDE [stm32cubeide下载地址](https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-ides/stm32cubeide.html) 下载完后必须到纯英文路径下进行安装,打开 st-stm32cubeide_xxxxx.exe 后直接点下一步下一步傻瓜式安装。 ### 2.创建工作空间workspace,拉取代码 找一个英文路径创建工作空间文件夹(工作空间最好位于windows,有利于减少编译时间),在该路径下拉取代码: [git代码下载地址](ssh://git@gitlab.geekdev.net:10022/xuhao/ARL021-MCU.git) ```shell #克隆代码 git clone ssh://git@gitlab.geekdev.net:10022/xuhao/ARL021-MCU.git ``` ### 3.打开工程并编译 stm32cubeide基于eclipse开发,开发方法类似于eclipse。eclipse使用方法这里不再描述。 打开stm32cubeide,选择刚才创建的工作空间目录。 依次点击工具栏file-->Open Projects Form File System,或则直接选择Import SW4STM32 Or TrueStudio Project ![打开或导入工程](https://img-blog.csdnimg.cn/20200511110907903.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) 然后进入下面的界面,点击Directory,选择工程路径,点击确认。 ![浏览工程](https://img-blog.csdnimg.cn/20200511104341614.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) IDE会自动识别出工程,然后点击Finish,工程就会被自动导入。 ![导入工程](https://img-blog.csdnimg.cn/20200511104638587.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) 导入效果如图,在Project Explorer(工程文件浏览器)下多了我们刚才导入的工程: ![打开工程之后的界面](https://img-blog.csdnimg.cn/20200511105022522.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) 在Project Explorer中,点击工程名可以展开工程。右键工程名并选择Build Project即可编译工程。(或则直接点击锤子图标也可以编译) ![编译工程](https://img-blog.csdnimg.cn/2020051111184837.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) 编译结果如下图,Console窗口显示gcc编译的过程和结果。Build Analyzer串口显示生成的bin文件的存储使用情况。 ![编译结果](https://img-blog.csdnimg.cn/20200511112211305.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) ### 4.下载和调试 STM32CubeIDE支持使用JLink和ST-Link进行下载和调试,下面介绍如何下载和调试: 第一次下载/调试的时候需要新建一个运行配置,如图依次点击工具栏Run-->Run Configurations ![新建运行配置](https://img-blog.csdnimg.cn/20200615141122776.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) 然后弹出如图界面,依次点击STM32 Cortex-M C/C++ Application -->New Configuration ![新建运行配置步骤](https://img-blog.csdnimg.cn/20200615141444145.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) 接下来界面如下图所示,新建了一个运行配置,这个运行配置的Name默认为当前选中工程名+当前工程配置名。所谓工程配置,就是一套代码,应用不同的配置,然后编译出不同的目标文件。比如针对Debug版本和Release版本设置不同的配置,选择不同的编译优化级别,最终生成的bin文件也不同。 ![新建运行配置Main](https://img-blog.csdnimg.cn/20200615155123690.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) + 第一步:添加可执行文件路径 + 第二步:选择构建模式,一般都根据当前工程配置名选择,比如选择Debug 可选项: Use Active:选择当前使能的工程配置 Select Automatically:自动选择使用哪一个工程配置 Debug:(如果用户自己添加了Debug的工程配置,则该项可选)选择Debug工程配置作为构建模式 Release:(如果用户自己添加了Release的工程配置,则该项可选)选择Release工程配置作为构建模式 + 第三步:是否使能自动构建。如果选择自动,则每次下载/调试之前都会自动构建(编译)一次,比较费时间。建议选择不自动构建,下载/编译之前先构建一次,之后便可以多次下载和调试。 这三步设置的结果如下图所示: ![前三步设置结果](https://img-blog.csdnimg.cn/20200615161254216.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) + 第四步:调试器设置,分为Jlink和ST-Link。选择调试器选项卡,然后按下图操作 + Jlink 如下图所示: ![新建运行配置Jlink](https://img-blog.csdnimg.cn/20200615155748427.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) + ST-Link如图所示 : ![新建运行配置ST-Link](https://img-blog.csdnimg.cn/20200615155815175.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) + 第五步:点击Apply按钮,应用修改。然后点击Close按钮退出。 ![应用运行设置](https://img-blog.csdnimg.cn/20200615161438915.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) 最后,点击下图所示两个按钮,分别可以进入调试模式或下载程序到目标板。如果已经配置了运行配置,则直接点击调试和运行按钮即可。 ![调试或下载](https://img-blog.csdnimg.cn/20200615161903800.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) ### 5.发布工厂bin文件和升级bin文件 工厂bin文件打包了bootloader和app头部信息,app。升级bin文件则打包了app头部信息和app。 [bootloader源码下载地址](ssh://git@gitlab.geekdev.net:10022/xuhao/ARL021-BOOT.git) + (1) 编译ARL021-BOOT。注:bootloader的源码必须和mcu源码同在一个工作空间,工程导入方法与ARL021-MCU相同。 + (2) 编译ARL021-MCU 的 Release版本。 + (3) 进入script目录,修改版本文件version,修改为你想发布的版本。 + (4) 双击运行generate-release.bat脚本,该脚本会自动打包生成工厂bin文件和升级bin文件,并且拷贝反汇编文件。 如图所示 ### 6.代码组织结构说明 ```shell +---Debug #Debug版本的构建目录 存放编译的中间文件和可执行文件 +---framework #框架主目录 | +---config #存放框架配置和freertos配置 | +---freertos #freertos源码 | +---library #一些常用的库 如mini-printf ringbuffer | +---link #基于gcc编译器的链接文件 | \---module #freertos框架的组件,如驱动框架 轻量级任务框架 +---Release #Release版本的构建目录 存放编译的中间文件和可执行文件 +---script #一些脚本,用于生成工厂bin \---wthink #用户代码主目录 +---app #应用程序 +---arch #架构相关的库,从芯片厂商获得 | \---stm32f401rc #mcu型号 | +---hal_library #hal库源码 | +---inc #移植配置 头文件 | +---src #移植配置 源文件 | \---startup #stm32f401rc启动文件 +---driver #驱动目录 | +---peripherals_driver #独立外设驱动 和平台无关,如w25q驱动 | +---platform_driver #与平台有关的外设驱动,如uart,spi | \---soft_driver #软件类的驱动 如backtrace,shell +---midlayer #中间层 保存一些中间变量,参数管理 +---partition #flash 分区表 +---protocol #协议相关的库和实现 \---shell #shell命令实现 ``` ### 7.增加新的文件和目录 给工程添加新的文件或目录,只需要在你想添加的位置右键,然后选择New,文件夹选择Folder,源文件则选择Header File 或 Source File。 ![添加目录](https://img-blog.csdnimg.cn/2020061516380636.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) + (1) 增加新的文件 :如下图所示新增一个名为test.h的头文件。(c文件同理) ![添加文件](https://img-blog.csdnimg.cn/20200615165538276.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) + (2) 增加新的目录:如下图所示新增一个名为test的目录。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200615165646839.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) ### 8.添加/删除头文件目录 当我们的源码分成很多个文件夹以后,编译器是不能自动找到头文件的目录的,需要我们手动指定。方法是选中当前工程名、右键、点击Properites选项,即可进入下图所示界面: ![添加/删除头文件目录](https://img-blog.csdnimg.cn/20200615172822430.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) + (1) 然后依次点击C/C++ General-->Path and Symbols-->Includes-->GUNC-->Add。 + (2) 在第6处直接填写你要引用的头文件目录,或则点击File system按钮用鼠标选择目录。此处以/${ProjName}/wthink/app/test目录为例。然后勾选Is a workspace path,点击OK按钮。 + (3) 可以继续点击Add按钮添加更多目录,也可以依次点击Apply-->Cancel保存退出。 ### 9.取消对某些文件夹和源文件的编译 工程中源文件太多了 ,有一些文件/目录我们暂时不需要了,除了直接将其删除,还可以利用IDE的过滤功能自动跳过,不进行编译。操作方法和增加头文件目录类似,选中当前工程名、右键、点击Properites选项,即可进入下图所示界面: ![取消对某些文件夹和源文件的编译](https://img-blog.csdnimg.cn/20200615172701820.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxODEwMTQ3,size_16,color_FFFFFF,t_70) + (1) 然后依次点击C/C++ General-->Path and Symbols-->Source Location-->/ARL021_MCU/wthink-->EditFiter-->Add。 + (2) 在第7处填写你想过滤的文件/目录,或则直接点击Browser按钮,然后用鼠标选择。此处以/wthink/shell/shell_test目录为例,最后点击OK按钮。 + (3) 可以继续点击Add按钮添加更多目录,也可以依次点击Apply-->Cancel保存退出。