藍芽ble 從LED實驗來學習CC2541 IO口配置
阿新 • • 發佈:2019-02-15
帶著從頭到尾好好學習CC2540和CC2541的目的,從最基本的專案開始
本人QQ 330952038,歡迎交流學習
本文從最基本的LED實驗開始講起。 LED實驗主要通過控制IO口,實現LED的點亮和熄滅。
一、 硬體平臺
SmartRF 開發板,MCU為CC2540或CC2541
二、原理圖
根據上圖,當P1.0拉高時,D1將會被點亮。
三、 軟體實現
實現P1.0拉高,需要配置對應的暫存器。根據CC2541手冊,配置通用的IO口,需要做以下幾個步驟:
1. 配置PxSEL[7:0] 配置為通用IO功能
2. 配置PxDIR[7:0] 配置為輸入還是輸出
如下圖:
程式碼如下:
#define LED1 P1_0 //位控制,定義P1.0口為LED1
void InitGPIO(void)
{
P1DIR |= 0x01; //P1.0定義為輸出口
P1SEL &= ~0x01; //P1.0定義為一般GPIO
}
void main(void)
{
InitGPIO(); //設定LED燈相應的GPIO口
while(1) //死迴圈
{
LED1 = 1; //點亮LED1
DelayMS(500 ); //延時0.5秒
LED1 = 0; //LED1熄滅
DelayMS(500); //延時0.5秒
}
}
上面功能基本已經實現了LED燈電量功能。
小結:
1、實現通用IO口功能只需要配置兩個暫存器即可(PxSEL, PxDIR)
延申:
CC2541核心為8051, 其IO口有如下特性:
1、所有引腳復位後的為上拉輸入模式(除了 P1.0 和 P1.1 沒有上拉 / 下拉功能)
2、高驅動輸出口 P1.0 和 P1.1 各具備 20 mA 的輸出驅動能力之外,所有的輸出均具備 4 mA 的驅動,也就是說其他引腳驅動能力較差。