CC2530

zigbee学习之路(三):按键的控制

六眼飞鱼酱① 提交于 2020-04-01 06:47:58
一.前言 通过前一次的实验,相信大家都已经对cc2530程序的编写有了一定的认识,这次我们来操作和实验的是cc2530上的按键模块。 二.原理分析 我们先来看一下按键的原理图: 根据原理图我们可以得出,按键不按下的时候值为0,因为接地,所以,按键要被按下的时候,BUT1和BUT2输入值为1,当检测到它们为1时,按键就为按下的状态,因为P0DIR默认的状态是输入,所以不需要配置IO寄存器,当按键按下时,改变led的状态,来验证实验。 三.程序 #define LED1 P1_0 //LED1为P1_0端口控制 #define LED2 P1_1 //LED2为P1_1端口控制 #define LED3 P1_4 //LED3为P1_4端口控制 #define KEY1 P0_4 //KEY1为P0_4端口控制 /***************** 函 数 名 : Delayms 功能描述 : 毫秒延时 输入参数 : xms:延时时间,如 i=xms 即延时i毫秒 输出参数 : none 返 回 值 : none *********************/ void Delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=587;j>0;j--); } / 函 数 名 : InitLed 功能描述 : LED IO初始化 输入参数

ZigBee无线应变采集装置

≡放荡痞女 提交于 2020-03-04 05:53:13
1 水工结构健康监测的应变采集方式 随着大型水利水电工程的陆续建设,对水工建筑物及相关土木工程结构的健康监测也变得越来越重要。特别是近些年来,一些重大事故的警示以及材料技术、计算机技术、通信技术、智能控制技术的发展,都促进了结构健康监测技术的发展和应用。 结构健康监测分为整体监测和局部监测。而无论局部监测还是整体监测,都是以传感器准确采集传输数据为前提和基础,各种结构健康监测的数据采集主要采用的是传统“有线”传感器来实现,尽管这种采集方式具有采集信号准确、抗干扰性好、产品系列化等特点,但是利用“有线”传感器组成的监测网络布线量大、安装和维护费用高、可靠性差,甚至在一些结构中无法实现布线。随着传感技术、 ZigBee 数传模块通信技术和 MEMS 技术的发展,无线传感技术得到了发展并能够克服有线传感网络的布线量大、费用高等不足,在实际应用中 ZigBee 无线模块得到了很大的发展。 应变是反映结构局部状态的重要参数,在结构局部监测中非常重要。现存的应变采集装置要么体积较大,不能布置在传感元件附近,要么没有配置无线收发接口,需要通过有线连接与控制中心通信。因此一款体积小、功耗低的无线 ZigBee 数据采集装置对于应变参数的采集是十分必要的。本文介绍一款基于 ZigBee无线模块 的电阻片式应变采集装置。 2 应变测量原理 电阻应变片在外力作用下产生机械变形,从而引起电阻变化

CC2530 light_switch分析

梦想的初衷 提交于 2020-01-30 19:16:11
一些关键字: CCM - Counter with CBC-MAC (mode ofoperation) HAL - HardwareAbstraction Layer ( 硬件抽象层 ) PAN - PersonalArea Network (个人局域网) RF - RadioFrequency (射频) RSSI - Received SignalStrength Indicator ( 接收信号强度指示 ) 本实现讲解的主要内容有分三部分: 1、工程文件介绍 2、Basic RF layer 介绍及其工作过程 3、light_switch.c 代码详解 一、工程文件介绍   文件夹结构大至如下,仅列出 CC2530 BasicRF 目录一些相关的的文件夹:每个文件夹里面放着什么东西,如果缺少其中某些,我们的灯还是否可以点亮呢?我们来一一探讨: 图1. 文件夹结构图 Ø docs 文件夹:   打开文件夹里面仅有一个名为 CC2530_Software_Examples 的 PDF 文档,文档的主要内容是介绍 BasicRF 的特点、结构及使用,如果读者有 TI 的开发板的话阅读这个文档就可以做 Basic RF 里面的实验了,从中我们可以知道,里面 Basic RF 包含三个实验例程:无线点灯、传输质量检测、谱分析应用。下面讲解的内容中也有部分内容是从这个文档中翻译所得

CC2530在IAR下printf重定向

