CC2530寄存器編程學習筆記_點燈

下面是我的CC2530的學習筆記之點燈部分。

第一步:分析原理圖

找到需要對應操作的硬件

? 圖 1

通過這個圖1我們可以找到LED1和LED2連接的引腳,分別是P1_0和P1_1。


第二步 分析原理圖

? ?圖 2??

  • 通過圖2 確認P1_0和P1_1引腳連接到LED,并且這些引腳可以通過單片機控制。

LED連接到兩個引腳:P1_0和P1_1,這兩個引腳屬于并行IO口。可以看到當P1_0和P1_1輸出高電平時,LED燈就會亮。這兩個引腳由單片機控制,當P1_0和P1_1輸出1(0低電平)時,LED燈亮。


?第三步?查手冊設置引腳和配置寄存器

第一步 將引腳設為通用模式

????????首先我們要知道 CC2530 有3組端口 P0 P1 P2 ---> P0 P1 有8個引腳 P2 有5個引腳。合起來21個數字輸入/輸出引腳。可以配置為通用數字I/O或外設I/O信號,配置為連接到ADC、定時器或 USART 外設。這些 I/O 口的用途可以通過一系列寄存器配置,由用戶軟件加以實現。

I/O 端口具備如下重要特性:
  • 21 個數字 I/O 引腳
  • 可以配置為通用 I/O 或外部設備 I/O
  • 輸入口具備上拉或下拉能力
  • 具有外部中斷能力。
????????21 個 I/O 引腳都可以用作于外部中斷源輸入口。因此如果需要外部設備可以產生中斷。外部中斷功能也可以從睡眠模式喚醒設備。

????????對于CC2530單片機的P1_0和P1_1引腳,配置為通用I/O口而不是外設I/O口是因為我們需要直接控制這些引腳的電平狀態來實現LED的點亮和熄滅。外設I/O口通常用于特定的硬件外設(如UART、SPI、I2C等),而在這種情況下,選擇通用I/O口更適合用于簡單的引腳電平控制。別糾結 反正就是選通用就對了。


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖 3

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ?圖 4? 此圖來自手冊??

????????我們根據圖3 和圖4 籃框部分可以看到如果我們需要配置端口功能為通用IO口,就選擇PxSEL寄存器因為我們是P1_0和P1_1引腳。 所以我們就選擇P1SEL寄存器。

PxSEL寄存器:?

????????PxSEL寄存器(這里的x可以是0、1或2)用來決定每個引腳的用途。你可以把它想象成一個開關板,每個開關對應一個引腳。這個開關可以讓引腳變成普通的輸入/輸出口(就像家里的開關控制燈的開關),或者讓引腳連接到單片機內部的特殊功能(比如UART、SPI等外設)。

?????????默認情況下,當單片機復位(重啟)后,所有的引腳都會被設置成普通的輸入口。這就像家里的所有開關在重啟后都默認是關閉狀態,等你需要的時候再手動打開。

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖 5?此圖來自手冊?

? 要將P1_0和P1_1引腳配置為普通I/O口,可以這樣設置:

P1SEL &= ~0x03; /將P1_0和P1_1配置為通用I/O 把第0位和第1位置為0。
引腳從0 開始  0 1 2 3 4 5 6 7 共8位0 0 0 0 0 0 0 0
///          0 0 0 0 0 0 1 1 如果你要配置為外設IO 就把對應位,置為1就可以了

?第二步 設置引腳方向為輸出

????????在將方向設置為輸出的時候,我們要先知道什么是輸入輸出,不需要多懂,簡單了解一下就好了,懂這個為啥設為輸出即可。

輸入:輸入是指檢測各個引腳上的電平狀態。

電平狀態:電平狀態分為高電平和低電平。高電平表示有電壓,通常用數字符號1表示;低電平表示接地,通常用數字符號0表示。

應用示例:一個常見的輸入例子是按鈕。當按鈕按下時,引腳檢測到高電平(1);當按鈕松開時,引腳檢測到低電平(0)。

輸出:輸出是指控制引腳電平的高低狀態。

電平狀態:通過設置引腳的電平狀態,可以控制外部設備。例如,高電平(1)可以點亮LED,低電平(0)可以熄滅LED。

應用示例:你提供的圖片就是一個輸出的例子。P1_0和P1_1引腳通過電阻連接到LED,當引腳輸出高電平時,LED亮起;當引腳輸出低電平時,LED熄滅。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖 6?此圖來自手冊?

???????????????????????????????????????????????????????????????? ? ? 圖? 7

???????我們根據圖6?和圖7?籃框部分可以看到如果我們需要配置改變方向為輸入,就選擇PxDIR寄存器因為我們是P1_0和P1_1引腳。 所以我們就選擇P1DIR寄存器。

PxDIR寄存器的作用

