
![]() 特点: 参考正点原子教学视频,固件库模板步骤用红色字体表示,寄存器模板步骤用绿色字体表示,黑色字体是共同步骤。 1)新建一个空文件夹(名字自定)用来存放今后开发某项目的所有开发程序,在该文件夹中,新建一个USER空文件夹(推荐用USER名); 2)MDK软件中,单击Project→New μVision Project新建一个工程,输入工程文件名,选择好芯片后点击OK; ![]() ![]() 3)在USER文件夹中,Listings和Objects两个文件夹用来存放编译过程产生的中间文件(为了跟MDK5.1之前版本兼容), 新建CORE(核心文件和启动文件),OBJ(编译过程文件和hex文件),STM32F10x_FWLib(库函数源码文件)三个空文件夹(与USER文件夹并列)/新建CORE(核心文件和启动文件)和OBJ(编译过程文件和hex文件)两个空文件夹(与USER文件夹并列); ![]() ![]() 4)将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver里的src(存放固件库的.c文件),inc(存放对应的.h文件)两个文件夹复制到STM32F10x_FWLib文件夹里;将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport里的core_cm3.c和core_cm3.h复制到CORE文件夹里;将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm里的startup_stm32f10x_hd.s[1]文件复制到CORE文件夹里,此时CORE文件夹里有三个文件; 将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm里的startup_stm32f10x_hd.s文件复制到CORE文件夹里,此时CORE文件夹里只有一个文件; ![]() 5)将STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x里的stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h复制到USER文件夹里;将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template里的main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h复制到USER文件夹里,此时USER文件夹里多了七个文件; ![]() 6)在MDK软件中,右键Target1,单击Manage Project Items…,在Project Items界面、Groups一栏,删除Source Group 1,新建USER,CORE,FWLIB,单击OK(这里也可以重命名Target1)/在MDK软件中,右键Target1,单击Manage Project Items…,在Project Items界面、Groups一栏,删除Source Group 1,新建USER,CORE单击OK(这里也可以重命名Target1); ![]() 7)在MDK软件中,回到之前的Manage Project Items界面,在Project Items界面,选中FWLIB,单击Add Files,选择STM32F10x_FWLib\src,选中里面所有的.c文件,单击Add(其实只需添加需要用的.c文件); 选中CORE,单击Add Files,将CORE文件夹里的core_cm3.c和startup_stm32f10x_hd.s添加进来/选中CORE,单击Add Files,将CORE文件夹里的startup_stm32f10x_hd.s[3]添加进来; 选中USER,单击Add Files,将USER文件夹里的main.c,stm32f10x_it.c和system_stm32f10x.c添加进来/在MDK软件中,新建一个test.c文件(即主函数main.c文件[2],名字可自定),保存在USER文件夹里,然后在Manage Project Items界面,Project Items选项,选中USER,将刚才新建的.c文件添加进来); 8)在MDK软件中,单击魔术棒,在Output选项里,勾选Create HEX File,单击Select Folder for Objects,选择OBJ文件夹(放弃将编译过程文件存放在Listings和Objects中); ![]() ![]() 9)在C/C++选项里,单击Include Paths右边的…,添加三个头文件目录,在Define里输入STM32F10X_HD,USE_STDPERIPH_DRIVER/在C/C++选项里,在Define一栏里输入STM32F10X_HD; ![]() ![]() 10) 此时,工程模板已建立完成。接下来,添加ALIENTEK提供的公用代码。将SYSTEM文件夹复制到工程文件中(与USER文件夹并列),在MDK软件中,右键Target1,单击Manage Project Items…,在Project Items界面、Groups一栏,新建SYSTEM,选中SYSTEM,单击Add Files,将SYSTEM文件夹里的sys.c,delay.c和usart.c添加进来,然后单击OK; 11)单击魔术棒,在C/C++选项里,单击Include Paths右边的…,添加SYSTEM文件夹里的三个头文件,新建工程模板最终完成。 备注: [1] startup_stm32f10x_hd.s是一段和硬件相关的汇编代码,主要作用:1)堆栈(SP)的初始化;2)初始化程序计数器(PC);3)设置向量表异常事件的入口地址;4)调用Main函数。ST公司有三个文件,分别对应不同的STM32芯片: startup_stm32f10x_ld.s对应FLASH≤32K的STM32芯片; startup_stm32f10x_md.s对应64K≤FLASH≤128K的STM32芯片; startup_stm32f10x_hd.s对应256K≤FLASH的STM32芯片。 [2]寄存器模板的主函数文件可以先这么写:```
可直接编译后利用FlyMcu下载程序至STM32开发版中,进行调试。 [3]寄存器模板和库函数模板的startup_stm32f10x_hd.s区别在于,寄存器模板的需要注释三行代码:
———————————————— 版权声明:天亮继续睡 |
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南