嵌入式开发学习之--创建工程

news2024/11/18 13:57:37

提示:本篇文章依旧是了解为主,实际做项目时直接找开源的类似项目做模板更效率。

文章目录

  • 一、前言
  • 二、新建工程
  • 三、使用模板工程
  • 四、总结


一、前言

  前面的学习,都是文件内的代码联系,这一篇,是学习文件与目录的联系。当然你可以依据这些理论创建自己风格的工程,但是我更建议新手的话还是找模板,直接在上面改比较好。


二、新建工程

  首先得先建立一个文件目录用来存放工程。这不管什么语言什么开发环境都要如此。我们创建一个很不专业的文件目录“点亮红灯”,可以看到这时它还是一个空文件夹。

在这里插入图片描述

  接着打开keil5,找到new project。

在这里插入图片描述

  选择我们新建的目录作为新工程的地址。

在这里插入图片描述

  保存以后会弹出这个界面,是让你选择你的工程所应用的芯片。

在这里插入图片描述

  找到自己开发应用的芯片型号点ok。

在这里插入图片描述

  点击ok以后,弹出这个界面,让你添加库文件,不添加直接点ok。

在这里插入图片描述

  接着一个空空的工程模板就创建好了。

在这里插入图片描述
  我们打开刚刚创建的空目录,发现里面已经创建了一些东西,这些就是刚刚创建工程时keil自己创建的。先不去管它,我们现在有了工程,那么需要往工程里添加各种文件。先尝试把“点亮led灯上”中用到的三个文件copy到这个里面,看看效果。

在这里插入图片描述
在这里插入图片描述
  回到keil界面,显然虽然文件夹里多了几个文件,但是keil工程并不知道,右键Target1,出现如下列表,Add Group可以在工程里创建一个新的目录,Manage Project Items…就可以将我们想要的文件,我们尝试创建一个目录,然后再添加一下文件。

  创建一个新目录

在这里插入图片描述
  添加文件

在这里插入图片描述
  选择add files

在这里插入图片描述

  可以看到目录下只有main.c,那是类型默认了(*.c),改成所有文件ALL files.

在这里插入图片描述

  目录下所有文件都出来了,选择刚刚丢进去的点灯三件套,挨个add进自己的工程。

在这里插入图片描述

  可以看到在Source Group 1目录下已经多了三个文件,选择ok。

在这里插入图片描述
在这里插入图片描述

  这样工程已经建立好了,接着我们编译一下,然后再打开目录“点亮红灯”中的objects,还有listings,发现里面已经创建了一些文件。显然这两个文件夹就是存储编译过程中生成的一些中间文件的。

在这里插入图片描述
在这里插入图片描述
  然后我做了这么个测试,把这两个文件目录删除,再次编译。看看是否会出错,测试结果是没有出错,并且再一次创建了这两个文件目录,然后又把中间文件塞进去了。那我一定要改怎么办,打开keil工程的魔术棒,output可以和listing下都有一个slesct,这就是选择生成文件存储的地址,我选择在object里再创建一个新建文件夹,然后选择编译。

在这里插入图片描述
  可以看见编译报错了。
在这里插入图片描述

  我接着将目录的名字改为demo1,再一次进行编译,编译通过。这里有一个重点:不要用中文作为文件、目录的名字。

在这里插入图片描述

  打开demo1中查看一下,中间文件成功存在这里了。

在这里插入图片描述

三、使用模板工程

  打开野火源代码“10-新建工程–固件库版本”,点开object->RVMDK,里面带keil图标的就是启动工程文件。直接在里面创建、添加自己的文件就好了。

在这里插入图片描述

  各目录规划。

在这里插入图片描述

  这是正点原子的模板

在这里插入图片描述
  还有各种开源软件,比如最知名的github,国内的coding,gitee等等,上面都有着很多开源的代码分享,找一个合适的去改编,可以极大提升效率。


四、总结

  这篇文章只需要了解如何在野火提供的模板上增加、删除自己的文件,再就是一定要记得不要用中文作为文件目录的名字,容易出一些很清怪的问题。下一篇开始写具体实验,总看理论感觉怪怪的,写起来也是怪怪的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字信号处理-8-自相关

1 皮尔森相关系数 假设 x 和 y 均为 N 个样本的数组,皮尔森公式如下: 皮尔森相关系数总是在 -1 到 1 之间(包含这两个字)。ρ 的绝对值意味着相关性的强度。ρ 接近 1 表示强正相关;ρ 接近 -1 表示强负相关&#xf…

上传文件很费时费力?那是你没用对方式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、前端直传的优点二、实现步骤2.1、后端方面2.1.1 添加依赖2.1.2 增加接口2.1.3 测试接口2.2、前端方面2.2.1 安装 cos-js-sdk-v5 依赖2.2.2 新建组件2.2.3 使…

你的哪些SQL慢?看看MySQL慢查询日志吧

前言 在项目里面,多多少少都隐藏着一些执行比较慢的SQL, 不同的开发测试人员在平时使用的过程中多多少少都能够遇到,但是无法立马有时间去排查解决。那么如果有一个文件能够将这些使用过程中比较慢的SQL记录下来,定期去分析排查,…

