keil MDK5搭建STM32开发环境

发布者:素心静听最新更新时间:2018-08-17 来源: eefocus关键字:keil  MDK5  STM32  开发环境 手机看文章 扫描二维码
随时随地手机看文章

1. 安装keil

到keil的官方网站 http://www.keil.com/download/product/ 下载MDK-ARM并安装,注意可以更改安装路径,但是不能安在需要管理员权限的文件夹,例如不能在Program Files,否则会出现一些问题。 
下载MDK

2. 注册

未注测有代码容量限制,需要破解。网上找KEIL_Lic

3. 安装器件包

打开Pack Installer 
打开Pack Installer

左边选择STMicroelectronics,右边选择需要的芯片系列,我的是STM32F4。

安装器件包

install:需要安装 
update:需要升级 
up to date:已安装到最新版

安装的时间比较长,需要等等。

4. 建立新工程

  1. 新建工程要选择在一个空文件夹,会建立很多文件。 
    新建工程

  2. 之后会出现如下窗口,选择对应芯片型号 

  3. 下一步会出现运行环境管理器窗口,这是通过选项配置需要的官方库 

    CMSIS -> CORE 必选 
    Device -> Startup 必选

    如果要启用GPIO,则选择 STM32Cube HAL -> GPIO,会出现如下情况: 

    黄色 代表需要依赖其他库,会在下方提示需要的库,单击定位到选项 
    绿色 代表该库已经可用 
    红色 代表与其他库冲突

    选择 STM32Cube HAL -> GPIO后按提示把所有需要的库都选上。

  4. 配置target选项(疑惑) 
    配置

    如果包含的头文件是#include "stm32f4xx.h",则需要在Define中填写USE_HAL_DRIVER(这个宏的作用是启用外设),STM32F429XX可以不填。

    如果直接包含头文件#include "stm32f4xx_hal.h",则可以在Define中什么都不用填,就能正常使用外设。

    为何会有两种方法,我还不明白。

5. 第一个程序

对Source Group1右键,添加一个c源文件,命名为main。 
添加源文件

这里写图片描述

//这是点亮一个LED的程序,LED接在PG13#include "stm32f4xx_hal.h"int main()
{
    __GPIOG_CLK_ENABLE();
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.Pin   = GPIO_PIN_13;
    GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull  = GPIO_PULLDOWN;
    GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
    HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);    while (1) {
        HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13, GPIO_PIN_SET);
    }
}1234567891011121314151617

包管理器下载的F4库是hal库,F10x的库是以前的标准库,有些语句不同,需要注意: 
STM32F4xx:GPIO_InitStructure.Pin 
STM32F10x:GPIO_InitStructure.GPIO_Pin

STM32F4xx:GPIO_PIN_All 
STM32F10x:GPIO_Pin_All

STM32F4xx:HAL_GPIO_Init( ) 
STM32F10x:GPIO_Init( )

如果不确定自己芯片的函数名,最好去看看头文件里的定义。

6. 生成HEX文件

点击魔术棒打开配置窗口,到Output选项卡,勾选Create HEX File,编译后就会在Objects文件夹生成HEX文件。 

7. 获取并安装ST-Link驱动

我用的开发板是用ST-Link烧录程序,只说ST-Link的用法了。 
到st的ST-Link官方页面下载驱动

下载STM32 ST-LINK utility,: 

在页面的最下面,不容易看到: 

STM32 ST-LINK utility包括驱动和烧录程序的软件。

8. ST-LINK utility的使用

第六个图标是烧录程序,点击后会要求选择一个HEX或bin文件,选完后点start就会烧录程序。 
注意程序重新编译后也要重新选择一次HEX文件,否则是以前的老程序。 

9. 用keil MDK上传程序

keil MDK上传的是axf文件,不是hex文件,可以免去第6步

  1. 点击魔术棒打开配置界面,选择自己的编程器 

  2. 然后点setting,到flash Download勾选reset and 
    run,这会在上传程序后让开发板自动重启运行程序,否则需要手动按复位键才能运行程序。其他的配置一般默认就好。 

  3. 也许会遇到Error: Flash download failed-“Cortex-M4”的错误,记得检查这一步的设置 

  4. 然后点download就可以下载了 

后记

目前stm32有两个程序库,一个是标准库,一个是hal库。hal库是新开发的库,有更好的可移植性,但是很多函数和变量的命名跟标准库不一样,因此不兼容标准库写得程序。标准库官方已不再更新,hal库将是未来的趋势。

官方提供了更为方便的初始化代码的工具 STM32CubeMX,利用这个工具可以用图形化的方法配置芯片并生成初始化代码,支持mdk,EWARM多种IDE,支持stm32全系列单片机,只有hal库。

