近来上ARM选修课找老师借了STM32来玩玩,准确来说是一块集成icore3和CycloneIV的双核心板。
 之前一直以为keil是专门为51单片机而设计的,没想到比想象中的要强大(怪我太辣鸡==),C语言是独立于指令集的高级语言,大部分情况下代码都是一致的,但是不同单片机厂商和各家的IDE头文件定义形式不同或者编译器解释(编译)差别等等,造成了不同的开发环境,就好比用IAR也能开发51一样。
 新手刚开始接触STM32F407,以最简单的LED闪烁来说说keilMDK的工程创建步骤:

1.下载标准固件库

 ST官方提供的固件库实际上就是一些底层,提供用户函数调用的接口,减少了用户对寄存器的直接操作。

  • Libraries 里面是驱动库的源代码及启动文件
  • Project 用驱动库写的例子和工程模板
  • Utilities 官方评估板对应的一些源码,和第三方软件库,如emwin图形软件库、fatfs文件系统
  • .chm 是固件库帮助文档

2.创建自己的工程模板

 合理的工程结构使得开发变得简单维护起来也比较方便,首先说明几个建立工程模板所必要的文件

  • core_cm4.h 提供进入M4内核接口
  • stm32f4xx.h 是 STM32F4 片上外设访问层头文件
  • system_stm32f4xx.h 片上外设接入层系统头文件,主要是申明设置系统及总线时钟相关的函数,、对应的system_stm32f4xx.c是在系统启动的时候用来设置系统的整个系统和总线时钟。
  • stm32f4xx_it.c、stm32f4xx_it.h 中断相关
  • stm32f4xx_conf.h 外设驱动配置
  • stm32f3xx_rcc.c 和 stm32f4xx_rcc.h 是与 RCC 相关的一些操作函数
  • startup_stm32f40_41xxx.s 重要的启动文件

下面就来建立一个自己的工程模板,首先建立下面几个文件夹:

 其中DERIVER用来放置外设库文件以及启动文件(将 \Libraries 下的STM32F4xx_StdPeriph_Driver复制到其中),MDK-ARM用来放置工程文件,USER则是用户自己创建的自定义功能文件
 这里要注意一点,可以删除main.h,将stm32f4xx_it.c中间的#include "main.h"以及SysTick_Handler()函数里面的TimingDelay_Decrement()函数注释掉即可

 下面正式建立一个工程,类似51单片机建立步骤将工程放在MDK-ARM目录下,具体可以省略了,弹出的Mnange Run 窗口点击 Cancel
 在左栏工程目录下右键选择 Manage Projct Iterms 并添加如图所示的源文件

3.LED实现

贴一波程序....实现LED闪烁还是比较容易的,主要利用官方给的底层就行.

4.折腾了好久的一个小问题

按照上述步骤之后,就连编译一个最简单的 mainwhile(1) 循环老是出错

Fatal error: L6002U: Could not open file main.o: No such file or directory

后面一大串的地址,比如 C:\User\王某某...... .o后缀文件是编译过程中产生的,每个文件都生成.o文件,再把所有的.o文件链接成最后的执行程序,具体解决方法是,在电脑的高级系统设置下修改环境变量temp和tmp


C:\useramily这个是文件夹名可以随意,但是可能你发现修改了这个之后依然无法成功编译,重点在这,你需要先在C盘创建这个文件夹,然后再修改!!!这个坑跳了半天才跳出来....


哇,久违的写文章,实在是被这个创建工程弄的很烦,下一个可以考虑 vivado 工程创建。
2016/4/11
    amilyxy

转载于:https://www.cnblogs.com/amilyxy/p/6702549.html

