【nRF52832】【環境搭建 3】【如何新建一個純單片機開發的工程】

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; 功能介…