????????PxDIR寄存器就像一個控制面板,用來決定每個引腳是作為輸入還是輸出。每個引腳都有一個對應的開關(位),你可以通過這個開關來設置引腳的方向是輸入還是輸出。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖 8

代碼如下:

P1SEL &= ~0x03; /將P1_0和P1_1配置為通用I/O
P1DIR |= 0x03; // 將P1_0和P1_1設置為輸出

?寫到這里我們的寄存器配置就完成了。

?第四步 軟延時

void delay(int num) 
{ int i = 0; for(i = 0; i < num; i++) { int j = 0; for(j = 0; j <400; j++) {}} 
} 

這個軟延時不精準,但是能達到延時的作用了,為了閃爍嘛

下面我們就可以來編寫簡單的LED閃爍的代碼了,下面是代碼的流程圖;

代碼

那下面就請你根據這個圖來完善你的代碼嘍 實現LED燈閃爍

#include "ioCC2530.h" 
#define LED1 P1_0 
#define LED2 P1_1 void LED_Init() 
{ P1SEL &= ~0X03; P1DIR |= 0X03; LED1 = 0; LED2 = 0; 
} void delay(int num) 
{ int i = 0; for(i = 0; i < num; i++) { int j = 0; for(j = 0; j <400; j++) ; } 
} void main() 
{ LED_Init(); while(1) {LED1 = !LED1; LED2 = !LED2; delay(1000); } 
}

蕪湖 完結 撒花

附上原理圖????????

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41143.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41143.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41143.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一體化運維:某省電力公司實現集中統一監控

在當今信息化高速發展的時代&#xff0c;電力公司作為國家基礎設施的重要組成部分&#xff0c;其IT系統的穩定性和高效性直接關系到電力供應的安全與穩定。為了提升運維效率&#xff0c;確保電力系統的持續穩定運行&#xff0c;某省電力公司采購十多套“監控易”運維軟件&#…

高算力智能監控方案:基于瑞芯微RK3576核心板開發NVR網絡視頻錄像機

近年來&#xff0c;隨著人工智能和物聯網技術的不斷發展&#xff0c;網絡視頻錄像機&#xff08;NVR&#xff09;在智能監控領域中的應用越來越廣泛。本文將圍繞RK3576核心板展開討論&#xff0c;探討其在NVR開發中的潛力和優勢。 一、RK3576核心板 RK3576是瑞芯微的新一代中…

14-35 劍和詩人9 - 普及 Agentic RAG

好吧&#xff0c;讓我們直接進入正題——了解 Agentic RAG&#xff08;檢索增強生成&#xff09;方法以及它如何徹底改變我們處理信息的方式。系好安全帶&#xff0c;因為這將變得瘋狂&#xff01; Agentic RAG 的核心在于為 RAG 框架注入智能和自主性。這就像對常規 RAG 系統…

《Windows API 每日一練》8.4 edit控件

編輯類是最簡單的預定義窗口類&#xff0c;而另一方面卻又是最復雜的。當你用“edit”作為類名創建子窗口時&#xff0c;可以基于CreateWindow調用的x坐標、y坐標、寬度和高度參數定義一個矩形。這個矩形包含可編輯的文本。一旦子窗口控件獲得輸入焦點&#xff0c;你就可以輸入…

【文獻解析】Voxelmap——一種自適應體素地圖

Efficient and Probabilistic Adaptive Voxel Mapping for Accurate Online LiDAR Odometry 論文地址&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber9813516 代碼&#xff1a;GitHub - hku-mars/VoxelMap: [RA-L 2022] An efficient and probabili…

制冷軟件SOLKANE單級制冷循環計算

SOLKANE軟件下載 單級制冷循環參數介紹 輸入數據&#xff1a; 1.蒸發器&#xff1a; 溫度&#xff1a;蒸發溫度t6&#xff08;露點溫度&#xff09;。 過熱&#xff1a;制冷劑t6-t6在蒸發器中過熱。 壓力損失&#xff1a;蒸發器入口和出口之間的壓力下降。 制冷量&#x…

Android12 MultiMedia框架之MediaExtractorService

上節學到setDataSource()時會創建各種Source&#xff0c;source用來讀取音視頻源文件&#xff0c;讀取到之后需要demux出音、視頻、字幕數據流&#xff0c;然后再送去解碼。那么負責進行demux功能的media extractor模塊是在什么時候階段創建的&#xff1f;這里暫時不考慮APP創建…

深圳晶彩智能ESP32-2432S028R實時觀察LVGL9效果

深圳晶彩智能ESP32-2432S028R概述&#xff1a; 深圳晶彩智能出品ESP32-32432S028R為2.8寸彩色屏采用分辨率320x240彩色液晶屏&#xff0c;驅動芯片是ILI9431。板載樂鑫公司出品ESP-WROOM-32&#xff0c;Flash 4M。型號尾部“R”標識電阻膜的感壓式觸摸屏&#xff0c;驅動芯片是…

