差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
stm32:theverystarter [2024/12/17 15:33] laythystm32:theverystarter [2024/12/19 11:44] (当前版本) laythy
行 3: 行 3:
   在这里我用标准库函数法,因为ST公司封装的标准库很好用。寄存器法顾名思义,直接操作寄存器,就像开发51单片机那样,费时费力,较难。   在这里我用标准库函数法,因为ST公司封装的标准库很好用。寄存器法顾名思义,直接操作寄存器,就像开发51单片机那样,费时费力,较难。
  
-软件安装和配置(下载pack: +软件安装和安装芯片pack: 
-  安装:keil 5 MDK,arm单片机开发用。+  1. 软件安装:keil 5 MDK,arm单片机开发用。
   keil5 MDK和keil5 C51版本可以共存,如果前面学C51安装了keil5 C51,直接安装到同一个文件夹即可。   keil5 MDK和keil5 C51版本可以共存,如果前面学C51安装了keil5 C51,直接安装到同一个文件夹即可。
-  配置:安装stm32f103c8t6芯片的pack。打开keil5,点工具栏中的pack instller(最后一个)->搜索stm32f1,右半侧选择“Keil::STM32F1xx_DFP”,点旁边的install。 +  2. 安装stm32f103c8t6芯片的pack。打开keil5,点工具栏中的pack instller(最后一个) 
-  注意,服务器在国外,国内下载可能要十多分钟甚至下载失败。下载失败会显示一个链接(以.pack结尾),其实就是这个。直接复制到浏览器打开下载,然后双击打开安装即可。+  搜索stm32f1,右半侧选择“Keil::STM32F1xx_DFP”,点旁边的install。 
 +  注意,服务器在国外,国内下载可能要十多分钟甚至下载失败。 
 +  下载失败会显示一个链接(以.pack结尾),其实就是这个。直接复制到浏览器打开下载,然后双击打开安装即可。
  
 新建project的前置操作——\\ 新建project的前置操作——\\
行 16: 行 18:
   4. 再找到.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x文件夹,把里面.h和.c文件(共3个文件)复制到一个刚才的那个文件夹中(待用)。   4. 再找到.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x文件夹,把里面.h和.c文件(共3个文件)复制到一个刚才的那个文件夹中(待用)。
   5. 接下来,为了后续所有新建project的便捷,刚才的文件夹命名为Start。   5. 接下来,为了后续所有新建project的便捷,刚才的文件夹命名为Start。
-  在以后所有新建project后,把Start文件夹复制到project目录下。并且在keil软件,点击魔术棒(options for target),C/C++选项-> include paths添加/Start目录。+  在以后所有新建项目后,把Start文件夹复制到项目根目录下。并且在keil软件,点击魔术棒,C/C++选项-> include paths添加/Start目录。
  
 新建project: 新建project:
   1. 新建project同C51,弹出manage run-time environment(新建工程小助手)关闭即可。   1. 新建project同C51,弹出manage run-time environment(新建工程小助手)关闭即可。
-  2. 然后在keil5 mdk软件右侧“设计树”——Target1下新建Start添加: +  2. 然后在keil5 mdk软件右侧“设计树”——Target1下新建Start。 
-  startup_stm32f10x md.s+  添加上面步骤的Start目录的下列文件: 
 +  startup_stm32f10x_md.s
   core_cm3.c   core_cm3.c
   core_cm3.h   core_cm3.h
行 27: 行 30:
   system_stm32f10x.c   system_stm32f10x.c
   system stm32f10x.h”   system stm32f10x.h”
 +  其中startup_stm32f10x_md.s适用于flash用量64K-128K、型号STM32F101/102/103的单片机。具体见下表:
   3. 在项目根目录新建文件夹/User添加你的main.c函数。   3. 在项目根目录新建文件夹/User添加你的main.c函数。
 +{{:stm32:bootfilechoice.png?600|}}
 写点灯代码 —— 第一次编译就遇到的问题:  写点灯代码 —— 第一次编译就遇到的问题: 
   B站江科大stm32课--【2-2】新建工程-报错4个error解决方法:下载v5版本的arm编译器(我用的ARMCompiler_506_Windows_x86_b960可以)。   B站江科大stm32课--【2-2】新建工程-报错4个error解决方法:下载v5版本的arm编译器(我用的ARMCompiler_506_Windows_x86_b960可以)。
行 48: 行 53:
   3. 在main.c函数的 #include "stm32f10x.h" 处右键打开该文件,划到8341行(你的可能不一样,你可能下载的不是同一版本的),   3. 在main.c函数的 #include "stm32f10x.h" 处右键打开该文件,划到8341行(你的可能不一样,你可能下载的不是同一版本的),
   看到 #ifndef USE_STDPERIPH_DRIVER那块。意思是你要定义了USE_STDPERIPH_DRIVER这个字符串,下面的#include "stm32f10x_conf.h" 才生效。   看到 #ifndef USE_STDPERIPH_DRIVER那块。意思是你要定义了USE_STDPERIPH_DRIVER这个字符串,下面的#include "stm32f10x_conf.h" 才生效。
-  复制 USE_STDPERIPH_DRIVER 字符串,打开keil,点击魔术棒(options for target...),C/C++选项,在Preprocessor Symbols-Define栏目粘贴USE_STDPERIPH_DRIVER。 +  复制 USE_STDPERIPH_DRIVER ,打开keil,点击魔术棒,C/C++选项,在Preprocessor Symbols-Define栏目粘贴USE_STDPERIPH_DRIVER。 
-  并在魔术棒(options for target...),C/C++选项-> include paths添加/User目录,保存。+  并在魔术棒(options for target),C/C++选项-> include paths添加/User目录,保存。
 检查文件个数、检查include path、检查USE_STDPERIPH_DRIVER,并编译(首次稍微有点慢): 检查文件个数、检查include path、检查USE_STDPERIPH_DRIVER,并编译(首次稍微有点慢):
   Library文件夹一共46个文件(23个.c,23个.h)   Library文件夹一共46个文件(23个.c,23个.h)
行 60: 行 65:
   魔术棒(options for target...),Debug选项,右侧栏目第一个use: 把选ulink改成st-link debuger那个选项。   魔术棒(options for target...),Debug选项,右侧栏目第一个use: 把选ulink改成st-link debuger那个选项。
   再在右侧settings->flash download选项卡,勾上reset and run,这样以后在烧录程序后会自动复位运行。   再在右侧settings->flash download选项卡,勾上reset and run,这样以后在烧录程序后会自动复位运行。
 +  (不勾选下载程序后要点板子上的复位按钮才能运行)。
 +
 +忽略用stlink下载时提示的升级固件(山寨的stlink往往会提示这个),解决方法 https://blog.csdn.net/laoxue123456/article/details/125138310