1. 程式人生 > >藍芽ble 從LED實驗來學習CC2541 IO口配置

藍芽ble 從LED實驗來學習CC2541 IO口配置

帶著從頭到尾好好學習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 的驅動,也就是說其他引腳驅動能力較差。