给你一囗甜甜゛ 提交于 2020-01-26 13:11:59
CC2530在IAR下的printf函数重定向,与8051的方法是一致的: 第一步包含头文件: # include <stdio.h> 第二步定义putchar函数: __near_func int putchar ( int c ) { UTX0IF = 0 ; U0DBUF = ( char ) c ; while ( UTX0IF == 0 ) ; return ( c ) ; } 第三步:在初始化函数时配置好串口 void SampleApp_Init ( uint8 task_id ) 函数里添加 halUARTCfg_t uart_config ; uart_config . configured = TRUE ; uart_config . flowControl = FALSE ; uart_config . baudRate = HAL_UART_BR_9600 ; //这里的波特率是9600 HalUARTOpen ( HAL_UART_PORT_0 , & uart_config ) ; 完成以上步骤就可以使用printf函数了 参考: https://blog.csdn.net/bsaver/article/details/51120040 来源: CSDN 作者: qq_40787630 链接: https://blog.csdn.net/qq

zigbee CC2530 系列教程 3 点亮1个LED实验

喜夏-厌秋 提交于 2020-01-16 20:03:05
所有课程见此链接: zigbee CC2530 系列教程 0 课程介绍 4.1点亮1个LED实验 4.1.1 实验目的 了解芯片IO的基本配置方法,点亮1个LED。 4.1.2 实验讲解 首先 根据开发板硬件原理图确定LED与CC2530芯片的连接引脚,如图4 -1所示。 图4-1 开发板LED原理图 可以看到开发板上的3个LED分别连接在芯片的P10、P11及P14引脚,P10、P11低电平点亮,P14高电平点亮,要使芯片P10引脚输出低电平需要配置三个IO口配置寄存器 P1SEL、P1DIR、P1INP,如表4-1所示。 表4-1 IO口寄存器说明 P1SEL 端口1功能选择寄存器 0:通用IO;1:外设功能 P1DIR 端口1方向选择寄存器 0:输入;1:输出 P1INP 端口1输入模式寄存器 0:上拉/下拉;1:三态 P1 端口1 IO寄存器 按照表4-1寄存器说明,我们对P10端口进行配置,当P10输出低电平时 LED中的D3被点亮,配置如下: #define LED1 P1_0 //定义P10口为D3(LED1)控制端 P1SEL &= ~0x01; // P10口作为普通 IO 口 P1DIR |= 0x01; //P10口定义为输出 LED1 = 0; //输出低电平 由于P1SEL寄存器上电默认为0x00,所以仅需要配置: P1DIR |= 0x01; //P10

【CC2530入门教程-05】CC2530的串行接口原理与应用

穿精又带淫゛_ 提交于 2019-12-24 06:30:54
第5课 CC2530的串行接口原理与应用 小蜜蜂笔记网 / 广东职业技术学院 欧浩源 一、并行通信与串行通信 微控制器与外设之间的数据通信,根据 连线结构和传送方式 的不同,可以分为两种:并行通信和串行通信。 并行通信 :指数据的各位同时发送或接收,每个数据位使用单独的一条导线。传输速度快、效率高,但需要的数据线较多,成本高。 串行通信 :指数据一位接一位地顺 序发送或接收。需要的数据线少,成本低,但传输速度慢,效率低。 二、CC2530的串口通信模块 CC2530有两个串行通信接口 USART0 和 USART1 ,它们能够分别运行于 异步UART模式 或者 同步SPI模式 。 两个USART接口具有相同的功能,通过 PERCFG寄存器 可以设置两个USART接口对应 外部I/O引脚的映射 关系: 位置1: RX0 --- P0_2 TX0 --- P0_3 RX1 --- P0_5 TX1 --- P0_4 位置2: RX0 --- P1_4 TX0 --- P1_5 RX1 --- P1_7 TX1 --- P1_6 对每个USART串口通信编程,本质是设置相关的5个寄存器: <1> UxCSR : USARTx的控制和状态寄存器。 <2> UxUCR : USARTx的UART控制寄存器。 <3> UxGCR : USARTx的通用控制寄存器。 <4> UxDBUF

【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线

