![基于ARM的小功率电动汽车控制器开发](https://wfqqreader-1252317822.image.myqcloud.com/cover/479/32856479/b_32856479.jpg)
2.3 编辑工程文件
新建立完成空白工程文件“STM32-DEMO”后,Keil μVision的运行界面如图2-12所示。在左侧显示的工程信息中,缺省的设备名称为“Target 1”,并包含一个名称为“Source Group 1”的子文件夹。单击软件“File”菜单的“Save All”子项,保存工程所有信息。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0020_0001.jpg?sign=1739289755-Y1zH91yEqnaGnnSl0BsyOlvlWSOsWmR3-0-813e014db6b215f68a5931a8995bc44c)
图2-12 在Keil μVision中建立的空白工程
利用 Windows操作系统自带的资源管理器或者类似的软件工具查看生成的文件,如图2-13所示。其中“STM32-DEMO.uvproj”为工程文件,其余文件可不予关注。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0020_0002.jpg?sign=1739289755-fOqQMTgMcL2Mr36Gd6CI8kTdubXNbU0w-0-5f5fe5b125a962635816140275477622)
图2-13 空白工程及对应的资源文件
在工程“STM32-DEMO”所在的目录下新建3个文件夹,名称分别为“USER”、“LIB”和“OUTPUT”。3个文件夹分别用来保存用户提供的文件、芯片库文件、以及Keil μVision生成的文件,如图2-14所示。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0021_0001.jpg?sign=1739289755-HS8tNNnBMM3T9kwMHYcxbeKuGKel8XAx-0-710a043a11b64d206cdca32fdd47218e)
图2-14 在工程目录中增加3个文件夹及相关文件
在“USER”文件夹中新建一个 C语言文件 main.c,并编写代码(表2-1),该代码调用库函数初始化芯片后,进入一个无穷循环。
表2-1 包含芯片初始化的最小程序
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0021_0002.jpg?sign=1739289755-v1YepuV4XxB2FjMzI5SyBbB62ygvVsqt-0-bed620400b3fbbe6936a4804fd6546d5)
在LIB文件中加入如表2-2所示的芯片库文件,共有53个。文件可以从芯片制造商的官方网站www.st.com中下载。
表2-2 芯片库文件
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0022_0001.jpg?sign=1739289755-xpgJU9nWCCcqjuxaw2GnPPc6ktd9LBdS-0-43c50693a88afe90102a2a7e40e39cf9)
续表
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0023_0001.jpg?sign=1739289755-wibBhYAbYTJMFCs6mW1HHHOqgs9lAAVP-0-4279c3e62b3a777ff2f5d56208931631)
续表
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0024_0001.jpg?sign=1739289755-X0DgDPuP6jGArlaOhcGRudZcDeOtnOlY-0-c03c98b87df7bf2c92180bd91a457528)
文件夹“OUTPUT”用于存储软件Keil μVision生成的文件。
在Keil μVision中,右击左侧设备“Target 1”,在弹出的菜单中选择“Manage Components...”,如图2-15所示,将弹出组件管理对话框。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0024_0002.jpg?sign=1739289755-vSKK9wh1WB2P5mScB7duezhMQhhIs1Hs-0-29e7b99b51f9e7d7c9ba1b68f3d58453)
图2-15 管理工程文件组件
在组件管理对话框的第1列中,修改工程目标为“STM32-DEMO”,并单击“Set as Current Target”。在第2列中新建3个条目,名称分别为“USER”,“LIB”和“OUTPUT”。之后在第2列中单击条目“USER”,然后单击第3列下方的“Add Files”按钮,选择工程文件目录下“USER”文件夹中的全部文件并添加。
按照同样的方式,第2列中单击条目“LIB”,然后单击第3列下方的“Add Files”按钮,选择工程文件目录下“USER”文件夹中的全部文件并添加。配置完成后的界面如图2-16所示,单击“OK”按钮后关闭对话框。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0025_0001.jpg?sign=1739289755-tpYyloRgSaRMIJrwhJePrsIsw3EZbW4M-0-65ec882f4061417b297c31d6e53542a0)
图2-16 组件管理对话框
为了使用程序可以正确找到库文件,在Keil μVision左侧的项目栏中右键单击“STM32-DEMO”,之后在弹出的菜单中选择“Options for Target‘STM32-DEMO'...”,如图2-17所示,弹出的对话框如图2-18所示。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0026_0001.jpg?sign=1739289755-YG2OdddaCG7tbr4a9bINWRatPkAn8f6A-0-855a631c62289558fdf3fd43fe1e5cee)
图2-17 启动修改目标选项的对话框
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0026_0002.jpg?sign=1739289755-pMsFvyYi8spjYFS6Zx9UjJtvg1IUh9Gr-0-d9ccff814215225628cb805b56ed2364)
图2-18 设置Target标签页的参数
在图2-18中,选中“Use MicroLIB”复选框,然后切换到“Output”标签页,如图2-19所示。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0027_0001.jpg?sign=1739289755-yEPKPyud9tb9Ea0jNbKq858oACgtLunV-0-3c59f426f0b43f281cf510d69f44bce2)
图2-19 设置Output标签页的参数
在图2-19中,单击“Select Folder for Objects...”,选择工程文件夹中的“OUTPUT”目录。选中“Create HEX File”复选框,切换到“C/C ++ ”标签页,如图2-20所示。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0027_0002.jpg?sign=1739289755-fNuihCH78gk1PsGQHhHbNxwNzxmfOpIZ-0-c74e02a258fcb7fbc0a107513a3f4b57)
图2-20 设置C/C + + 标签页的参数
在图2-20中,添加预定义的项“USE_STDPERIPH_DRIVER”。并且在“Include Paths”文本框中,添加工程目录中的“LIB”文件夹,完成后即可以在“Compiler control string”文本框中看到“.\LIB”字符串。
单击不同的标签页,切换到“Debug”标签页,如图2-21所示。选择使用J-LINK仿真器“Cortex-M/R J-LINK/J-Trace”。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0028_0001.jpg?sign=1739289755-glID5ikZb5VYP1OLHP6hY4UvcUmAgFRk-0-0b96de5a82c4c570a80cc4947fb4c7c9)
图2-21 设置Debug标签页的参数
在图2-21中单击设置仿真器参数的按钮“Settings”,将弹出设置仿真器参数的对话框,如图2-22所示。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0029_0001.jpg?sign=1739289755-IQCD5Fvfwdpz9hEEImqFa9zRW40mBIAE-0-573fadaf0caece8887691d6ffa2f79aa)
图2-22 设置仿真器的参数
在设置仿真器参数的对话框中,选中“Reset and Run”,则程序烧写入芯片后会自动运行。单击“Add”按钮,添加适合于芯片的烧写算法,选择适用于STM32F103VBT7的烧写算法,如图2-23所示。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0029_0002.jpg?sign=1739289755-ET6jqHsAGpADhpveY4oX4wSRP2QSjwCF-0-c507e6909e4904b9753d9908d01011a3)
图2-23 选择仿真器使用的烧写算法的对话框
由于项目中使用的芯片是 STM32F103VBT7,芯片内的FLASH存储容量为128 k,所以选择“STM32F10x Med-density Flash”。
在设置完成“Debug”标签页之后,切换到“Utilities”标签页,选择使用J-LINK仿真器“Cortex-M/R J-LINK/J-Trace”,如图2-24所示。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0030_0001.jpg?sign=1739289755-HlTwpI3rSWRB9j8gjpiXjCmn9Uf8MdTB-0-f1aeb62bc34fd8a8d47a78d1f7e86eed)
图2-24 设置Utilities标签页的参数
设置完成参数后,在软件用户界面左侧的项目栏中双击“main.c”文件,程序界面如图2-25所示,可以对 main.c文件进行编辑和修改。单击工具栏中的“Rebuild”按钮,可以对工程中所有代码进行编译,结果将显示在软件界面的下方。当代码正确且编译、链接完成后,将产生可供烧写的文件。
![](https://epubservercos.yuewen.com/C012CF/17640080406767806/epubprivate/OEBPS/Images/figure_0030_0002.jpg?sign=1739289755-pYkd0cglLR2lF7ii5UYftDCGKbNgT4la-0-c49a3ddf93c58f2b9e3110abb8eff554)
图2-25 编辑文件代码并编译程序