今天需要對cc2541 gpio和adc做幾個測試,就學習了下怎麼使用gpio和adc
1:adc的使用
cc2541 p0口是adc口,讀取**如下
apcfg |= 1 << 0 ;//設定使用p0.0作為adc讀入
uint16 vddvalue = haladcread(hal_adc_channel_0, hal_adc_resolution_10);
hal_adc_channel_0指的是p0.0
hal_adc_resolution_10指的是解析度,把電壓分為511份
當cc2541供3.3v測試時,當p0.0輸入3.3v電壓時,vddvalue是511
當cc2541供3.3v測試時,當p0.0輸入1.6v電壓時,vddvalue是256
當cc2541供2.0v測試時,當p0.0輸入2.0v電壓時,vddvalue是511
當cc2541供2.0v測試時,當p0.0輸入1.0v電壓時,vddvalue是256
結論:cc2541電壓內的電壓基準是以供給cc2541供的電算的
2:gpio的使用
cc2541 p1口可以作為普通gpio口,然後拉高拉低p1.0 1.1 1.2 1.3看效果
p1sel = 0;//暴力設定為普通gpio
p1dir &= ~(1 << 0);
p1dir &= ~(1 << 1);//設定為輸入
p1dir &= ~(1 << 2);
p1dir &= ~(1 << 3);
if(p1_0)//讀p1.0
haluartwrite(hal_uart_port_0,"p1.0 is high\r\n",strlen("p1.0 is high\r\n"));
else
haluartwrite(hal_uart_port_0,"p1.0 is low\r\n",strlen("p1.0 is low\r\n"));
有乙個問題是,p1.1和p1.3在我的**裡沒辦法被設定,可能是被占用的原因吧
結論:當給cc2541供3.3v電壓時,給gpio的電壓必須大於2v才會被認為是高電平
當給cc2541供2.0v電壓時,給gpio的電壓大於1.5v就會被cc2541認為是高電壓了
Linux GPIO驅動 GPIO通用層
如果在核心配置的時候有開啟config gpio sysfs標誌,核心就會在 sys目錄下匯出gpio的使用者空間操作介面。gpiolib sysfs init drivers gpio gpiolib.c 是gpio lib的初始化函式,該函式首先在 sys class 目錄下面建立乙個gpio的...
通用輸入輸出口 GPIO
1概述 埠i o埠主要功能是用於內部微控制器和外設進行通訊的媒介。乙個埠最多有8個引腳。引腳每個引腳都是獨立的,也就是說當我們對其中乙個引腳進行操作的時候不會影響到其他引腳。我們可以對引腳單獨設定為數字輸入或者數字輸出。其中有些引腳還可以用著模擬輸入和和外設中斷。同一時刻只有乙個功能對映到同乙個引腳...
GPIO配置和管理
bootloader階段 bootloader階段可以呼叫gpio tlmm config 函式完成gpio cfgn暫存器的配置,舉例如下 define tlmm vol up btn gpio 85 gpio tlmm config tlmm vol up btn gpio,0,gpio inp...