我在寫這篇文章的時候依然是乙個小白。
關於在學習zigbee所用到的cc2530這塊晶元,在一開始我就打算通過幾個基礎實驗的例子來熟悉zigbee的程式設計方式。然而對於沒有接觸過51之類的我來說還是有很大難度的,在第乙個基礎實驗點亮第乙個燈的時候就對於一些什麼暫存器啊什麼io口一頭霧水。在幾經周折之後,看了一些前人的教程或是部落格明白了許多。
cc2530(soc)一共有21個通用io口,分為三組:p0、p1、p2,(p0,p1各8個,p2組5個(p2_0~p2_4)),都可以作為普通io或對應的片上外設控制。
而這些通用io口是作為普通io口還是片上外設是通過配置暫存器pxsel(x=0,1,2 即p0sel,p1sel,p2sel)來實現,pxsel為乙個位元組,即8位,每一位對應具體的io組中相應的乙個io,決定它是普通io還是片上外設, 0表示普通io, 1表示 片上外設 (復位預設為0)。
若將通用io口配置成普通io口,就有乙個問題,是用於輸入還是用於輸出。
配置輸入或者輸出由暫存器pxdir(即p0dir,p1dir,p2dir)來配置,每個暫存器也都是乙個位元組,即8位,每一位對應具體的io組中相應的乙個io,決定它是輸入還是輸出,0表示輸入,1表示輸出 (復位預設為0)
當設定為輸入時,輸入還有三種情況,分別為上拉輸入,下拉輸入,三態,
關於上拉和下拉
上拉電阻:一般是一端接電源,一端接晶元管腳的電路中的電阻。一般用於時鐘訊號資料訊號等,假如沒有上拉,時鐘和資料訊號容易出錯,畢竟,cpu的功率有限,帶很多bus線的時候,提供高電平訊號有些吃力。而一旦這些訊號被負載或者干擾拉下到某個電壓下,cpu無法正確地接收資訊和發出指令,只能不斷地復位重啟。
下拉電阻:一般是指一端接晶元管腳一端接地的電阻。一般用於保護訊號,假如沒有上拉,時鐘和資料訊號容易出錯,畢竟,cpu的功率有限,帶很多bus線的時候,提供高電平訊號有些吃力。而一旦這些訊號被負載或者干擾拉下到某個電壓下,cpu無法正確地接收資訊和發出指令,只能不斷地復位重啟。這是根據電路需要設計的,主要目的是為了防止干擾,增加電路的穩定性。
選擇上拉,下拉,三態,通過配置暫存器pxinp(p0inp,p1inp,p2inp),0表示上拉下拉,1表示三態,由於p2組只有5個,所以p2inp後面三位是沒有用來控制選擇上下拉和三態的,於是將用做選擇p0 p1 p2三組整組的上拉或者是下拉,0表示上拉,1表示下拉
eg. 以p0_0作為輸出為例,
1. 讓p0_0作為普通io口,而不是片上外設 ,因此將p0sel的第0位設定為0,
位操作為p0sel &=0xfe //0xfe為十六進製制,即1111 1110
2. 讓p0_0作為輸出口,而不是輸入檢測 p0dir |=0x01 //0000 0001
eg.以p1_1作為輸入為例
讓p1_1作為普通io口 p1sel &=0xfd // 1111 1101
讓p1_1作為輸入用 p1dir &=0xfd // 1111 1101
選擇上拉,下拉,三態中的一種 p1inp &=0xfd //1111 1101
華為映象口配置教程
交換機型別 華為交換機 方法步驟1 埠對埠,乙個映象口對應乙個被映象口。將映象埠ge0 0 2入方向的報文 即接收到的報文 複製到觀察埠ge0 0 1上。1.配置埠對埠映象 observe port 1 inte ce gigabitethernet 0 0 1 port mirroring to ...
Linux 雙網口配置
方法一 內網ip為 192.168.4.213,內網閘道器 192.168.4.1 外網ip為 58.200.200.15 子網掩碼為 255.255.255.128 閘道器為 58.200.200.1 1 當配置伺服器為外網ip和內網ip的方式時,只設定外網ip的閘道器,不要設定內網ip的閘道器 ...
nginx初學入門配置
主要有master程序和worker程序,使用命令檢視 master在只有乙個 worker預設情況下只有乙個,可以通過配置增加worker程序 相當於領導者 相當於工作者,為master服務 修改worker程序數量,首先進入nignx的配置檔案 vim nginx.conf圖中數字1代表乙個wo...