关于Keil-MDK相关推荐

  1. 使用Keil MDK以及标准外设库创建STM32工程

    应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板,个人录制,欢迎指正.下载地址:http://dl.dbank.com/c0w0ehqynd 2013.3补充在线视频教程 ...

  2. Keil MDK下如何设置非零初始化变量(转)

    源:Keil MDK下如何设置非零初始化变量 一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备.而keil mdk在默 ...

  3. KEIL MDK LIB库文件的制作

    作者:yangluoning <KEIL MDK LIB库文件的制作> 来源:CSDN  原文:https://blog.csdn.net/yangluoning/article/deta ...

  4. Keil MDK 中利用串口及c标准库函数printf为cortex-m3做调试输出(lpc1788)

    摘要: c标准库的printf是输出给显示器的,将printf函数进行修改,使其输出重定向至串口,就能实现目的.printf函数调用fputc函数完成实质输出单一字符的工作,因此将fputc函数修改使 ...

  5. 浅析Codewarrior、IAR和Keil MDK三大开发环境优缺点

    来源:没看到来源,抱歉..向无名大神致敬啊.. 今天打算拿出来几个IDE对比一下它们的优点和缺点,好给刚入门的初手一些参考.为 了避免存在误人子弟之嫌,我不会以我个人偏好下定义哪款好用哪款不好用,这里 ...

  6. Keil MDK在个别电脑上下载程序失败的解决办法

    文章原始地址: http://feotech.com/?p=90 Keil MDK在个别电脑上无法下载程序 Keil MDK下载程序时显示 No Cortex-M SW Device Found (本 ...

  7. KEIL MDK 仿真时程序”乱跑“问题

    最新有同学反应自已的程序在KEIL MDK仿真时按单步运行(F10),程序运行顺序不是按自已想要的顺序来操作的,其实这个原因多半是因为程序的编译优化等级设置较高导致: 优化等级高可以减小代码空间,很多 ...

  8. ARM Keil MDK开发STM32工程模板

    使用Keil MDK开发STM32的工程模板 源代码工程 https://github.com/chenhaifeng2016/Band

  9. (2)stm32开发之使用Keil MDK以及标准外设库创建STM32工程

    通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间内甚至都无法完全自己建立一个工程,很多人只是依赖标准外设库或给定的工 ...

  10. arm汇编指令集_1. 从0开始学ARM安装Keil MDK uVision集成开发环境

    关于ARM的一些基本概念,大家可以参考我之前的文章:<0.到底什么是Cortex.ARMv8.arm架构.ARM指令集.soc?一文帮你梳理基础概念[科普]> 0. 如何学习arm? AR ...

最新文章

  1. java swing实现计算器_Java swing实现的计算器功能完整实例
  2. maya怎么贴膜_maya怎么渲染成白膜?
  3. [2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 论文简析
  4. python激活虚拟环境source不是内部或外部_激活虚拟环境的问题
  5. MyBatis知识点学习
  6. ORA-00257 archiver error. 错误的处理方法
  7. imageio.write页面怎么显示_微信吃喝玩乐怎么没有了?微信支付页面吃喝玩乐在哪里...
  8. 在html中加入滚动条,html滚动条 textarea属性设置
  9. cakephp index.php,CakePHP - 中文手册
  10. 和画意思相近的字_画字五行属什么,画字在名字里的含义,画字起名的寓意_卜易居起名字典...
  11. 向量与矩阵(点线距离与交点)
  12. Spark综合学习笔记(五)SparkStreaming介绍
  13. wordpress 数据库_如何一键优化您的WordPress数据库
  14. Idea 设置Eclipse快捷键
  15. java-IOC(控制反转) 理论推导
  16. 团队作业1---团队展示
  17. 店盈通:你肯定不知道,拼多多如何打造基础销量
  18. ISTQB基础级备考攻略
  19. 函数——哥德巴赫猜想
  20. 虚拟磁盘格式转换:vdi - raw - qcow2

热门文章

  1. 基于spring cloud 的灰度发布实践_【收藏】基于spring cloud灰度发版方案
  2. 液晶弹性自由能计算_自由能方法应用(一)开放计算平台BRIDGE的介绍及使用案例...
  3. redis -cli command not found_记一次 Linux 服务器 redis 漏洞分析
  4. oracle 截取时间至小时,如何在pandas中构造/取整到小时的本地化日期时间列
  5. mysql 禁止插入重复数据_防止MySQL重复插入数据的三种方法
  6. 网站负责人委托书_关于网站负责人授权委托书的阿里云网站内容
  7. python 打印表格边框_python设置表格边框的具体方法
  8. linux内核之旅ppt_一起玩转 Linux 内核之旅开源社区吧
  9. java 字符串赋值_Java 学习笔记(二)变量
  10. tcpdump源码分析——抓包原理