keil MDK5搭建STM32开发环境

keil MDK5搭建STM32开发环境1.安装keil到keil的官方网站http://www.keil.com/download/product/下载MDK-ARM并安装,注意可以更改安装路径,但是不能安在需要管理员权限的文件夹,例如不能在ProgramFiles,否则会出现一些问题。2.注册未注测有代码容量限制,需要破解。网上找KEIL_Lic。3.安装器件包打开PackInstaller左边选择STMicro

大家好,又见面了,我是你们的朋友全栈君。

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. 之后会出现如下窗口,选择对应芯片型号
    keil MDK5搭建STM32开发环境

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

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

    如果要启用GPIO,则选择 STM32Cube HAL -> GPIO,会出现如下情况:
    keil MDK5搭建STM32开发环境

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

    选择 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);
    }
}

包管理器下载的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文件。
keil MDK5搭建STM32开发环境

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

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

下载STM32 ST-LINK utility,:
keil MDK5搭建STM32开发环境

在页面的最下面,不容易看到:
keil MDK5搭建STM32开发环境

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

8. ST-LINK utility的使用

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

9. 用keil MDK上传程序

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

  1. 点击魔术棒打开配置界面,选择自己的编程器
    keil MDK5搭建STM32开发环境

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

  3. 也许会遇到Error: Flash download failed-“Cortex-M4”的错误,记得检查这一步的设置
    keil MDK5搭建STM32开发环境

  4. 然后点download就可以下载了
    keil MDK5搭建STM32开发环境

后记

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

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

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

详情见:
STM32CubeMX介绍、下载与安装:
http://blog.csdn.net/ybhuangfugui/article/details/52225736

STM32CubeMX使用方法及功能介绍:
http://blog.csdn.net/ybhuangfugui/article/details/52264403

STM32CubeMX新建工程+基本IO配置过程:
http://blog.csdn.net/ybhuangfugui/article/details/52281260

STM32CubeMX使用例程
http://www.waveshare.net/study/portal.php?mod=list&catid=40&page=2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142838.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SDL_Delay函数

    SDL_Delay函数用此函数来暂停指定的时间,单位为ms。voidSDL_Delay(Uint32ms)参考文章:http://blog.csdn.net/vagrxie/article/details/5735979http://www.cppblog.com/lf426/archive/2008/04/28/48325.html蔡军生C++培训

  • volatile关键字作用

    volatile关键字作用一、作用简述内存可见性:保证变量的可见性:当一个被volatile关键字修饰的变量被一个线程修改的时候,其他线程可以立刻得到修改之后的结果。当一个线程向被volatile关键字修饰的变量写入数据的时候,虚拟机会强制它被值刷新到主内存中。当一个线程用到被volatile关键字修饰的值的时候,虚拟机会强制要求它从主内存中读取。 屏蔽JVM指令重排序(防止JVM编译源码生成class时使用重排序)…

  • vr全景制作常用的app有哪些,vr全景拍摄真的难吗?[通俗易懂]

    ​现在互联网发展得很快,从2G网络逐渐进步到5G网络,线上的营销方式也逐渐从文字转变为图片营销。图像呈现出来的效果更能打动用户,也更能吸引用户的注意力,对成交更有帮助。vr全景图展示是很多企业都在使用的一种技术,提高用户的信任度,增强用户粘性。那么vr全景制作app有哪些和vr全景拍摄难吗?下面就给大家简单讲一下吧。一般来说,大多数摄影师都使用鱼眼镜头、单反相机设备来拍摄所需的vr全景图,操作方法比较简单,但是拍摄完我们还需要来处理这个图片,这些步骤就比较麻烦了。vr全景制作app有哪些关于

  • BootStrap初始

    序言什么是BootstrapBootstrap是Twitter开源的基于HTML、CSS、JavaScript的前端框架。它是为实现快速开发Web应用程序而设计的一套前端工具包。它支持响应式布

  • python学习——pandas查看数据集null值:isnull

    python学习——pandas查看数据集null值:isnull在数据集中,可能有些字段下会有null值,我们在进行数据处理的时候,不能视而不见,可以使用isnull查看是否有空值In:all_dummy_df.isnull().sum().sort_values(ascending=False).head(10)Out:LotFrontage486GarageYrBlt159MasVnrArea23…

    2022年10月20日
  • 现在在人工智能发展方面已经有了一些泡沫_人工智能毁灭人类

    现在在人工智能发展方面已经有了一些泡沫_人工智能毁灭人类本文3560字,建议阅读9分钟。本文对人工智能在2020年的发展态势进行分析。对付泡沫的有效方法,就是用另一个更大的泡沫包住它,这也是常说的「嵌套式泡沫」。如果要追求可持续繁荣,必须要同时做到两件事:小心地把里面的虚假消掉、认真地把外面的空间做大。身处人工智能巨轮上的我们,越来越频繁地听人谈论起人工智能过快增长而导致泡沫丛生,独角兽越来越多,但跑出资本怪圈独立生长的却寥寥…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号