。_饼干妹妹 提交于 2019-12-22 12:12:04
【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线 小蜜蜂科教 / 广东职业技术学院 欧浩源 一、引言 在 物联网技术应用 的知识体系中 ,Zigbee无线组网技术 是非常重要的一环,也是大家感觉比较难以掌握的一个部分。Zigbee无线组网技术之所以让你感有学习难度, 不是因为它真的复杂,仅仅是它看起来很复杂而已 ,让人望而止步。另一方面则是Zigbee技术在应用层面上将硬件和软件完成融为一个体系,要求开发人员既要有 扎实的硬件技术 ,又要有 清晰的软件思维 。 目前,尽管有不少关于Zigbee无线组网的技术书籍写得非常棒,但对于初学者入门来说可能还是有点难。由于工作需要和形势所迫,我自己摸索着学习Zigbee无线组网技术。其入门过程可谓一波三折,碰过不少障碍,走过不少弯路,吃过不少苦头。所以,在这里结合自己学习Zigbee技术的过程,和大家分享一下学习体会,探讨一下学习路线。大家互助互勉,共同进步。 二、关于Zigbee与Z-Stack 明明看的是关于Zigbee协议的技术教材,为什么里面的内容讲的却是Z-Stack协议栈的内容呢?相信有不少初学者都要这样的疑问。 Zigbee 是基于 IEEE 802.15.4 标准的低功耗局域网协议。 该协议的物理层(PHY)和介质访问层(MAC)由IEEE 802.15.4标准来定义;网络层(NWK)和应用层(APP

cc2530的第二次实验,用按键控制流水灯

梦想与她 提交于 2019-12-05 08:41:51
按键控制流水灯 具体想要实现按一下按键,然后单片机的三个灯会以流水灯的形式都亮一遍 实验相关寄存器 实验相关电路 宏定义 #define uint unsigned int #define uchar unsigned char #define LED1 P1_0 #define LED2 P1_1 #define LED3 P0_4 #define KEY1 P0_1 初始化步骤 graph TD id1[设置P0_1 P1_0 P1_1 P0_4为通用接口] id2[设置P0_1为输入接口 P1_0 P1_1 P0_4为输出接口] id3[设置P0_1为上拉下拉电路 也就是设置P0INP] id1-->id2-->id3 初始化代码 void InitIO(void) { //设置P0_1,P1_0,P1_1,P0_4,为通用接口 P0SEL&=~0x11; //P0SEL:1110 1110 P1SEL&=~0x03; //P1SEL:1111 1100 //设置P0_1为输入接口 P0DIR&=~0x02; //P0DIR:1111 1101 //设置P1_0,P1_1,P0_4为输出接口 P1DIR|=0x03; //P1DIR=0000 0011 P0DIR|=0x10; //P0SEL=0001 0000 //让三个灯先灭 LED1=1; LED1=1; LED1=1

cc2530单片机的第一次实验,流水灯

亡梦爱人 提交于 2019-12-05 07:44:23
第一个实验:控制流水灯 电路图 P1_0,P1_1,P0_4都连接在发光二极管的负极,所以,当这三个引脚为低电平,也就是0的时候,相应的发光二极管才会亮。 实验相关寄存器 其实这里可以稍微的关注一下寄存器的地址,然后,编程的时候可以尝试操作一下! |0|0|0|0|0|0|0|0| 控制发光二极管的步骤 graph TD id1[设置相应的引脚为通用口也就是设置PnSEL寄存器] id2[设置相应的引脚为输出也就是设置PnDIR寄存器] id3[设置上拉下拉电路] id4[设置相应引脚的值也就是设置P1_0 P1_1 P0_4的值] id1-->id2 id2-->id3 id3-->id4 程序的思路 graph TD id1(开始) id2[初始化] id6[延时] id3[LED1亮] id7[延时] id4[LED2亮] id8[延时] id5[LED3亮] id9[延时] id1-->id2-->id6-->id3-->id7-->id4-->id8-->id5-->id9 初始化: //置零用&=,置一用|= P1SEL&=~0x03; //设置P1_1和P1_0为通用接口 1111 1100 P0SEL&=~0x10; //设置P0_4为通用接口 1110 1111 P1DIR|=0x03; //设置P1_0与P1_1为输出 0000 0011 P0DIR|=0x10

cc2530第一次实验,流水灯

不羁岁月 提交于 2019-12-05 07:43:22
## 第一个实验:控制流水灯 [ 电路图 ]() > P1_0,P1_1,P0_4都连接在发光二极管的负极,所以,当这三个引脚为低电平,也就是0的时候,相应的发光二极管才会亮。 [ 实验相关寄存器 ]() *其实这里可以稍微的关注一下寄存器的地址,然后,编程的时候可以尝试操作一下!* |0|0|0|0|0|0|0|0| 控制发光二极管的步骤 ```mermaid graph TD id1 [ 设置相应的引脚为通用口也就是设置PnSEL寄存器 ] id2 [ 设置相应的引脚为输出也就是设置PnDIR寄存器 ] id3 [ 设置上拉下拉电路 ] id4 [ 设置相应引脚的值也就是设置P1_0 P1_1 P0_4的值 ] id1 --> id2 id2 --> id3 id3 --> id4 ``` 程序的思路 ```mermaid graph TD id1 ( 开始 ) id2 [ 初始化 ] id6 [ 延时 ] id3 [ LED1亮 ] id7 [ 延时 ] id4 [ LED2亮 ] id8 [ 延时 ] id5 [ LED3亮 ] id9 [ 延时 ] id1 --> id2- -> id6 - -> id3 - -> id7 - -> id4 - -> id8 - -> id5 - -> id9 ``` >初始化: ``` //置零用&=,置一用|= P1SEL&=