由于原来的STM32F103ZET6的flash坏掉了,所以又买了一块STM32F429DISCOVERY,这块板子非常不错,基于Cortex-M4内核,自带一块2.4寸TFT触屏,主频为180M,且内置了ST-Link下载器,使用非常的方便。

近期参加校赛,用它的触屏写了个上位机,当时我是在实验室的电脑和我的平板电脑之间相互拷贝工程,由于ST官方的工程都是公用库文件,所以独立性不强,想要拷贝就得拷贝整个目录,为了解决这个问题,我仔细学习了官方工程的组成与调用,并成功的将所有文件分离出来,建立了一个独立的工程文件夹,以后再拷贝时,只需要将这单个工程拷贝出来,即可方便的移植,其间有不少小插曲,下面就对具体步骤进行详述。

一、建立工程文件夹体系

①首先得建立总的工程目录,我将它命名为STM32F429PROJ,并在其内建立Library、MDK-ARM、USER文件夹,如下图所示:

其中MDK-ARM放置启动文件,USER放置工程、主函数和中断函数,Library放置各类库函数。

②接下来进入Library内,建立Common、Discovery、DRIVER目录,它们用于放置各类库,其中Discovery中放置的是特色库,例如板上的TFT驱动程序,而DRIVER中则放置一些基本的库,和M3内核的库基本一致。而Common中为它们共同访问的基本库,如下图所示:

经过这两步之后,工程文件夹就制作完成了。

二、复制官方库中相应文件到工程文件夹:

STM32F429I-Discovery_FW_V1.0.0在官方可以下载,这是官方的库,我们需要把库文件复制到我们的工程下,具体操作如下:

①USER:由于我们建立触控工程.因此需要打开如下路径:

\STM32F429IDiscovery_FW_V1.0.0\Projects\Peripheral_Examples\Touch_Panel

将它下面这些文件拷贝到我们工程的USER目录内

②MDK-ARM:其内放置的启动文件,启动文件在官方工程的如下路径

\STM32F429I-Discovery_FW_V1.0.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm

将其中的startup_stm32f429_439xx.s复制到我们工程的MDK-ARM下。

③Library的Common:打开如下路径:

\STM32F429I-Discovery_FW_V1.0.0\Utilities\Common

将其中的所有文件拷贝到我们的Common目录下。

④Library的Discovery:首先在Discovery目录下建立inc与src目录,其中inc用于放置头文件,而src用于放置c文件,二者一一对应。

拷贝如下路径的所有.c文件到我们Discovery目录下的src:

\STM32F429I-Discovery_FW_V1.0.0\Utilities\STM32F429I-Discovery

同样将其中的.h文件拷贝到我们的inc中。

⑤Library的DRIVER:首先也是要建立inc与src,然后打开如下路径:

\STM32F429I-Discovery_FW_V1.0.0\Libraries\STM32F4xx_StdPeriph_Driver

将其中的inc与src分别拷贝到我们DRIVER目录下的inc与src中。

到现在为止,文件操作到此结束,下面是工程配置。

三、建立工程与配置

①关于Keil工程的建立方式我就不赘述了,注意的是选择芯片STM32F429ZI,不添加驱动文件。

下面是对工程的配置,首先单击快速工具栏的品字图标,打开工程配置,然后按如下的图片添加文件:

然后点击确认,这时所有的c文件和启动文件都添加进来了。

②添加h文件的目录:打开工程设置,选择C/C++选项卡,在下面的Include Path右面的“...”点击一下,打开配置页面,进行如下配置:

接下来配置宏定义,仍然是C/C++选项卡,上侧的Define内填入如下内容:

USE_STDPERIPH_DRIVER,STM32F429_439xx,USE_STM32F429I_DISCO,

③下面选择Debug选项卡,勾选最上面一栏右侧的Use左侧圆点,选择ST-Link Debugger,打开Settings,如下配置:

④继续保持上面的窗口不关闭,打开Flash Download选项卡,添加如下设备描述:

经过这些配置,一个完整的工程就建立完毕了。接下来点击全部编译,没有意外的话会得到0 warning与0 error的工程,以后使用这个模板,会非常方便。

完整工程的下载地址如下:

http://down.51cto.com/data/1282075

STM32F429学习笔记(一)触屏工程Keil建立的更多相关文章

  1. Windows phone 8 学习笔记(1) 触控输入

    原文:Windows phone 8 学习笔记(1) 触控输入 Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此 ...

  2. 移动终端学习2:触屏原生js事件及重力感应

    如今智能移动设备已经渗透到人们生活的方方面面,用户数量也在不断迅速增长(市场研究机构 eMarketer 在今年初发表的趋势报告中预测,2014年至2018年,中国智能手机用户从总人口的 38.3%增 ...

  3. Sparse Filtering 学习笔记(三)目标函数的建立和求解

      Sparse Filtering 是一个用于提取特征的无监督学习算法,与通常特征学习算法试图建模训练数据的分布的做法不同,Sparse Filtering 直接对训练数据的特征分布进行分析,在所谓 ...

  4. Ruby学习笔记4: 动态web app的建立

    Ruby学习笔记4: 动态web app的建立 We will first build the Categories page. This page contains topics like Art, ...

  5. 【小梅哥SOPC学习笔记】NIOS II工程目录改变时project无法编译问题

    解决NIOS II工程移动在磁盘上位置后project无法编译问题 说明:本文档于2017年3月4日由小梅哥更新部分内容,主要是增加了讲解以Quartus II13.0为代表的经典版本和以15.1为代 ...

  6. Windows phone 8 学习笔记(1) 触控输入(转)

    Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此在输入方式上引入一套全新的触控操作方式,我们需要重新定义相关的事 ...

  7. COCOS学习笔记--单点触控

    这篇博客来总结下cocos单点触控的相关内容: 我们在Layer类的源代码中能够看到.Layer类提供了一下4个与屏幕单点触控相关的回调方法: onTouchBegan().onTouchMoved( ...

  8. 6.JasperReports学习笔记6-jasperreports和ssh工程整合

    转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html 一.导入jasperreport相关jar包,这里采用当前比较稳定的5. ...

  9. sql 入门经典(第五版) Ryan Stephens 学习笔记  第四部分:建立复杂的数据库查询/

    第十三章: 在查询表里结合表 1.等值结合 : // 选择 tabla_a 和table_b 中id相等的行,输出 他们的id 和name select table_a.id , table_a.na ...

随机推荐

  1. iOS开源加密相册Agony的实现(四)

    简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...

  2. Redis源码学习:Lua脚本

    Redis源码学习:Lua脚本 1.Sublime Text配置 我是在Win7下,用Sublime Text + Cygwin开发的,配置方法请参考<Sublime Text 3下C/C++开 ...

  3. antlr 4新特性总结及与antlr v3的不同

    antlr 4新特性总结及与antlr v3的不同 学习曲线低.antlr v4相对于v3,v4更注重于用更接近于自然语言的方式去解析语言.比如运算符优先级,排在最前面的规则优先级最高: 层次更清晰. ...

  4. 使用DWR实现自动补全 类似百度搜索框的自动显示效果

    使用DWR实现自动补全 自动补全:是指用户在文本框中输入前几个字母或汉字的时候,自动在存放数据的文件或数据库中将所有以这些字母或汉字开头的数据提示给用户供用户选择 在日常上网过程中,我们经常使用搜索引 ...

  5. iOS中 最新微信支付/最全的微信支付教程详解 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 亲们, 首先让我们来看一下微信支付的流程吧. 1. 注册微信开放平台,创建应用获取appid,appSecret, ...

  6. python的u'字符串"(字符编码):字符串前有u,表示字符串以unicode格式存储

    举个例子 >>> s = u'\u6ce8\u91ca' >>> s u'\u6ce8\u91ca' >>> print s 注释 >> ...

  7. 【Unity Shaders】Mobile Shader Adjustment—— 什么是高效的Shader

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  8. Java进阶(三十一) Web服务调用

    Java进阶(三十一) Web服务调用 前言 有朋友问了一个问题:如何调用已知的音乐服务接口,服务文档如下: https://www.evernote.com/shard/s744/sh/c37cd5 ...

  9. UNIX环境高级编程——守护进程

    一.守护进程简介 守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程常常在系 ...

  10. nginx root、alias、location指令使用方法

    一.nginx root指令 1. Nginx配置 相关配置如下图: 通过配置root目录到"/wwwroot/html/"位置 在用虚拟主机方法,主机名称是test,需要大家配置 ...