title: nRF52832開發入門【二】模塊化
tags: nodic
categories: nodic
abbrlink: 37752
date: 2025-03-09 17:22:17
1. 介紹
我們實際開發過程中往往會很復雜,為了更好的管理代碼,我們需要模塊化。模塊化的好處有很多,比如:
- 降低耦合度:模塊化可以降低模塊間的耦合度,使得代碼更容易維護和修改。
- 復用性:模塊化可以提高代碼的復用性,可以節省開發時間。
- 降低成本:模塊化可以降低開發成本,可以節省開發成本。
2.準備工作
VCode安裝插件:
1.nRF Connect for VS Code
2.CMake
先創建一個空的工程文件
創建完,默認會創建一些最基礎的配置文件
CMakeLists.txt和prj.conf
然后給這個app添加build配置
除了板子是你對應的手上的板子,其他一路默認即可
然后開始build即可.
插上對應的板子 燒錄build flash即可
提供的默認空工程沒啥東西,我這邊按照我的自己的習慣對齊進行分模塊,有的人習慣是把c文件放一塊,h文件放一塊,也可以每個模塊都單獨一個文件夾
我是習慣后者.前者是可以省去CMakeList.txt文件添加的麻煩,但是我覺得這就不算真正意義上的模塊化了.
將src文件中的main.c挪出來,刪掉src文件,并且添加自己想要添加的模塊內容如下示例:
另外再CMakeLists.txt中添加相關的編譯說明:
aux_source_directory (led/ led_path)
aux_source_directory (button/ button_path)
aux_source_directory (bluetooth/ bluetooth_path)target_sources(app PRIVATE main.c${led_path}${button_path}${bluetooth_path})
這樣就能把每個模塊單獨分開,互相解藕
3 輸出
輸出一般單片或者嵌入式都是以led作為參考的示例.
非常的簡單操作就是對led的節點 做dts檢查后初始化,然后就可以輸出高低電平了
gpio_is_ready_dt(&led1);
gpio_pin_configure_dt(&led0, GPIO_OUTPUT);
gpio_pin_set_dt(&led0, 1);//高電平
gpio_pin_set_dt(&led0, 0);//低電平
更詳細gpio定制化dts可以參考這個工程custom_dts_binding
4 輸入
輸出拿按鈕button舉例:
輸入和輸出相似 也是先做ready_dt check 然后配置成輸入
gpio_is_ready_dt(&button0);
gpio_pin_configure_dt(&button0, GPIO_INPUT);
//設置中斷配置
gpio_pin_interrupt_configure_dt(&button,GPIO_INT_EDGE_TO_ACTIVE);