基于MATLAB對線陣天線進行泰勒加權

相控陣天線——基于MATLAB對線陣進行泰勒加權 目錄 前言 一、泰勒綜合 二、單元間距的改變對泰勒陣列方向圖的影響 三、單元數的改變對泰勒陣列激勵分布的影響 四、副瓣電平SLL對泰勒陣列激勵幅度的影響 五、副瓣電平SLL對泰勒陣列方向圖的影響 六、泰勒陣列和切比雪夫陣…

量化交易在不同經濟周期中的表現

量化交易&#xff0c;作為一種基于算法和數學模型的交易方法&#xff0c;其在不同經濟周期中的表現受到了市場參與者的廣泛關注。量化交易策略的設計使其能夠在多種市場環境中尋找投資機會&#xff0c;無論是經濟擴張期還是衰退期&#xff0c;都能夠展現出其獨特的適應性和效率…

7.6數據結構作業

// 練習一 struct K { double a; //8 char b; //1 char c; //1 double d; //8 };//24 // 練習二 struct L { int a; //4 double b; //8 char c; //1 };//24 // 練習三 struct M { char a;//1 int b; //4 char c; //1 double d; //8 };//24 /…

(5) 深入探索Python-Pandas庫的核心數據結構:Series詳解

目錄 前言1. Series 簡介2. Series的特點3. Series的創建3.1 使用列表創建Series3.2 使用字典創建Series3.3 使用列表和自定義索引創建Series3.4 指定數據類型和名稱 4. Series的索引/切片4.1 下標索引&#xff1a;基于整數位置的索引4.2 基于標簽的索引4.3 切片4.4 使用.loc[]…

觸感網絡:WebKit 振動(Vibration API)的交互新維度

觸感網絡&#xff1a;WebKit 振動&#xff08;Vibration API&#xff09;的交互新維度 在數字化時代&#xff0c;用戶體驗的追求已經不僅限于視覺和聽覺&#xff0c;觸覺反饋也逐漸成為網頁交互設計的重要組成部分。WebKit 作為眾多現代瀏覽器的核心技術引擎&#xff0c;對振動…

Linux 文件描述符 fd

當然&#xff0c;以下是一些關于 Linux 文件描述符&#xff08;fd&#xff09;的示例&#xff0c;以清晰、分點表示和歸納的形式給出&#xff1a; 1. 文件描述符的基本概念和用途 定義&#xff1a;文件描述符是一個非負整數&#xff0c;用于指代被進程所打開或使用的文件、套…

Leetcode 59. 螺旋打印矩陣

題目描述 給你一個正整數 n &#xff0c;生成一個包含 1 到 n2 所有元素&#xff0c;且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。 示例 1&#xff1a; 輸入&#xff1a;n 3 輸出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]] 示例 2&#xff1a; 輸入&#xff1a;n…

c++中new和delete重載的一點介紹

通義千問中作答的&#xff0c;感覺回答的比自己總結的好&#xff1a; 實際上&#xff0c;你可以在C中重載new和delete運算符。重載new和delete允許你自定義內存分配和釋放的行為&#xff0c;這對于實現特殊的內存管理策略非常有用&#xff0c;例如&#xff1a; 內存池&#xf…

系統遷移從CentOS7.9到Rocky8.9

我有兩臺阿里云上的服務器是CentOS7.9&#xff0c;由于CentOS7已經停止支持&#xff0c;后續使用的話會有安全漏洞&#xff0c;所以需要盡快遷移&#xff0c;個人使用的話目前兼容性好的還是RockyLinux8&#xff0c;很多腳本改改就能用了。 一、盤點系統和遷移應用 查看當前系…

AI在軟件開發中的革新與未來挑戰

目錄 前言 AI工具的廣泛應用與優勢 AI與開發者技能需求的互動關系 AI的未來展望與面臨的挑戰 結語 前言 在當今快速發展的技術領域中&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;正以前所未有的方式改變著軟件開發的面貌。從代碼生成到錯誤檢測&#xff0c;再…

linux內核源碼學習所需基礎

1.面向對象的思想&#xff0c;尤其是oopc的實現方式。 2.設計模式。 這兩點需要內核源碼學習者不僅要會c和匯編&#xff0c;還要接觸一門面向對象的語言&#xff0c;比如c&#xff0b;&#xff0b;/java/python等等任意一門都行&#xff0c;起碼要了解面向對象的思想。 另外li…

MyBatis 框架核心及面試知識要點

1、什么是 MyBatis? MyBatis 是一款優秀的支持自定義 SQL 查詢、存儲過程和高級映射的持久層框架&#xff0c;消除了 幾乎所有的 JDBC 代碼和參數的手動設置以及結果集的檢索 。 MyBatis 可以使用 XML,或注解進 行配置和映射&#xff0c;MyBatis 通過將參數映射到配置的 SOL,形…