1. 前言

笨叔,又要开始扯淡了!!! 不感兴趣的同学,可以跳过了!!!

笨叔之前在大学里面, 刚接触单片机时。就被 windows 平台 例如 keill 5 、IAR 等一堆开会环境差点劝退。 当时也是坚持咬牙一点点摸索过来的。刚摸索明白,觉得单片机 功能也不是特别强大。 就依然决然的投入到了 嵌入式linux平台的开发中去了。 一直到现在工作了很多年,完全舍弃了 windows。

最近突然心血来潮,想在玩玩单片机。 发现 又要开始在 windows 平台, 倒腾 MDK5 ,甚是暴躁。

然后,看网上好像相关资料也不是很多,讲的也一般般。 我就想,要不我来探索一下, 顺便整理一下,分享出来。希望能帮助到 此刻 也同样感兴趣的你吧。

网上一堆教你如何在 MDK5 或者 IAR 集成开发环境里面来开发 nRF52832 的, 看的我 头大啊!!! 到目前我准备写这篇 文章时,我都没有搞明白如何在 windows 下开发。 太难了, 老子蜀道山。赶快滚吧!!! 什么 鬼玩意!

2. linux 下新建一个工程

1. 工程准备阶段

  1. 随便 创建一个文件夹:
mkdir nrf_projectleo@leo:~/data_4t/nrf_project$ tree -L 1
├── nRF5_SDK_17.1.0_ddde560  # 将 SDK 放到该目录下
  1. 创建一个 led_app , 他将是你 第一个工程的名字
leo@leo:~/data_4t/nrf_project$ mkdir led_app
leo@leo:~/data_4t/nrf_project$ cd led_app/
leo@leo:~/data_4t/nrf_project/led_app$ 
  1. 从 SDK …/nRF5_SDK_17.1.0_ddde560/examples/peripheral/blinky 中 cp 一个工程过来

