教你从零建一个STM32工程
- 格式:doc
- 大小:772.00 KB
- 文档页数:10
Keil uVision5中建Stm32工程教程本教程中,介绍在Keil uVision5中建STM32工程的两种方法:一种是利用固件库建立工程,另一种是通过建工程时软件给的引导直接完成。
软件的安装和破解网上教程很多,这里就不赘述了,直接从建立工程开始。
首先介绍第一种:利用固件库建立STM32工程1.在你电脑中想要建立工程的地方先新建一个文件夹。
这里我在E盘下新建了一个文件夹,命名为STM32Project。
2.在新建的STM32Project文件夹下再新建一个文件夹,命名为STM32固件库,然后把事先下载的固件库放在文件夹中,方便查找进行复制。
3.打开Keil uVision5软件,在软件的菜单栏中找到Project——>New uVisionProject…,单击,找到上述新建的文件夹,对新建的工程进行命名,这里命名为test,点击保存。
4.此时软件弹出一个选择芯片的窗口:“Select Device for Target ‘Target 1’…”,在左侧的芯片库中找到你要使用的STM32系列的芯片,这里选择的是STMicroelectronics——>STM32F1 Series——>STM32F103——>STM32F103RC,单击OK。
5.此时弹出一个窗口:“Manage Run-Time Environment”,这个窗口在第二个建工程的方法中会使用到,这里先直接点击OK,跳过。
6.现在开始添加相关文件。
在STM32Project文件夹中新建以下四个文件夹:user:放置用户自己编写的相关文件CMSIS:放置与内核相关的文件startup:放置启动单片机的汇编文件driver:放置外设操作的驱动文件再向这四个文件夹中添加固件库中的相关文件:user:STM32Project\STM32固件库\STM32F10x_StdPeriph_Lib_V3.5.0 \Project\STM32F10x_StdPeriph_Template中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h一共3个文件复制粘贴到user文件夹中,同时新建一个文本文档,重命名为main.c。
stm32开发的方法摘要:1.介绍STM32开发方法的重要性2.详述STM32开发方法的步骤和方法3.分析STM32开发方法的优缺点4.提出提高STM32开发效率的建议正文:随着嵌入式系统的普及,STM32的开发方法已经成为众多工程师必备的技能。
本文将介绍STM32开发方法的重要性,详细阐述STM32开发的具体步骤和方法,并分析其优缺点。
最后,提出一些提高STM32开发效率的建议。
一、STM32开发方法的重要性STM32作为一款高性能、低成本的微控制器,广泛应用于各种嵌入式系统中。
掌握STM32开发方法,有助于提高开发效率、降低成本,并确保系统稳定可靠。
因此,对于嵌入式工程师而言,熟练掌握STM32开发方法具有重要意义。
二、STM32开发方法的步骤和方法1.硬件设计:根据项目需求,选择合适的STM32型号,并设计相应的硬件电路,包括电源、时钟、复位、通信接口等。
2.软件设计:使用合适的编程语言(如C、C++等)编写程序,实现所需功能。
同时,设计合理的程序架构,便于后续维护和升级。
3.开发环境搭建:选择合适的开发工具,如Keil、IAR等,搭建开发环境。
配置相应的编译器、调试器等工具。
4.编程与调试:编写程序代码,并进行调试。
利用开发环境中的调试工具,如仿真器、逻辑分析仪等,确保程序的正确性。
5.系统优化:根据实际运行情况,对硬件和软件进行优化,提高系统的性能和稳定性。
6.测试与验证:进行完整的测试,确保系统满足项目需求。
测试过程中,要对硬件和软件进行持续优化,直至满足性能指标。
三、STM32开发方法的优缺点优点:1.高性能:STM32具有较高的运行速度和处理能力,可满足多种应用场景的需求。
2.丰富的外设:STM32系列产品外设丰富,便于实现各种功能。
3.低功耗:相较于其他同类产品,STM32具有较低的功耗,有利于延长系统续航时间。
4.成熟的开发生态:STM32拥有庞大的开发者社区,可获取丰富的技术资源和第三方工具。
使用keil进行stm32单片机开发的流程-回复keil作为一款嵌入式系统开发工具,广泛应用于STM32单片机的开发过程中。
它具有强大的编译、调试和仿真功能,可以帮助开发者更高效地进行单片机的开发工作。
本文将以“使用keil进行STM32单片机开发的流程”为主题,为读者详细介绍使用keil进行STM32开发的步骤和注意事项,帮助读者轻松入门STM32开发。
一、准备工作1. 软件安装:首先需要安装keil嵌入式开发环境。
你可以从官方网站上下载到keil的安装包,然后按照安装向导进行安装即可。
2. 硬件准备:除了软件准备外,还需要购买一块支持STM32开发的开发板,例如ST公司的ST-LINK开发板。
将开发板连接至电脑。
二、创建项目1. 打开keil:双击桌面上的keil图标,进入keil开发环境。
2. 创建新项目:点击“Project”->“New Project”,选择合适的存储路径和项目名称,并选择你所使用的STM32单片机型号。
单击“OK”完成新项目的创建。
三、配置开发环境1. 配置芯片参数:在左侧的“Project”窗口中,右键点击“Target 1”,选择“Options for Target”。
2. 配置目标选项:在“Debug”选项卡中,选择正确的调试接口,并将“Use Simulator”选项取消勾选。
在“Settings”选项卡中填写正确的时钟频率和连接方式,并启用Flash编程。
3. 配置编译器:在左侧的“Project”窗口中,右键点击“Target 1”,选择“Options for Target”。
在“C/C++”选项卡中,配置编译器的优化级别和其他相关参数。
四、编写代码1. 添加源文件:在“Project”窗口中右键点击“Source Group 1”,选择“Add New Item”,然后添加你的源代码文件,编写代码内容。
注意,为了方便管理,可以按功能将代码分割成多个源代码文件。
使用MDK5建立STM32工程MDK5是Keil公司推出的一款嵌入式开发工具,用于编写和调试STM32系列微控制器的程序。
本文将介绍使用MDK5建立STM32工程的步骤。
首先,我们需要准备以下材料:-STM32系列微控制器开发板-USB转串口调试器-MDK5软件安装包接下来,我们按照以下步骤建立STM32工程:第一步,安装MDK5软件第二步,创建新工程打开MDK5软件,点击"Project" -> "New uVision Project",选择保存工程的路径,并命名工程。
第三步,选择目标器件在"Device"栏中,选择对应的STM32系列微控制器型号。
第四步,配置工程选项在"Project" -> "Options for Target"中,配置工程选项,包括时钟频率、调试接口等。
第五步,添加源文件在"Project"窗口中右键点击"Source Group",然后选择"Add New Item to Group",选择需要添加的源文件。
第六步,编写程序在添加的源文件中编写STM32的程序,可以使用C语言或者汇编语言。
第七步,调试程序在"Project" -> "Options for Target"中,配置调试选项,选择调试模式和调试接口等。
点击工具栏上的"Start/Stop Debug Session"按钮,开始调试程序。
以上就是使用MDK5建立STM32工程的主要步骤。
通过这些步骤,我们可以方便地进行STM32的软件开发和调试工作。
同时,MDK5还提供了丰富的开发工具和调试功能,提高了开发效率。
我们可以根据具体的需求进行配置和扩展,以满足不同的项目要求。
STM32CubeMX新建工程的过程及方法解析
Ⅰ、写在前面
关于STM32CubeMX新建工程的过程。
最终通过STM32CubeMX工具配置完成一个驱动IO(点亮LED)的软件工程,也就是通过STM32CubeMX配置完成之后,打开工程直接下载就能点亮LED的工程。
Ⅱ、STM32CubeMX新建工程描述
这里结合实例来讲述新建工程的每一个步骤的细节。
1.打开STM32CubeMX软件,点击“新建工程”
2.选择MCU或选择(ST官方)开发板
A.如果是我们网上购买的,或者自己画的开发板,点击“MCU Selector”进入MCU选择器。
选择器在网页上常见,根据自己需求进行选择(我们以STM32F103E为例)。
1.根据“系列”选择;如:F0、F1、F
2.。
..。
.F7、L0、L1、L4等;
2.根据“产品线”选择;
3.根据“封装”选择;
4.根据“其他特征”选择;如:FLASH大小、RAM大小、IO数量等。
层层筛选下来,最后就可以看到自己想要的芯片型号,双击“选中”芯片,如下图:
B.如果你的开发板是购买ST官方的开发板(或评估板),点击“Board Selector”进入开发板选择器。
(我们以STM3210E-EV AL为例)。
1.根据“厂商”选择;目前只有ST厂商,估计以后会拓展其他厂商;
2.根据“板子类型”选择;
3.根据“芯片系列”选择;
层层筛选下来,最后就可以看到自己想要的芯片型号,双击“选中”芯片,如下图:。
STM32F4工程模板建立方法在Keil环境下建立STM32F4的工程模板可以按照以下步骤进行操作:1. 打开Keil软件,选择“Project”->“New µVision Project”命令,弹出新建项目对话框。
2. 在对话框中选择工程的保存路径和名称,点击“Save”保存。
3. 在“Create Project Folder”对话框中选择是否要在工程文件夹中创建子文件夹,选择“Yes”或“No”并点击“OK”完成创建。
4. 弹出新建文件对话框,选择需要添加到工程中的文件类型,例如C源文件或者汇编文件,点击“Save”保存。
5. 在“Options for Target”对话框中选择芯片型号和包装封装类型,并点击“OK”关闭对话框。
6. 在Keil主界面的工程文件窗口中右键单击“Source Group”文件夹,选择“Add Existing Files to Group 'Source Group'”命令,选择要添加到工程的源文件,并点击“Add”完成添加。
7. 右键单击“Include”文件夹,选择“Add Exist ing Files to Group 'Include'”命令,选择要添加到工程的头文件,并点击“Add”完成添加。
8. 在工程文件窗口中选择“Options for Target”->“C/C++”选项,在右侧的Edit框中添加需要进行编译的文件路径,在Options forTarget - C/C++窗口中点击“OK”完成路径设置。
9. 在工程文件窗口中选择“Options for Target”->“Output”选项,在右侧的Edit框中选择输出文件的路径和名称,点击“OK”完成路径设置。
10. 在Keil主界面的工具栏中点击“Build”按钮进行编译,编译成功后会生成目标文件和可执行文件。
注意事项:1.在建立工程模板时,需要根据实际的芯片型号和芯片封装类型进行设置,确保编译器和调试工具能够正确地识别和支持所选的硬件。
使用Keil MDK以及标准外设库创建STM32工程1.1 使用Keil MDK以及标准外设库创建STM32工程通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间内甚至都无法完全自己建立一个工程,很多人只是依赖标准外设库或给定的工程模板。
本节就介绍怎样利用Keil MDK 开发环境和标准外设库来搭建自己的工程。
建立一个基于标准外设库其实并不复杂,网络上也有很多关于怎样在Keil MDK下建立工程的教程,方法也各异,本节所介绍的方法本着少改动、便于使用、方便更换器件等原则,给大家介绍怎样在Keil中创建一个工程,并以一个最简单的例子来说明怎样下载和调试程序。
1.1.1 开发工具与开发环境1. 软件版本本节所使用Keil MDK 为目前的最新版V4.21,具体版本信息如图5-6所示。
其他版本差别不大,读者可以根据自己使用的版本进行操作或者从Keil的官网下载新版本。
使用的标准外设库为目前最新的V3.5版本。
使用的开发调试工具为JLINK-V8,使用的驱动版本为V4.08l。
图5-6 MDK详细版本信息2. 建立工程目录首先先建立一个用于存放工程的文件夹,此处命名为STM32,在文件夹下分别建立LIB、USER、MDK三个文件夹,分别用于存放标准外设库文件、用户程序文件、工程目录。
在MDK 文件夹下建立List、Obj两个文件夹,分别用于存放在编译过程中产生的临时文件和输出文件。
接下来拷贝标准外设库和相应的文件到工程目录中,首先拷贝STM32F10x_StdPeriph_Li b_V3.5.0\Libraries文件夹下的两个文件夹CMSIS和STM32F10x_StdPeriph_Driver到刚刚新建的STM32\LIB目录下,接下来拷贝用户编写程序的程序文件,此文件可以从标准外设库自带的例程中拷贝,这里从STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Exam ples\ADC\3ADCs_DMA目录下拷贝main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it. h四个文件,这四个文件是在编程的时候用户往往需要根据实际需求进行修改的。
最简单的STM32入门教程展开全文本文讲述的是如何从零开始,使用keil建立一个简单的STM32的工程,并闪烁LED灯,给小白看。
第零步,当然首先你得有一个STM32的板子,其IO口上接了一个LED。
第一步,建立一个文件夹0.0第二步,打开keil,建立工程在弹出来的对话框中选择你所用的STM32的芯片。
在接下来弹出来的对话框中选择是,这样keil就帮我们建立好了启动文件。
第三步,新建一个main.c文件,并添加到工程中。
点击New按钮,建立一个文本文件。
在建立的文本文件中输入C中的main函数点击保存保存后,将文件添加到工程中第四步,点击编译可以看到keil有报错错误信息为:没有定义的符号SystemInit ,这是因为在启动文件中有调用SystemInit 函数,但是我们没有定义它,如下图:暂时不用理会上述启动文件中汇编的含义,只需在main.c 中添加该函数即可消除该错误。
修改后再编译,程序没有报错了。
至此,一个STM32的工程就建立完成了。
第五步,将下面的代码复制粘贴1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #define PERIPH_BASE ((unsigned int)0x40000000) #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) #define GPIOB_BASE (APB2PERIPH_BASE + 0x0C00) #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) #define GPIOD_BASE (APB2PERIPH_BASE + 0x1400) #define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) #define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00) #define GPIOG_BASE (APB2PERIPH_BASE + 0x2000) #define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C#define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr&0xFFFFF)<<5)+(bitnum<<2))19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #define MEM_ADDR(addr) *((volatile unsigned long *)(addr)) #define LED0 MEM_ADDR(BITBAND(GPIOA_ODR_Addr,8))//#define LED0 *((volatile unsigned long *)(0x422101a0)) //PA8 typedef struct{volatile unsigned int CR;volatile unsigned int CFGR;volatile unsigned int CIR;volatile unsigned int APB2RSTR;volatile unsigned int APB1RSTR;volatile unsigned int AHBENR;volatile unsigned int APB2ENR;volatile unsigned int APB1ENR;volatile unsigned int BDCR;volatile unsigned int CSR;} RCC_TypeDef;#define RCC ((RCC_TypeDef *)0x40021000)typedef struct{volatile unsigned int CRL;volatile unsigned int CRH;volatile unsigned int IDR;volatile unsigned int ODR;volatile unsigned int BSRR;volatile unsigned int BRR;volatile unsigned int LCKR;} GPIO_TypeDef;#define GPIOA ((GPIO_TypeDef *)GPIOA_BASE)void LEDInit(void){RCC->APB2ENR|=1<<2; //GPIOA 时钟开启GPIOA->CRH&=0XFFFFFFF0;GPIOA->CRH|=0X00000003;}//粗略延时void Delay_ms(volatile unsigned int t){unsigned int i,n;for(n=0;n<t;n++)for(i=0;i<800;i++);}int main(void){LEDInit();636465666768697071727374757677787980818283 while(1){LED0=0;Delay_ms(500);LED0=1;Delay_ms(500); }}void SystemInit(void){}下面一段是对代码的简单讲解,可不用太深入。
使用MDK(Keil)建立一个STM32工程模板的流程如图所示:一.获取ST库源码。
到ST公司的官网进行查找并下载,如图所示:1.新建工程文件夹——《STM32工程模板》。
首先,新建工程文件夹《STM32工程模板》,然后再在该文件夹下新建6个文件夹,分别:《Doc》、《BSP 》、《Listing》、《Output》、《Project》和《User》。
其中,2.《Doc》用于存放各种说明文档;《BSP 》用于存放各种库文件;《Listing》用于存放编译时产生的中间文件;《Output》用于存放生成的下载所需的文件;《Project》用于存放工程文件;《User》用于存放用户文件,即我们自己编写的各种源文件。
具体情况如下图所示:具体步骤,以KEIL5 MDK5.18中建立STM32F417工程为例:二.STM32工程建立(F4系列)2016年4月13日16:57将下载的stm32f4_dsp_stdperiph_lib_zip 压缩包中的文件复制到工程模板文件夹下的STM32F4XX_StdPeriph_Driver 文件夹。
如下图:1)将stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\CMSIS\Include 文件夹中对应的core_cm 文件复制到工程模板文件夹下的CMSIS文件夹。
具体操作情况如下图:2)向建立的工程文件夹中添加库文件。
3.将stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\CMSIS\Device\ST\STM32F4xx\Include 文件夹中文件复制到工程模板文件夹下的CMSIS 文件夹。
具体操作情况如下图:3)将stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm 文件夹中对应芯片的startup 文件复制到工程模板文件夹下的CMSIS 文件夹。
一、概述STM32是意法半导体公司的32位微控制器产品系列,广泛应用于各种嵌入式应用领域。
STM32标准库是STM32系列微控制器的冠方支持库,为开发者提供了一套丰富的功能接口和丰富的示例代码,方便开发者快速进行STM32微控制器的开发和调试工作。
在进行STM32标准库开发时,需要按照一定的步骤进行,本文将介绍STM32标准库的开发步骤。
二、准备工作在进行STM32标准库开发之前,首先需要进行准备工作,包括以下几个步骤:1. 硬件准备:准备一块STM32微控制器开发板、USB转串口调试器、JTAG/SWD仿真调试器等硬件设备;2. 软件准备:安装Keil MDK集成开发环境、ST-Link驱动程序、STM32CubeMX等开发工具。
三、新建工程在准备工作完成后,可以使用STM32CubeMX工具新建一个工程,包括以下步骤:1. 打开STM32CubeMX工具,选择对应的STM32微控制器型号,配置系统时钟、外设模块等参数;2. 生成工程代码:根据配置的参数生成对应的初始化代码和工程文件,并保存到指定的目录中。
四、导入工程到Keil MDK通过STM32CubeMX生成的工程文件,可以导入到Keil MDK集成开发环境中进行编码和调试。
具体步骤如下:1. 打开Keil MDK软件,选择“Project” -> “Open Project”,打开STM32CubeMX生成的工程文件;2. 在Keil MDK中进行编码和调试:可以通过Keil MDK编写应用程序代码、进行编译、下载程序到开发板并进行调试工作。
五、编写应用程序在导入工程到Keil MDK后,可以编写应用程序代码,具体步骤包括:1. 打开Keil MDK,选择“File” -> “New”,新建一个C文件,编写应用程序的代码;2. 编写应用程序代码:根据具体的需求,编写相应的应用程序代码,包括初始化系统、配置外设、编写应用逻辑等部分。
1:本例所用到的MCU是STM32F103VET6,已经过测试,如果是其它MCU的话,选你自己的MCU就行,只需作小许修改即可。
2:首先按下图所示建立相应用的文件夹,注意层次关系:
3:下图是工程文件夹里相应的文件:
接照上图所示,在相应的文件夹里放放相关的“.C”文件,在startup里放入相应的".s文件",对于Keil 其文件在“\Libraries\startup\arm”里面可找到。
4:接着就打开Keil MDK V4.12,新建一个工程并选择好器件:
点击“品”字形的图标,建好组:
5:下图是建好组后的图并在CoreSupport组里“Add Files”了一个文件:
6:下图是startup组里“Add Files”后的图:
7:下图是StdPeriph_Driver组里“Add Files”后的图,由于文件比较多一张图并不能完全显示出来,我是将所有在“\Libraries\StdPeriph_Driver\src”所有的文件都添了进去,在实际应用时要按实际情况添加:
8:下图是STMF10x组里“Add Files”后的图:
9:下图是User组里“Add Files”后的图:
在user里你还可以加stm32f10x_it.c中断函数文件。
10:单击“OK”,终于添加文件完毕,之后就到设置了,单击右图
所示的图标:,按下图所示设置好,点"Output"标签页:再点下图select Folder for Object选项,选择输出文件路径。
在之前你已建好,如果没有,也可以这是在你的工程路径下建。
11:“Output”文件夹用以存放你所勾选项目产生的“Debug Information”、"Create HEX File"和“Brower library”信息或文件。
接着就是点"Listing"标签页,设置方法和上图相同。
将你的连接
文件放入list文件夹。
12:点标签页“C/C++”,这页的设置很重要,首先加入这个宏:
我之前由于没设这一项,导致程序编译出现很多错误。
很多入门的
教程里都没有提到这一项,使我浪费很多时间,希望大家不要像我一样
在这花费太多时间。
至于这为什么加这个,是什么原因,我也不是很清楚。
如果谁弄明白可以告诉我。
在这加的宏定义与你使用的芯片有关,依据高密度,中密度,低密度的不同而不同。
后边有对应的说明。
一般就这几项,可以自己试试。
13:接着,点击如图所示有红色圈的按钮选择.h文件所在的路径。
这一项是自动连接*.h文件的。
一般.h文件都在库文件的子文件夹里。
这里的路径以你自己电脑的路径为准。
接着按下图所示设置,也就是所用到固件库头文件的路径:
好了。
编译一次吧,看是否有错?
14:这时在“Output”和“List”文件夹里就有了许多文件:
如果不要这些信息或为为发加快编译速度,可以去掉在第十步所示的“Debug Information”和“Brower library”前面的钩即可。
15:最后到了J-LINK仿真下载器相关项的设置。
下图主要是右半部分的设置:选择Debug按钮。
选中use硬件仿真。
紧接着就是点红色圈的"Settings"按钮,不要忘了接上STM32开发板的电源和J-LINK,还要装好J-LINK的驱动,按下图设置好:
先点击“Scan”按钮,接着就是"Auto Clk"按钮,哈,我板子的JTAG 时钟能达到10MHZ!有的则不能达到,一般选2M就行。
这些设置以你的板子而定。
不一定以此为标准。
16:接着上图所示点“Flash Download”标签页并按实际情况设置好:你自己的芯片是多大就选多大。
17:还有最后一步,看下图:选Utilities按钮,选你自己的仿真器。
全部完成了,设置了那么久为的就是能看到下图:
18:给大家一点设置的参考吧:
需在工程项目C/C++里面Define添加:USE_STDPERIPH_DRIVER,STM32F10X_HD
STM32F10X_LD---STM32小容量芯片
STM32F10X_MD---STM32中容量芯片
STM32F10X_HD---STM32大容量芯片
STM32F10X_CL---STM32互联网型芯片105/107等
USE_STDPERIPH_DRIVER---使用库里面的API函数
在工程startup文件里面添加相应芯片的启动文件:
STM32F10X_LD.S
STM32F10X_MD.S
STM32F10X_HD.S
STM32F10X_CL.S。