深圳市航顺芯片技术研发有限公司
直播中

李丹

7年用户 1419经验值
私信 关注
[问答]

怎样去搭建一种stm32工程

怎样去搭建一种STM32工程?有哪些步骤?

回帖(1)

杜永强

2021-10-18 18:03:09
  三、构建工程
  万里长城第一步,先把stm32工程给建立起来,构建工程需要用到比赛提供的STM32固件库和keil
  keil的安装请参照网上的各种教程,多的数不清~
  3.1 建议使用keil4
  这里需要特殊说明一下,比赛时提供的是keil4,而如果你平常训练使用keil5的话主要有两点不同:
  keil4没有代码自动联想补全功能,所以如果你使用keil5进行平常联系,我建议你关掉代码联想功能。
  keil4在设置那个Colink下程序进板与keil5有些许的差别,我下面在构建工程时会讲到如何设置。
  综上所述,我建议在平常联系就跟比赛时一样采用keil4,避免一些不必要的麻烦。
  3.2 构建工程
  首先在先在一个目录下(磁盘上的任何地方)建立一个文件夹
  可以看到我在C盘目录下建立了一个名叫test的文件夹
  之后在test文件夹下建五个文件夹
  CORE: 用来存放内核文件
  FWLIB:用来存放固件库的源文件和头文件
  HARDWARE:用来存放驱动程序代码
  OUTPUT: 用来存放在编译过程中产生的中间文件
  USER: 用来放用户文件和main函数文件,以及把工程项目建立在此处
  接下来便是往这五个文件夹里copy东西了,打开比赛提供的STM32固件库V3.5
  可以看到在文件夹“STM32F10x_StdPeriph_Lib_V3.5.0”的内容有:
  给CORE文件夹里添加文件
  将Libraries-》CMSIS-》CM3-》CoreSupport文件夹下的“core_cm3.c和core_cm3.h“文件放入CORE文件夹内
  将Libraries-》CMSIS-》CM3-》DeviceSupport-》ST-》STM32F10x-》startup-》arm文件夹下的”startup_stm32f10x_md.s“放入文件夹内
  最终CORE文件夹内的文件有:
  给FWLIB文件夹里添加文件
  将Libraries-》STM32F10x_StdPeriph_Driver文件夹下的“inc文件夹和src文件夹”一起放入FWLIB文件夹内
  最终FWLIB文件夹内的文件有:
  给USER文件夹里添加文件
  将Libraries-》CMSIS-》CM3-》CoreSupport-》ST-》STM32F10x文件夹下的“stm32f10x.h、system_stm32f10x.c和system_stm32f10x.h”放入USER文件夹内
  将Project-》STM32F10x_StdPeriph_Template文件夹下的“main.c、stm32f10x_conf.h、stm32f10x_it.c.c和stm32f10x_it.h”放入USER文件夹内
  最终USER文件夹内的文件有:
  打开keil4,新建工程
  点击keil4中Project-》New uVision Project:
  将工程建立在我们的test-》USER文件夹下,命名为test:
  芯片选择为STM32F103RB:
  添加工程文件
  点击这个组建来修改和添加目录和文件:
  将Project Targets修改为”test“,test下增加4个Groups分别为”CORE“、“FWLIB”、“USER”、“HARDWARE”:
  点击Add Files,把CORE文件夹下的core_cm3.c和startup_stm32f10x_md.s添加到CORE:
  把USER文件夹下的 main.c、stm32f10x_it.c和system_stm32f10x.c添加到USER:
  FWLIB里面添加的是需要用到的库函数源文件,可以全部添加也可以只添加要用到的。我在这里把FWLIB-》src文件夹下所有库函数源文件都添加进来(其实没有必要,但也仅仅是编译时慢了些):
  此时,可以看到keil4里左侧的项目目录已经发生了变化
  打开main.c把里面所有文件清空
  写下以下代码:
  int main()
  {
  while(1)
  {
  }
  }
  写过嵌入式代码的童鞋应该对这两行代码并不陌生,main.c 文件最终样式:
  对工程进行相关设置
  点击Target Options…,进入工程设置的组件:
  
  在Output中点击”Select Folder for Objects…“:
  
  选择OUTPUT文件夹:
  
  在C/C++中的Define里填写
  USE_STDPERIPH_DRIVER,STM32F10X_MD
  这一句话可以背过也可以在stm32f10x.h的95行找到:
  
  填写后效果为:
  
  随后点击Include Path的选项增加头文件路径,分别添加CORE、FWLIB-》inc、HARDWARE、USER:
  
  在Debug中点击右边的Use并选择CooCox Debugger:
  
  点击Settings,并在Debug选项里选择Adapter为Colink:
  
  再在Flash Download里点击Add,添加“STM32F10X Med-density Flash”:
  
  最后一步也是keil4和keil5有区别的地方,keil4需要在Utilities中选择CooCox Debugger(这一步keil5不需要):
  
  设置完后,编译程序并下板子
  这下全部都设置完了,点击OK后,点击Build会得到 “0 Error(s), 0 Warning(s)”:
  
  将生成的可执行文件下到板子里点击Download组件(如果下板子失败,把工程关闭重新打开,keil4有bug):
  
  至此一个工程已经全部构建完毕
  3.3 对于构建工程的个人建议
  建议自己构建工程
  你可以选择直接使用比赛时提供的液晶驱动例程,也可以选择自己构建工程。
  我建议自己构建工程,个人认为液晶驱动例程的结构不清晰,自己构建的用着顺手。
  驱动文件编写和存放
  我把所有驱动文件都存在HARDWARE文件夹下。
  每次新建一个文件,保存为.c或者.h文件都存在HARDWARE文件夹里,并在main.c中调用。
  比如写LED的驱动,点击New就新建了一个文件,系统自动命名为”Text1“:
  
  接下来点击Save,将文件命名为”led.c“并保存到HARDWARE:
  
  同样的再创建一个新文件,命名为”led.h“并保存到HARDWARE,双击左侧Project里的HARDWARE将”led.c“添加进工程:
  
  添加完后可以看到左侧Project里的HARDWARE目录下出现了”led.c“:
  
  接下来便是编写”led.c“和”led.h“代码,之后在main.c里include ”led.h“来使用。具体的驱动代码在后面会讲。
  建议经常练习建工程
  我建议每次练习一个题目都重新构建一遍工程,毕竟孰能生巧,在比赛时最好不要在准备工作上出问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分