leo@leo:~/data_4t/nrf_project/led_app$ cp ../nRF5_SDK_17.1.0_ddde560/examples/peripheral/blinky/* ./ -rf
  1. 删掉无关的 目录
leo@leo:~/data_4t/nrf_project/led_app$ rm pca10040e  pca10056  pca10056e  pca10059  pca10100e -rfleo@leo:~/data_4t/nrf_project/led_app/pca10040$ rm mbr  s132 -rfleo@leo:~/data_4t/nrf_project/led_app/pca10040/blank$ rm arm5_no_packs iar ses -rf

操作完上述步骤后,我们的工程目前应该是这个样子:

leo@leo:~/data_4t/nrf_project/led_app$ tree
.
├── blinky.eww
├── hex
│   ├── blinky_pca10040e.hex
│   ├── blinky_pca10040e_mbr.hex
│   ├── blinky_pca10040.hex
│   ├── blinky_pca10040_mbr.hex
│   ├── blinky_pca10040_s132.hex
│   ├── blinky_pca10056e.hex
│   ├── blinky_pca10056e_mbr.hex
│   ├── blinky_pca10056.hex
│   ├── blinky_pca10056_mbr.hex
│   ├── blinky_pca10059_mbr.hex
│   ├── blinky_pca10100e.hex
│   └── license.txt
├── main.c
└── pca10040└── blank├── armgcc│   ├── blinky_gcc_nrf52.ld│   └── Makefile└── config└── sdk_config.h5 directories, 17 files

2. 配置工程

  1. 修改 makefile
leo@leo:~/data_4t/nrf_project/led_app$ vim pca10040/blank/armgcc/Makefile

# 修改为你自己的工程
#PROJECT_NAME     := blinky_pca10040
PROJECT_NAME     := led_app# 替换成你 SDK 的绝对目录
#SDK_ROOT := ../../../../../..
SDK_ROOT := /home/leo/data_4t/nrf_project/nRF5_SDK_17.1.0_ddde560# 替换你自己工程的目录
#PROJ_DIR := ../../..
PROJ_DIR := /home/leo/data_4t/nrf_project/led_app

3. 编译运行

  1. 编译

leo@leo:~/data_4t/nrf_project/led_app/pca10040/blank/armgcc$ make 
mkdir _build
cd _build && mkdir nrf52832_xxaa
Assembling file: gcc_startup_nrf52.S
Compiling file: nrf_log_frontend.c
Compiling file: nrf_log_str_formatter.c
Compiling file: boards.c
Compiling file: app_error.c
Compiling file: app_error_handler_gcc.c
Compiling file: app_error_weak.c
Compiling file: app_util_platform.c
Compiling file: nrf_assert.c
Compiling file: nrf_atomic.c
Compiling file: nrf_balloc.c
Compiling file: nrf_fprintf.c
Compiling file: nrf_fprintf_format.c
Compiling file: nrf_memobj.c
Compiling file: nrf_ringbuf.c
Compiling file: nrf_strerror.c
Compiling file: nrfx_atomic.c
Compiling file: main.c
Compiling file: system_nrf52.c
Linking target: _build/nrf52832_xxaa.outtext	   data	    bss	    dec	    hex	filename2776	    112	    172	   3060	    bf4	_build/nrf52832_xxaa.out
Preparing: _build/nrf52832_xxaa.hex
Preparing: _build/nrf52832_xxaa.bin
DONE nrf52832_xxaaleo@leo:~/data_4t/nrf_project/led_app/pca10040/blank/armgcc$ tree -L 2
.
├── blinky_gcc_nrf52.ld
├── _build
│   ├── nrf52832_xxaa
│   ├── nrf52832_xxaa.bin
│   ├── nrf52832_xxaa.hex
│   ├── nrf52832_xxaa.in
│   ├── nrf52832_xxaa.map
│   └── nrf52832_xxaa.out
└── Makefile2 directories, 7 files
  1. 烧录运行
leo@leo:~/data_4t/nrf_project/led_app/pca10040/blank/armgcc$ make flash 
DONE nrf52832_xxaa
Flashing: _build/nrf52832_xxaa.hex
nrfjprog -f nrf52 --program _build/nrf52832_xxaa.hex --sectorerase
Parsing hex file.
Erasing page at address 0x0.
Applying system reset.
Checking that the area to write is not protected.
Programming device.
nrfjprog -f nrf52 --reset
Applying system reset.
Run.

此时不出意外,你将 会在你的板子上看到一个跑马灯。

3.总结

是不是在 linux 下创建一个自己的工程 比 windows下捣鼓 MDK5 容易多了啊。

再次声明一下: 笨叔叔,理解有限。欢迎 评论, 一起探讨。 如果觉得 我的文字对你有点用,请你点赞支持一下, 笨叔将开启爆肝模式,疯狂输出。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring-loC与DI

目录 1 loC控制反转思想 2 DI依赖注入 3 loC详解 3.1 存储Bean (1)Controller (2)Service (3)Repository (4)Component (5)Configuration &#xf…

职业本科单片机与嵌入式技术实训室建设设想

一、引言 在当今数字化与智能化飞速发展的时代,单片机与嵌入式技术作为信息技术领域的关键支撑,广泛应用于工业控制、智能家居、物联网、汽车电子等众多行业,成为推动产业升级和创新发展的核心驱动力。职业本科教育旨在培养适应生产、建设、…

传统消防演练与 VR 消防演练的区别有哪些

演练形式:传统消防演练往往依托真实的场地,像空旷的广场、废弃的建筑物或是专门的消防训练基地等。参与者能触摸并使用实实在在的消防设备,例如干粉灭火器、二氧化碳灭火器、消防水带等。在演练时,会通过点燃模拟火源、释放烟雾等…

【零基础学AI】 第6讲:数据可视化基础

本节课你将学到 理解数据可视化在AI中的重要作用 掌握Matplotlib的基本架构和核心概念 学会创建各种类型的图表(线图、柱状图、散点图、饼图等) 掌握图表美化和自定义技巧 完成销售趋势图表制作实战项目 开始之前 什么是数据可视化? 数据可…

基于SSM+JSP 的旅游管理系统

【旅游景点管理系统】【送文档】|SSM | JSP 【运行开发环境】 jdk1.8 idea mysql maven tomcat 【技术栈】 Spring SpringMVC mybatis JSP 【项目功能】 两个角色;管理员功能有游客管理、轮播图管理、景点管理、景点类型管理;普…

系统 | 电脑重置 图文教程

背景: 换内存条,换完,声卡网卡崩盘,分析原因可能是未断电操作(什么光感自动断电 还是手动的香),网卡由于代理没关,关完即可。声卡一直没好,电脑店说是硬件问题;自行排查了…

MyBatis深度面试指南

一、MyBatis核心解析:半ORM框架的底层真相 1. 本质与工作流 半ORM定义: 对象映射:通过ResultMap将ResultSet自动转为Java对象(省去JDBC手动映射)。SQL控制:开发者需手动编写SQL,框架不自动生成(与Hibernate核心区别)。工作流四步: 解析mybatis-config.xml → 构建Sq…

使用Docker部署mysql8

1、拉取mysql8的镜像: 1 [rooti-zgn6som8 ~]# docker pull mysql:8.0 2、创建配置和数据文件夹并修改权限: 1 2 3 4 mkdir -p /data/mysql8/conf mkdir -p /data/mysql8/data chmod -R 755 /data/mysql8/ 3、配置一个自定义的配置文件my.cnf: 1 …

Vue3—插槽solt

默认插槽 父组件 <Sidebar><div>{{ strData }}</div></Sidebar> let strData ref(我是你爸爸真伟大&#xff0c;养你这么大);//定义插槽数据子组件 <slot>没有数据&#xff0c;我先默认显示一下 loading。。。。。。。</slot>父组件提供…

时间同步 gptp ptp

目录 车载以太网PTP报文分析**PTP协议基础****PTP报文类型与功能****PTP报文格式解析****时钟同步原理与计算****车载以太网PTP分析工具****典型分析场景****车载场景特殊考虑**gPTP与PTP的对比解析**1. 基本概念****2. 核心差异对比****3. 技术细节对比****报文结构****主时钟…

AWS WebRTC:通过shell实现多进程启动viewer

​ 前面总结了aws webrtc sdk-c项目中多进程启动master的shell脚本,具体参考:https://blog.csdn.net/zhang_jiamin/article/details/148616899 这次总结一下多进程启动viewer的shell脚本,以及过程中遇到的问题和解决方法。 实现说明: 1、获取 sid 和 uid(用于认证) 2、…

设计模式(策略,工厂,单例,享元,门面)+模板方法

文章目录 前提策略模式思想实现如何拓展 模板方法存在的问题思想实现如何拓展 工厂模式实现问题及解决(解耦)配置文件方式使用注解 单例模式实现方式1,懒汉式(线程不安全)2,懒汉式(线程安全)3,饿汉式4,双重校验锁机制(面)5,静态内部类6,枚举 体现 享元模式门面模式 前提 假设做…

libarchive压缩解压文件

存在中文乱码问题 官网&#xff1a; libarchive - 用于读取和写入 tar、cpio、zip、ISO 和其他存档格式的 C 库和命令行工具 GitHub GitHub源码&#xff1a;Bluewind/libarchive: Multi-format archive and compression library (github.com) 参考&#xff1a; C archive_w…

AutoGPT,自主完成复杂任务

AutoGPT是一个开源的AI Agent项目&#xff0c;它的核心目标是让AI能够自主完成复杂任务&#xff0c;而不仅仅是回答单个问题。简单来说&#xff0c;它让AI具备了"自主思考和行动"的能力。 1. AutoGPT的核心概念 什么是AI Agent&#xff1f; AI Agent&#xff08;智…

lambda、function基础/响应式编程基础

lambda表达式 只要是函数式接口&#xff08;接口内只有一个未实现的方法&#xff0c;可以有其它默认方法&#xff09;&#xff0c;就可以用lambda表达式&#xff0c;也就是快速new一个匿名内部类。 实例化接口的三种方式 继承接口&#xff0c;并实现接口 直接实现匿名内部类 …

OpenTiny 体验官实操活动 | 快速体验 TinyVue 组件库的智能化交互能力

实验简介 通过体验基于标准 MCP 协议的 Web 智能组件库——TinyVue&#xff0c;开发者可以了解 AI 智能体控制 TinyVue 智能组件的各类行为。本次实验主要是在 TinyVue 官网上&#xff0c;开发者能够通过 AI 对话框&#xff0c;以语音或文字方式与网站组件进行互动&#xff0c…

秋招Day15 - Redis - 基础

什么是Redis&#xff1f; Redis是一种基于键值对的NoSQL数据库。 主要的特点是把数据放在内存中&#xff0c;读写速度相比于磁盘会快很多。 对于性能要求很高的场景&#xff0c;比如缓存热点数据&#xff0c;防止接口爆刷&#xff0c;都会用到Redis Redis还支持持久化&…

权限提升-工作流

一、Windows 权限提升 操作阶段 对应工具 说明 系统补丁与漏洞查询 systeminfo、WindowsVulnScan、wesng 提取 KB 补丁号&#xff0c;匹配 CVE 漏洞&#xff08;如 CVE-2020-1054&#xff09; 内核漏洞提权 MSF&#xff08;local_exploit_suggester&#xff09;、CVE 对…

c++手撕线程池

C手撕线程池 #include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <time.h>#define LL_ADD(item, list) do{ \item->prev NULL; \item->next list; \if…

cocos creator 3.8 - 精品源码 - 六边形消消乐(六边形叠叠乐、六边形堆叠战士)

cocos creator 3.8 - 精品源码 - 六边形消消乐 游戏介绍功能介绍免费体验下载开发环境游戏截图免费体验 游戏介绍 六边形堆叠战士(六边形消消消)是一款脱胎于2048、1010&#xff0c;基于俄罗斯方块的魔性方块达人小游戏&#xff0c;可以多方向多造型消除哦&#xff01; 功能介…