蓝牙ble 从LED实验来学习CC2541 IO口配置

带着从头到尾好好学习CC2540和CC2541的目的,从最基本的项目开始
本人QQ 330952038,欢迎交流学习

本文从最基本的LED实验开始讲起。 LED实验主要通过控制IO口,实现LED的点亮和熄灭。

一、 硬件平台
SmartRF 开发板,MCU为CC2540或CC2541

二、原理图
蓝牙ble 从LED实验来学习CC2541 IO口配置_第1张图片
根据上图,当P1.0拉高时,D1将会被点亮。

三、 软件实现
实现P1.0拉高,需要配置对应的寄存器。根据CC2541手册,配置通用的IO口,需要做以下几个步骤:
1. 配置PxSEL[7:0] 配置为通用IO功能
2. 配置PxDIR[7:0] 配置为输入还是输出
如下图:
蓝牙ble 从LED实验来学习CC2541 IO口配置_第2张图片

代码如下:

#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 的驱动,也就是说其他引脚驱动能力较差。

你可能感兴趣的:(蓝牙ble)