meta视口标签

属性解释说明width宽度设置的是viewport宽度,可以设置device-width特殊值initial-scale初始缩放比,大于0的数字maximum-scale最大缩放比,大于0的数字minimum-scale最小缩放比,大于0的数字user-scalable用户是否可以缩放&#xff0…

关于我们编写好的java程序是如何运行部署的

了解如何去查看项目如何运行怎么部署java项目部署到服务器的程序和在本地运行的程序有什么不同java中的Class文件是如何形成的Class文件如何执行的怎么部署java项目 首先宏观的说一下,程序的运行都是要有一个启动入口的,也就是我们经常说的main函数是程…

【Shell 脚本速成】03、Shell 脚本实战案例(一)数据磁盘初始化

目录 一、案例应用场景 二、案例需求 脚本所需相关知识点 三、案例算法 四、代码实现 五、实现验证 一、案例应用场景 生产环境中的服务器一般会分为系统盘和数据盘两种磁盘,以dell R730举例,该服务器是一个2U的机架式服务器,满载可以挂…

HTML+CSS简单的网页制作期末作业——浙江旅游景点介绍网页制作

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…

Redisson分布锁原理分析及源码解读

本文源码解读基于Redisson 3.18.0 版本 Redisson分布锁实现原理 Redisson锁实现基本原理大致如下图所示: 客户端执行Lua脚本去获取锁,如果获取失败,则订阅解锁消息,并挂起线程。 客户端解锁时执行一段Lua脚本,删除锁的…

[附源码]计算机毕业设计JAVA课程资源系统管理

[附源码]计算机毕业设计JAVA课程资源系统管理 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

PowerJob 定时从SFTP下载文件拆的坑

一. 业务需求 SFTP上有多个目录, 每小时要下载一次文件, 每个目录的下载任务都是一个独立的工作流任务. 二.问题描述 手动执行每个任务可以正常执行, 但是当所有任务都开启定定时任务执行时(每小时执行一次),任务实例就会报错. 三.问题分析 查看服务端和worker端的日志, …

数据采集-“消防知识网上答题挑战赛”题库

为普及消防法律法规和消防安全知识,提升全员消防安全意识,提高抗御火灾、自防自救和组织疏散能力,集团公司近日部署11月份集中开展消防宣传月活动。 为“全民消防”营造浓厚氛围,集团公司以消防知识为主要内容,整理形…

关于如何快速学好,学懂Linux内核。内含学习路线

学习linux内核,这个可不像学一门语言,c或者java一个月或者3月你就能精通掌握。学习linux内核是需要一步一步循序渐进,掌握正确的linux内核学习路线对学习至关重要,本篇文章就来分享学习linux内核的一些建议吧。 1. 了解操作系统基…

nginx(六十一)proxy模块(二)修改发往上游的请求

一 修改发往上游的请求 重点: 利用指令更改转发给上游服务器的HTTP报文的内容1) 请求行 --> proxy_method、url、proxy_http_version2)请求头 --> proxy_set_header、proxy_pass_request_headers3)请求体 --> proxy_pass_request_b…

SpringBoot入口深入

这里写目录标题1.run()1.1 程序运行监听器 SpringApplicationRunListeners1.2 应用参数 ApplicationArguments启动加载顺序1.run() run()方法是一个SpringBoot程序的入口 SpringApplication.run(Application.class, args);看看方…

OVIS数据集代码解析

OVIS数据集代码解析 OVIS数据集格式整体和COCO类似,但是是以video的形式存储的,对应的解析代码见:https://github.com/qjy981010/cocoapi/blob/main/PythonAPI/pycocotools/ovis.py。 由于OVIS仅train提供了标注,因此&#xff0…

前端埋点实现方案

前言 领导今天又来活了😣,要记录每个页面的停留时间,以及页面的操作,是由哪个页面跳转过来的,给每个页面生成GUID上报给服务端,并且需要携带设备型号和设备唯一标识🙄 名称解释 UV&#xff0…

蓝牙运动耳机排行榜,目前排名最好的运动耳机推荐

对于运动人士来说,运动过程中佩戴着耳机听歌,既能让运动变得更加激情有动力,同时还能释放压力,放松心情。在选择运动耳机方面的要求也高,运动耳机不仅需要佩戴稳固舒适,它的防水性能也不能差,当…

Java并发常见面试题(一)

进程和线程 进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建、运行到消亡的过程。 在Java中,当我们启动main函数其实就是启动了一个JVM进程,而main函数所在的线…

封装自己的 jquery 框架

说到jquery,那就给大家先简单的介绍一下什么是jquery jquery是JavaScript函数的一种封装。jQuery封装了JavaScript常用的功能代码(函数),提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Aja…

机器人运动学【2】

目录1.刚体状态的表达2.顺向运动学及DH表3.逆向运动学1.刚体状态的表达 我们前面已经学习了刚体移动和转动的表达,那么怎么将两者在数学上结合呢?这里我们开始构造如下矩阵,记作: 下面我们来看一下只有移动情况下的刚体的描述: …