TI CC2541的LED控制

现在终于进入到蓝牙SPI的环节了, 下面还要研究I2C, 所以第一步, 先点灯, 就是GPIO控制吧.

参考一下LEd的初始化:

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
}

其中重要的两句是:

HalLedSet(HAL_LED_ALL, HAL_LED_MODE_OFF);  // Initialize all LEDs to OFF.
  // Set LED GPIOs to outputs.
  LED1_DDR |= LED1_BV;

先看看怎么把GPIO脚P1_0定义为输出

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

/* Port 1                                                                           */
SFRBIT( P1      ,  0x90, P1_7, P1_6, P1_5, P1_4, P1_3, P1_2, P1_1, P1_0 )
SFR(  RFIRQF1   ,  0x91  )   /*  RF Interrupt Flags MSB                             */
SFR(  DPS       ,  0x92  )   /*  Data Pointer Select                                */
SFR(  MPAGE     ,  0x93  )   /*  Memory Page Select                                 */
SFR(  T2CTRL    ,  0x94  )   /*  Timer2 Control Register                            */
SFR(  ST0       ,  0x95  )   /*  Sleep Timer 0                                      */
SFR(  ST1       ,  0x96  )   /*  Sleep Timer 1                                      */
SFR(  ST2       ,  0x97  )   /*  Sleep Timer 2                                      */

#define LED1_DDR                       P1DIR

SFR(  P1DIR     ,  0xFE  )   /*  Port 1 Direction                                   */

所以, LED1_DDR |= LED1_BV;  //即: 将SFR 0XFE的值, 或一个00000000.

在看看

HalLedSet(HAL_LED_ALL, HAL_LED_MODE_OFF);

其实重点是:
      led = HAL_LED_1;
      leds &= HAL_LED_ALL;
      sts = HalLedStatusControl.HalLedControlTable;

while (leds)
      {
        if (leds & led)
        {
          if (mode != HAL_LED_MODE_TOGGLE)
          {
            sts->mode = mode;  /* ON or OFF */
          }
          else
          {
            sts->mode ^= HAL_LED_MODE_ON;  /* Toggle */
          }
          HalLedOnOff (led, sts->mode);
          leds ^= led;
        }
        led <<= 1;
        sts++;
      }

一开始其实是不是不用写得好像它那么高深莫测, 简单实现以下, 知道如何输出0, 1, 就是第一步的目标. 对吧.

ok, let‘s rock!

时间: 2024-10-01 05:06:01

TI CC2541的LED控制的相关文章

TI CC2541的红外控制

整整一个礼拜, 整了...大约40个小时吧, 最少.. 下面是结果, 只能做一个delay延时.: unsigned char Time;unsigned char IrValue[6];#pragma vector = P0INT_VECTOR__interrupt void P0_ISR(void){    unsigned char j,k;    unsigned int err;    if(P0IFG & 2){      //如果中断标识符的确是P0_1        Time=0

蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例

本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的Framework包括Android Framework.Linux QT.Windows MFC.应用框架抽象并封装实现了一般应用场景的需求,完成应用开发的80%,剩下的20%则以回调(callback)和接口的方式供应用开发人员调用以完成具体的需求. 一般Framework完成的工作包括:任务分

linux输入子系统(input subsystem)之按键输入和LED控制

实验现象:在控制台打印按键值,并且通过按键控制相应的LED亮灭. 1.代码 input_subsys_drv.c 1 #include <linux/module.h> 2 #include <linux/version.h> 3 4 #include <linux/init.h> 5 #include <linux/fs.h> 6 #include <linux/interrupt.h> 7 #include <linux/irq.h&g

SES2 LED控制

SES2 LED控制 1.磁盘LED控制的背景及需求 磁盘阵列中每个磁盘都对应多个LED灯,常用来指示磁盘的状态和行为. 比如当磁盘出现故障需要定位.磁盘缺失.正常在线或者正在读写等情况下,可以通过SAS Enclosre Service来控制enclosure上每个drive对应的LED灯 .初次接触SES2的同学可能觉得它比较抽象,可以把它和BMC类比,整个enclosure也是由嵌入式CPU(比如ARM)及外围电路组成的一个独立系统,可以完成对每个drive LED.内部风扇.电源的设置.

beaglebone led控制。

子曾经曰过,点灯,是embedded领域的“hello world” 最近开始入手beaglebone…… 原文地址: http://www.cnblogs.com/hebaichuanyeah/p/4702802.html 默默地EEer 关于linux环境下编写字符设备驱动: http://www.cnblogs.com/hebaichuanyeah/p/3460498.html C艹/QT,beaglebone的LED控制. led控制部分,打开文件,设置方向/电平. #include "

IAR 9+ 编译 TI CC2541 出现 Segment ISTACK (size: 0xc0 align: 0) is too long for segment definition.

IAR 9+ 编译 TI CC2541 出现 Segment ISTACK (size: 0xc0 align: 0) is too long for segment definition. Segment ISTACK (size: 0xc0 align: 0) is too long for segment definition. 从讨论得知是IAR的配置问题 https://blog.csdn.net/zhangjs0322/article/details/34108663 用IAR 80

4412开发版led控制

exynos4412裸版控制led灯. 1.查看电路图. 2.查看4412手册.找到对应的寄存器. 3.配置对应的寄存器. 一.再开发板上我们的外部设备led,在核心板.所以我们需要打开核心板电路图. [email protected]:~/work/arm/arm资料/exynos4412_lzy/schematic$ ls LCD-HD700-1306.pdf Tiny4412_1306_core_board_sch.pdf LCD-S701-121212.pdf Tiny4412SDK_1

电赛菜鸟营培训(一)&mdash;&mdash;STM32之LED控制

一.STM32F103C8 引脚分布 二.LED的共阴.共阳接法 这里应该是七段数码管的接法. 限流电阻选择为470,在Multism中仿真,也需要接入,否则会出现闪烁情况.或者直接更改属性. 三.消除按钮的机械振动 1.键的特性 键盘是由若干独立的键组成,键的按下与释放是通过机械触点的闭合与断开来实现的,因机械触点的弹性作用,在闭合与断开的瞬间均有一个抖动过程 . 2.去抖动的方法 (1)硬件去抖动,主要是通过滤波电路. (2)软件去抖动,延时函数. 四.按钮控制灯 1.一对一 每一个按键的电

【BLE】CC2541之PWM控制直流电机

本篇博文最后修改时间:2016年4月14日,18:24. 一.简介 本文介绍如何在SimpleBLEPeripheral工程中,使用PWM控制直流电机. 二.实验平台 协议栈版本:BLE-CC254x-1.4.0 编译软件:IAR 8.20.2 硬件平台:Smart RF(主芯片CC2541) 三.版权声明 博主:甜甜的大香瓜 声明:喝水不忘挖井人,转载请注明出处. 原文地址:http://blog.csdn.net/feilusia 联系方式:[email protected] 技术交流QQ群