【蓝牙低功耗BLE】控制GPIO来点亮LED
2017-07-07 10:09
716 查看
这节讲一下最简单的,也是最基础的东西。CC2540的IO操作,把PORT口当做GPIO来用,废话不多说,往下看。
还是挺简单的,控制左边GPIO的高低来开关LED灯。
P0SEL 0:普通IO口 1:第二功能
P0DIR 0:输入 1:输出
P0INP 0:上拉/下拉 1:三态
在hal_led.c里面的HalLedInit函数:
开关LED
提取一下关键代码:
1)把P1_0设置为输出
2)设置P1_0为高电平,点亮LED
事实上看一下协议栈里面的HAL中针对各个接口的封装也不难。
这一节就先到这。
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口输入输出设置寄存器 |
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中针对各个接口的封装也不难。
这一节就先到这。
相关文章推荐
- 【蓝牙低功耗BLE】控制GPIO来点亮LED
- 蓝牙控制LED的点亮
- 控制GPIO, 点亮led,实现跑马灯
- 自制智能插线板,内嵌BLE低功耗蓝牙,通过手机进行控制(一)
- 自制智能插线板,内嵌BLE低功耗蓝牙,通过手机进行控制(二)
- openwrt-dts-gpio-控制LTE上电及LED点亮
- [转载]STM32学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
- 6410寄存器控制GPIO点亮LED
- 低功耗蓝牙BLE之连接事件、连接参数和更新方法(包括时序控制等)
- STM32学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
- erlang下 BeagleBone的GPIO控制实验、以及自带led点亮方法
- 低功耗蓝牙BLE之连接事件、连接参数和更新方法
- 第11章 GPIO输出-使用固件库点亮LED—零死角玩转STM32-F429系列
- [RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED
- LEDE/OpenWRT控制gpio-led
- Arduino应用笔记(二)Matlab控制Arduino点亮一个LED灯
- 我的第一个GPIO实验,点亮一盏LED
- 主流蓝牙BLE控制芯片详解(1):TI CC2540
- 【BLE】CC2541 低功耗蓝牙16bit的UUID与128bit的UUID有什么区别
- 低功耗蓝牙4.0BLE编程-nrf51822开发(11)-蓝牙串口代码分析