由于原来的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. 关于前端HTML你需要知道的一切

    1.H系列标签(Header 1~Header 6) 作用: 用于给文本添加标题语义 格式: <h1>xxxxxx</h1> 注意点: H标签是用来给文本添加标题语义的, 而不 ...

  2. CoreAnimation动画结构变量

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...

  3. GridView如何适配不同屏幕

    GridView和ListView一样,都是项目中常用的控件之一,那么本篇文章要讲的是GridView如何适应不同大小的屏幕,首先,我们来看一张效果图,如下: 每行为四个item,上下左右间距大概2d ...

  4. 22 Notification 通知栏代码

    结构图: MainActivity.java package com.qf.day22_notification; import android.app.Activity; import androi ...

  5. Dynamics CRM 自定义上传附件的图片悬浮层显示

    CRM中的附件是以流的形式保存在了数据库中,这样做的一个坏处是一旦系统运行时间久,附件上传的多了势必会导致数据库极速扩大,即影响系统的运行效率也对后期的迁移维护带来了不必要的麻烦.所以很多的客户都会要 ...

  6. [virtualenv]生产环境中使用virtualenv

    virtualenv 对于python开发和部署都是好工具,可以隔离多个python版本和第三方库的版本,这里作者总结了几个常用python服务怎么样结合virtual部署 原文链接 Python 中 ...

  7. JDBC编程-事务编程(四)

    事务的概念 事务的概念在我看来是指的是一组sql序列,这个序列是一块执行的单位,要么全部执行,要不全部执行,这样可以很好的对数据库进行并发控制. 因为数据库是多个用户都可以同时操作的,如果多个用户同时 ...

  8. 3.2、Android Studio在物理设备中运行APP

    当你构建一个Android应用时,在发布给用户之前,在物理设备上测试一下你的应用是非常必要的. 你可以使用Android设备作为运行.调试和测试应用的环境.包含在SDK中的工具让你在编译完成后在设备中 ...

  9. GCD API 理解 (一)

    资料先行 GCD 深入理解:第一部分 GCD 深入理解:第二部分 以上两篇文章是关于GCD讲的比较好的文章,翻译自raywenderlich,该网站有很多关于iOS 开发的优秀文章. 引子 iOS 开 ...

  10. iOS开发中的零碎知识点笔记 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 1.关联 objc_setAssociatedObject关联是指把两个对象相互关联起来,使得其中的一个对象作为另外 ...