MDK 5.25 新建 STM32开发环境

本文详细介绍使用MDK5.25进行STM32F10x系列微控制器的开发过程,包括安装配置、创建工程、添加文件、宏定义、路径设置、编译及下载等关键步骤。



MDK 5.25 下载链接:https://pan.baidu.com/s/1-Qwf0Ggtj33SjNUe07kjYg
提取码:7wgf


1、安装mdk525.exe;

在这里插入图片描述

2、下载离线的 .pack 器件支持包

下载离线的.pack器件支持包,单击右侧按钮下载;
在这里插入图片描述

3、双击 安装 .pack 器件支持包

下载后双击文件,按照默认路径安装(当前keil 5安装路径);
在这里插入图片描述

4、新建【TEST】工程 文件夹

新建【TEST】工程文件夹,再新建【子文件夹】;
在这里插入图片描述

序号目录作用
1CORE固件库核心core_cm3、启动文件startup
2HARDWARE硬件外设
3OBJ目标文件
4STM32F10x_FWLib固件库文件
5SYSTEM系统
6USER工程文件
5、新建 MDK 5工程;

打开MDK 5,单击【Project】—>【New Uvision Project】,【保存】到预先建立的【TEST】工程文件夹的子文件夹【USER】。
在这里插入图片描述

6、选择对应的开发器件;

在这里插入图片描述

7、MDK会弹出【Manage Run-Time Environment 】对话框,单击【Cancel】;

在这里插入图片描述

8、复制【CORE】需要的文件;

打开官方固件库包【STM32F10x_StdPeriph_Lib_V3.5.0】
(1)把Libraries\CMSIS\CM3\CoreSupport下的core_cm3.ccore_cm3.h复制到【CORE】。
(2)DeviceSupport下的startup_stm32f10x_hd.s启动文件,复制到【CORE】。
如图所示:
在这里插入图片描述

9、获取 固件库 外设驱动

把【STM32F10x_StdPeriph_Driver】下的【inc】和【src】文件夹复制到【STM32F10x_FWLib】,如图所示:
在这里插入图片描述

10、复制【USER】需要的文件;

(1)把【STM32F10x_StdPeriph_Lib_V3.5.0\Project】的【STM32F10x_StdPeriph_Template】下的stm32f10x_conf.hstm32f10x_it.cstm32f10x_it.hsystem_stm32f10x.csystem_stm32f10x.h复制到【USER】目录;
(2)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x目录下的stm32f10x.h,复制到【USER】

序号文件功能
1system_stm32f10x.c
system_stm32f10x.h
设置 系统时钟 以及 总线时钟
2stm32f10x.h主要是系统寄存器定义申明以及包装内存操作
(相当重要,只要你做 STM32 开发,你几乎时刻都要查看这个文件相关的定义)
3stm32f10x_conf.h启用/禁用 外设头文件的包含
4stm32f10x_it.c
stm32f10x_it.h
用来编写 中断服务函数
(其实 中断服务函数 也可以随意编写在工程里面的任意一个文件里面)

在这里插入图片描述

11、开发板例程的【SYSTEM】的3个文件夹:delay,sys,usart

开发板例程的 SYSTEM 的3个文件夹 delay、sys、usart 复制到 SYSTEM ;
在这里插入图片描述

序号目录作用
1delay实现系统的延时功能
(1)void delay_init(void)
(2)void delay_us(u32 nus)
(3)void delay_ms(u16 nms)
2syssys.csys.h
3usartusart.cusart.h
用于串口的初始化和中断接收
12、修改Project下的【Target 1】为【TEST】,【TEST】下新建目录;

在这里插入图片描述

13、新建 main.c 文件,保存到【USER】目录;
#include "led.h"
#include "delay.h"

int main(void)
{
    delay_init();	   
    LED_Init();		  
	
    while(1)
    {
        GPIO_ResetBits(GPIOA, GPIO_Pin_8); 
        GPIO_SetBits(GPIOD, GPIO_Pin_2); 
        delay_ms(300);
        GPIO_SetBits(GPIOA, GPIO_Pin_8);
        GPIO_ResetBits(GPIOD, GPIO_Pin_2); 
        delay_ms(300);
    }
}

14、新建 led.c 和 led.h 文件

新建 led.c 和 led.h 文件,保存到【HARDWARE】—>【LED】目录;
led.c:

#include "led.h"

void LED_Init(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOD, ENABLE);	

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
    GPIO_Init(GPIOA, &GPIO_InitStructure);					
    GPIO_SetBits(GPIOA, GPIO_Pin_8);						 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;	    		 
    GPIO_Init(GPIOD, &GPIO_InitStructure);	  				
    GPIO_SetBits(GPIOD, GPIO_Pin_2); 						
}

led.h:

#ifndef __LED_H
#define __LED_H	 

#include "sys.h"

void LED_Init(void);	//初始化
	 				    
#endif

15、如图所示添加文件到【TEST】工程目录;

在这里插入图片描述

16、单击魔术棒,增加 宏定义

单击魔术棒 ,出来一个对话框,然后单击【C/C++】选项,在【Preprocessor Symbols】的【Define】框填入【STM32F10X_HD,USE_STDPERIPH_DRIVER】;
在这里插入图片描述

17、把工程中引用到的 所有头文件 的路径 都包含到进来:

单击【Include Paths】右边的按钮。弹出一个添加 path 的对话框,然后将图头文件所在的目录添加进去。
记住,Keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path 一定要定位到最后一级子目录,完成单击OK。
在这里插入图片描述

18、更改【目标文件】输出目录为【OBJ】;

在这里插入图片描述

19、单击【F7】编译通过;

在这里插入图片描述

20、勾选【Reset and Run】

选择调试工具,然后在【Setting】—>【Flash Download】对话框,勾选【Reset and Run】;
在这里插入图片描述

21、单击【F8】下载固件

单击【F8】下载固件,STM32自动运行【LED】程序。
在这里插入图片描述

序号项目描述
1Code执行的代码,程序中所有的函数
2RO-data只读数据,程序中所定义的全局常量数据字符串
3RW-data已初始化的读写数据,程序中 定义并且初始化全局变量静态变量
4ZI-data未初始化的读写数据,程序中 定义了但没有初始化全局变量静态变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值