【蓝牙低功耗BLE】控制GPIO来点亮LED

这节讲一下最简单的,也是最基础的东西,CC2540的IO操作,把PORT口当做GPIO来用,废话不多说,往下看。

1、硬件电路

硬件电路时最简单的,用一根GPIO去控制LED灯,由于GPIO作为output,所以也不用管GPIO的模式。

还是挺简单的,控制左边GPIO的高低来开关LED灯。

2、相关寄存器

P0SEL      P0[7:0]功能设置寄存器,默认设置为普通I/O口
P0INP P0[7:0]作为输入口时电路模式寄存器,可以设置为输入上下拉等
P0 P0[7:0]可以位寻址的I/O寄存器
P0DIR P0口输入输出设置寄存器

P0SEL    0:普通IO口    1:第二功能

P0DIR    0:输入            1:输出

P0INP    0:上拉/下拉    1:三态

3、代码实现

这里以P1_0为例,看下代码中是如何实现。

在hal_led.c里面的HalLedInit函数:

void HalLedInit (void)
{
#if (HAL_LED == TRUE)
  HalLedSet(HAL_LED_ALL, HAL_LED_MODE_OFF);  // Initialize all LEDs to OFF.

  // Set LED GPIOs to outputs.
  LED1_DDR |= LED1_BV;
#if (!defined HAL_PA_LNA && !defined HAL_PA_LNA_CC2590)
  LED2_DDR |= LED2_BV;
#if (!defined CC2540_MINIDK && !defined HAL_BOARD_CC2540USB)
  LED3_DDR |= LED3_BV;
#endif
#endif
#if defined BLINK_LEDS
  HalLedStatusControl.sleepActive = FALSE;  // Initialize sleepActive to FALSE.
#endif
#endif

相关的宏定义

/* 1 - Green */
#define LED1_BV                        BV(0)
#define LED1_SBIT                      P1_0
#define LED1_DDR                       P1DIR
#define LED1_POLARITY                  ACTIVE_HIG

开关LED

  #define HAL_TURN_OFF_LED1()       st( LED1_SBIT = LED1_POLARITY (0); )
  #define HAL_TURN_OFF_LED2()       st( LED2_SBIT = LED2_POLARITY (0); )
  #define HAL_TURN_OFF_LED3()       st( LED3_SBIT = LED3_POLARITY (0); )
  #define HAL_TURN_OFF_LED4()       HAL_TURN_OFF_LED1()

  #define HAL_TURN_ON_LED1()        st( LED1_SBIT = LED1_POLARITY (1); )
  #define HAL_TURN_ON_LED2()        st( LED2_SBIT = LED2_POLARITY (1); )
  #define HAL_TURN_ON_LED3()        st( LED3_SBIT = LED3_POLARITY (1); )
  #define HAL_TURN_ON_LED4()        HAL_TURN_ON_LED1(

提取一下关键代码:

1)把P1_0设置为输出

P1_DIR |= 0x01;

2)设置P1_0为高电平,点亮LED

P1_0 = 1;

2)设置P1_0为低电平,熄灭LED

P1_0 = 0;

其实看一下协议栈里面的HAL中针对各个接口的封装也不难。

这一节就先到这。

时间: 2024-10-20 06:46:05

【蓝牙低功耗BLE】控制GPIO来点亮LED的相关文章

CC2541是功率优化的真正系统级芯片(SoC)解决方案,适用于蓝牙低功耗(BLE)和专用的2.4GHz应用

CC2541是功率优化的真正系统级芯片(SoC)解决方案,适用于蓝牙低功耗(BLE)和专用的2.4GHz应用.该SOC芯片集成性能极好RF收发器以及标准工业级增强型8051内核,支持系统编程Flash,8KRAM及强大功能支持跟外设. NRF52832是深圳市动能世纪科技有限公司(www.dnsj88.com)从原厂渠道代理经销. 深圳市动能世纪科技有限公司成立于2000年,是一家IC集成电路销售的独立分销商,一直专注于经销世界著名的电子元器件,同时为客户提供被动元器件的配套.公司拥有一支专业且

[nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)

蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体温计.耳温枪.皮肤水分计等), 再到智能家居等领域均占有一席之地. 而蓝牙低功耗(BLE)是在蓝牙4.0协议上修改以适用低功耗应用场景的一种蓝牙协议. 随着上一股智能消费类电子大潮的到来,BLE的各种应用也像雨后春笋般在市场上铺开. 如果想 紧跟蓝牙协议的最新动态 ,可以在https://www.b

浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(转载)

转载来至beautifulzzzz,网址http://www.cnblogs.com/zjutlitao/,推荐学习 蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体温计.耳温枪.皮肤水分计等), 再到智能家居等领域均占有一席之地. 而蓝牙低功耗(BLE)是在蓝牙4.0协议上修改以适用低功耗应用场景的一种蓝牙协议. 随着上一股智能消费类电子大潮的

【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)

转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50515359 参考 :  -- 官方文档 : https://developer.android.com/guide/topics/connectivity/bluetooth-le.html; 1. 概述 BLE 概述 : -- 版本支持 : Android 4.3 (API Level 18) 内置框架引入了 蓝牙低功耗方案 (Bluetooth Low Energy,

【树莓派】实验1:GPIO点亮led灯

详细请参考网友博文. 实验目的:控制GPIO,点亮一个led灯 实验步骤: 1.使用wiscp传输GPIO的库文件(下载地址)到树莓派中,并解压(可以像windows操作一样解压,或者使用命令行解压). 2.解压后,可以看到其中有一个文件setup.py 使用命令行切换到此文件的路径:cd /home/pi/Downloads/RPi.GPIO-0.6.3 再使用命令行安装setup.py: sudo python setup.py install 3.编写GPIO程序 1 import RPi

低功耗蓝牙(BLE)在 Android APP 中的应用

低功耗蓝牙(BLE)在 Android APP 中的应用 前言 最近公司接了一个新项目,用户可以把自己的乐器跟Phone或Pad连接起来,当弹奏乐器的时候,会把演奏情况同步反馈到设备上,方便用户练习,有点类似于之前玩过的一款叫[ 吉他英雄 ]的游戏.不过这次不用插线,直接蓝牙无线连接就可以了. 那么问题来了,因为弹奏的时候数据传输一直在进行,但是如果要一直打开蓝牙的话是很费电的,也许没几首曲子下来设备的电量就耗掉了不少,这当然是无法接受的.那有没有什么好的解决方案呢? 运气真好,Android在

低功耗蓝牙(BLE)——概念

1. 种类 单模蓝牙:仅支持传统蓝牙和BLE(低功耗蓝牙)中的一种: 双模蓝牙:同时支持传统蓝牙和BLE(低功耗蓝牙). 2. 部署方案 3. 节点类型 根据蓝牙协议不同的协议层有不同的角色 1. Server和Client(GATT)--属性服务层 Server(服务器)就是数据中心,一般指蓝牙设备,一般是从机: Client(客户端)就是数据访问者,一般指手机,一般是主机. 特别说明:它与主/从设备是独立的概念,一个主设备既可以充当Server,又可以充当Client,从设备亦然.一般来说,

Bluetooth Low Energy——蓝牙低功耗

Android4.3(API级别18)引入内置平台支持BLE的central角色,同时提供API和app应用程序用来发现设备,查询服务,和读/写characteristics.与传统蓝牙(ClassicBluetooth)不同,蓝牙低功耗(BLE)的目的是提供更显著的低功耗.这使得Android应用程序可以和具有低功耗的要求BLE设备,如接近传感器,心脏速率监视器,健身设备等进行通信. 关键术语和概念 下面是关键BLE术语和概念的总结: 通用属性规范(GATT)—GATTprofile是一个通用

BeagleBone Black板第六课:C++编程控制GPIO基础

BBB板第六课:C++编程控制GPIO基础 在一上课我们通过Shell脚本编程实现了对GPIO端口的简单输出控制,实现对两个LED指示灯的交替点亮和关闭,接下来的一两节课,将通过C++程序来实现Shell脚本的功能.为了实现对应的程序控制,我查阅了好多资料,测试过程中发觉网上的一些程序套用过来总是出现各种各样的编译错误,压根就控制不了BBB板,不知是我的BBB板太新,还是以前的程序太旧.最后还是从头开始,重新研究BBB板的文件系统,找出头文件,找出所有相关的函数,终于实现GPIO的C++程序控制