用STM32CubeMX就不需要用的keil MDK的包管理器了,就免去了第3步的器件安装和第4步的新建工程。用STM32CubeMX建立的工程会生成一个模板,在主函数的while()里的空白处写用户程序,方便很多,也规范很多。


关键字:keil  MDK5  STM32  开发环境 引用地址:keil MDK5搭建STM32开发环境

上一篇:STM32中LCD显示少量汉字
下一篇:搭建Keil5与STM32创建工程中所遇到的问题

推荐阅读最新更新时间:2024-03-16 16:11

如何检查STM32的HardFault_Handler故障
STM32出现HardFault_Handler故障的原因主要有两个方面: 1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。 2、堆栈溢出。增加堆栈的大小。 出现问题时排查的方法: 发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R12、Return address、PSR、LR寄存器依次入栈,其中Return address即为发生异常前PC将要执行的下一条指令地址。 注意:寄存器均是32位,且STM32是小端模式。(参考Cortex-M3权威) 编写问题代码如下: void S
[单片机]
如何检查<font color='red'>STM32</font>的HardFault_Handler故障
stm32 堆和栈(stm32 Heap & Stack)
关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的。 那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘: 刚接手STM32时,你只编写一个 int main() { while(1); } BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-data=1632 编译后,就会发现这么个程序已用了1600多的RAM,要是在51单片机上,会心疼死了,这1600多的RAM跑哪儿去了, 分析map,你会发现是堆和栈占用的,在startup_stm32f10x_md.s文件(这个是stm32的启动文件)中,它的前面几行就有以上定义, 这下该明白
[单片机]
<font color='red'>stm32</font> 堆和栈(<font color='red'>stm32</font> Heap & Stack)
MSP432P401R的keil环境搭建
1、下载MSP432的pack包并导入keil中 2、打开工程文件 3、配置魔术棒
[单片机]
MSP432P401R的<font color='red'>keil</font>环境搭建
STM32 外部计数ETR计算频率
STM32 外部计数ETR计算频率,测量100K频率,用定时器2定时250ms,定时器3PD2(TIM3_ETR)计数,计算公式f=n*t; void Tim3_Configuration(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Prescaler = 0x00; TIM_TimeBaseStructure.TIM_Period = 0xFFFF; TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStr
[单片机]
ANSIC几种特殊的标准定义(__FILE__、__LINE__、__STDC__···)
Ⅰ写在前面 为方便大家阅读,本文内容已经整理成PDF文件: http://pan.baidu.com/s/1gfHygyn 对于我们大部分使用单片机进行裸机开发的朋友来说,可能很少有人在程序中许多关键的地方打印一些关键信息。 有较大系统开发,或复杂系统开发经验的朋友一般都会在程序中输出很多调试信息,如在UCOS、freeRTOS、Linux等系统开发调试时打印许多关键信息。 1.我们在使用STM32库开发时,在stm32fxxx_conf.h文件下会发现如下这么一条语句: #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__F
[单片机]
STM32单片机学习笔记(5):ADC模数转换器
项目简介 利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第五部分针对STM32单片机内置ADC模块的学习和理解。 硬件模块 STM32F103R4 LDR 串口模块 软件工具 CubMX Proteus KEIL 电路连接图 工作流程 首先创建一个CubMX工程,选择ADC模块 其余保持默认即可。 然后就是编写程序,程序代码在后面会列出来,这里简单说说自己遇到的一些问题。刚开始出来的结果全是0,但是网上有人说在实物开发板上是可以正常运行的。本来想放弃选用ADC0832模块的,不过不幸的事
[单片机]
<font color='red'>STM32</font>单片机学习笔记(5):ADC模数转换器
关于在Bootloader模式下的应用程序下载
1.引言 STM32 MCU 在 bootloader 模式下,可以通过多种可用外设(USART、CAN、USB、I2C、SPI等)将程序下载到内部存储器中,详细内容可参考应用笔记 AN2606《STM32 microcontroller system memory boot mode》。本文档主要介绍利用 STLINK-V3SET 调试/编程工具的 I2C 接口将程序下载到 SDRAM 中并执行的方法。 2.问题描述 问题源自客户的实际需求,希望通过 I2C 接口将程序下载到 SRAM 中执行,进行芯片功能性测试。 3.问题分析与定位 关于在 Bootloader 模式下的应用程序下载,有多篇 LAT 可参考。例如《如何使用
[单片机]
关于在Bootloader模式下的应用程序下载
STM32 DMA 多通道
ADC_init.C #define ADC1_DR_Address ((uint32_t)0x4001244C) extern vu16 After_filter ; //用来存放求平均值之后的结果 extern vu16 ADCConvertedValue ; DMA_InitTypeDef DMA_InitStructure; //DMA总线枚举类型 ADC_InitTypeDef ADC_InitStructure; //ADC 枚举类型 /******************************************************************************* * 函数名称: GP
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved