文档章节

CC2540/CC2541的基本操作

h
 houj
发布于 2014/10/17 11:49
字数 642
阅读 767
收藏 3

CC2540/CC2541的基本操作

1)操作LED

//初始化
P0SEL &= ~0x01;//设置为普通IO口 
P0DIR |= 0x01;//设置成输出模式
//LED控制
P0_0 = 1;//输出高电平,LED亮
P0_0 = 0;//低电平,LED灭

2)按键

//初始化
P0SEL &= ~0x01;//设置为普通IO口  
P0DIR &= ~0x01;//设为输入模式 
P0INP &= ~0x01;//打开上拉电阻,上拉输入
//取值
/****************************************************************************
* 名    称: KeyScan()
* 功    能: 读取按键状态
* 入口参数: 无
* 出口参数: 0为抬起   1为按键按下
****************************************************************************/
uchar KeyScan(void){
    if (P0_0 == 0){
        DelayMS(10);      //延时10MS去抖
        if (P0_0 == 0){
            while(!P0_0); //松手检测
            return 1;     //有按键按下
        }
    }
    return 0;             //无按键按下
}

3)中断方式按键

//初始化
P0IEN |= 0x1;    //P0IEN: 端口0,位7至位0中断使能。0:中断禁止;1:中断使能
PICTL |= 0x1;    //端口0,引脚7至0输入模式下的中断配置,该位为端口0的7-0脚的输入选择中断请求条件。0:输入的上升沿引起中断;1:输入的下降沿引起中断   
P0IEN |= 0x1;    //端口0,位7至位0中断使能。0:中断禁止;1:中断使能; 
P0IFG = 0x00;    //端口0,位7至位0输入中断状态标志。当某引脚上有中断请求未决信号时,其相应标志为1。
EA = 1;          //打开总中断
//按键检测的中断处理函数,不需要主动调用
/****************************************************************************
* 名    称: P0_ISR(void) 中断处理函数 
* 描    述: #pragma vector = 中断向量,紧接着是中断处理程序
****************************************************************************/
#pragma vector = P0INT_VECTOR    
__interrupt void P0_ISR(void){
    DelayMS(10);  //延时去抖
    LED1 = ~LED1; //改变LED1状态
    P0IFG = 0;    //清中断标志 
    P0IF = 0;     //清中断标志 
}

4)ADC采样

//初始化
HalAdcInit();
HalAdcSetReference(HAL_ADC_REF_125V);//设置参考电压为内部1.25V
uint32 r=HalAdcRead(HAL_ADC_CHN_VDD3, HAL_ADC_RESOLUTION_10);//取得1/3电源值的ADC采样

5)看门狗

//初始化看门狗
void Init_Watchdog(void){
    WDCTL = 0x00;       //打开IDLE才能设置看门狗
    WDCTL |= 0x08;      //定时器间隔选择,间隔一秒
}

//喂狗, 需要不断喂狗, 因为BUG或其他原因长时间不喂狗, 系统就会复位
void FeetDog(void){
    WDCTL = 0xa0;       //清除定时器。当0xA跟随0x5写到这些位,定时器被清除
    WDCTL = 0x50; 
}

6)GPIO省电

一个接有负载的IO口,在不需要负载时如何省电呢(比如LED不需要亮时),答案是3态输入,上拉下拉输入都可能有消耗;
P0SEL &= ~0x01;//设置为普通IO口 
P0DIR &= ~0x01;//设置为输入模式
P0INP |= 0x01;//3态输入模式

© 著作权归作者所有

下一篇: Linux命令大全
h
粉丝 9
博文 81
码字总数 57985
作品 0
长沙
技术主管
私信 提问
[ZigBee] 15、Zigbee协议栈应用(一)——Zigbee协议栈介绍及简单例子(长文,OSAL及Zigbee入门知识)

1、Zigbee协议栈简介   协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通...

史迪奇2号
2018/01/01
0
0
介绍TTC CC2541 SDK 蓝牙4.0开发套件

简介 TTC CC2541 SDK 是由我司针对TI的CC2541芯片开发提供的快速开发工具。旨在让开发人员不再需要将大量精力放在蓝牙调试方面,只需将精力放在对CC2541芯片功能的应用开发上。 TTC CC2541 S...

昇润科技
2018/05/21
0
0
蓝牙4.0 BLE与传统蓝牙之间的兼容性

蓝牙分为三种:Bluetooth Smart Ready、Bluetooth Smart(Smart是低功耗蓝牙的标识)、以及标准 Bluetooth。根据 Bluetooth SIG的说法,这样是为了要分辨装置间的相容性以及标识各版本的传输...

Gobert
2015/04/26
0
0
android 蓝牙4.0 app gpio控制

cc2541 蓝牙gpio控制app。手机完成认证流程,控制硬件gpio。

孙建希
2017/10/01
7
0
蓝牙4.0 BLE与传统蓝牙之间的兼容性

蓝牙分为三种:Bluetooth Smart Ready、Bluetooth Smart(Smart是低功耗蓝牙的标识)、以及标准 Bluetooth。根据 Bluetooth SIG的说法,这样是为了要分辨装置间的相容性以及标识各版本的传输...

IcedBeer
2016/11/03
405
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
8
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
9
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
7
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部