关键词:
目录
1.前期预备知识
1.1 新大陆ZigBee模块LED灯电路
从上两的两个电路可知
1.LED1连接在LED-LINK上,而LED-LINK是从CC2530芯片的P1.0端口引出,同样LED2连接在LED-COMM上,而LED-COMM从CC2530芯片P1.1端口引出。
2.两个LED灯正极接的是CC2530芯片,而负极通过1K电阻后接地。根据LED灯单向导电特性,所以CC2530芯片端口为高电平时LED灯便会亮.
1.2 CC2530相关寄存器
寄存器名称 | 寄存器作用 | 寄存器描述 |
---|---|---|
P1 (0x90) | *控制端口1的高低电平 | 端口1.通用I/O。可以通过SFR位寻址 |
P1SEL (0xF4) | 端口1 8个子端口的功能选择 | P1SEL的8个bit分别代表 => P1.7~P1.0的功能选择. 值为 0:代表通用I/0(GPIO)功能. 值为 1 : 代表外设功能 |
P1DIR (0xFE) | 端口1 输入输出选择 | P1DIR的bit定义同P1SEL; 值为 0:代表从外部输入信号至CC2530; 值为 1:代表从CC2530输出信号至外部 |
P1INP (0xF6) | 端口1 输入模式选择 | P1INP定义为P1.7~P1.2的I/O输入模式。其中P1.0和P1.1是没有上拉/下拉功能。 值为 0:上拉/下拉。 值为 1:三态(高电平、低电平、高阻态) |
注意:端口输入模式选择中的三态分别是(高电平、低电平、高阻态),其中高阻态是让端口电阻无限大,让其外部信号改变不会影响到内部总线。
1.3 寄存器操作技巧
在官方示例文档中,推荐使用 &=~
组合赋值运算将寄存器的某一位置为 0
;使用 |=
组合赋值运算将寄存器的某一位置为 1
。我们可以通过以下示例来了解。
例1:将P1_0设置为GPIO功能并将设置为输出模式。
/*********官方推荐************/
// 将P1_0设置为GPIO
P1SEL &=~ 0x01;
// 将P1_0设置为输出模式
P1DIR |= 0x01;
/*********一般做法**********/
P1SEL = 0x00;
P1DIR = 0x01;
使用官方推荐的操作方法和使用我们一般做法有什么好处呢?其实乍一看我们发现官方推荐方式还是比较复杂,其实一般做法比较简介,好像一般做法还更好一些。我们继续看下面的例子。
例2:假设P1SEL初始值为0x31、P1DIR初始值为0xC3.请在不改变初始值的情况下将P1_0设置为GPIO功能并将设置为输出模式。
/*********官方推荐************/
// 将P1_0设置为GPIO
P1SEL &=~ 0x01;
// 将P1_0设置为输出模式
P1DIR |= 0x01;
/*********一般做法**********/
P1SEL = 0x30;
P1DIR = 0xC3;
从例2中大家就可以发现官方推荐做法的好处,如果使用官方推荐的方式,那么只需要关注需修改的那一位,不需要知道其它位到底是怎么样的。其中最重要的就是在改变某一位的值时不会影响到其它位。
1.4 CPU空转延时
单片机实现延时的方法有很多,一般是通过执行空指令来实现延时的效果。需知道单片机的晶振频率和主频。我们这里使用的是类51单片机,使用的晶振是32MHz晶振;按照文档说法,执行以下代码可以让其延时1ms.
typedef unsigned int uint;
void delay_ms(uint ms)
for(uint i = 0 ; i < ms ; i ++)
for(uint j = 0 ; j < 535 ; j++)
1.4 操作流程图
本次实验的操作流程如下。
2.程序代码
程序代码中并无特别难的地方,根据流程图和之前的分析程序一目了然。
#include <ioCC2530.h>
#define LED1 P1_0 //P1.0端口控制LED1发光二极管
#define unint unsigned int
void init_gpio()
// 设置 gpio
P1SEL &= ~0x01;
// 设置 输出
P1DIR |= 0x01;
// P1端口下拉
P1 = 0;
void delay(unint z)
for (unint i = 0; i < z; i++)
for (unint j = 0; j < 500; j++);
void main(void)
init_gpio();
while (1)
LED1 = 0; // 熄灭LED1发光二极管
delay(1000);
LED1 = 1; // 点亮LED1发光二极管
delay(1000);
The End
cc2530学习路线-基础实验-串口通讯发送字符串(4未完待续)
目录1.前期预备知识1.1串口通讯电路图1.2实验相关寄存器1.2常用波特率设置本章未完待续.....原来写的文章已经丢失了,只能找到这一小部分,看什么时候有时间再补上。1.前期预备知识1.1串口通讯电路图从上图可见,CC2530芯片通... 查看详情
cc2530gpio控制led灯(代码片段)
...输出接口的总称。通常情况下单片机的计算单元通过向I/O控制寄存器写入数据可以控制I/O口输入输出模式,实现对某些设备的控制或信号采集的功能。若将通用I/O进行组合配置可以实现较为复杂的总线控制接口 查看详情
zigbee开发--基础实验led(代码片段)
CC2530的IO口配置我们需要配置三个寄存器P1SEL、P1DIR、P1INP。IO口功能如下表所示:(详细参考CC2530datasheet.pdf)CC2530datasheet.pdf的链接https://pan.baidu.com/s/1nLjYI8LgqxPH6WHd_n1Szw*P1SEL(0:普通IO口1:第二功能)*P1DIR(0:输入1:输出)*P1INP(0:上... 查看详情
ti的cc2530z-stack协议栈简单问题
...么功能(即什么例子)我想在这三个例子中的一个例子的基础上修改实现:串口接收后立刻由此串口发出刚接收到的字符。请问串口的接收事件在哪里实现,看了比较多的资料还是一头雾水(到底在哪个文件的哪个函数里实现,... 查看详情
cc2530串口接收数据
...tmp!=0)if((tmp!='#')&&(num<3))Recdata[num++]=tmp;else//进入LED控制RTflag=3;//接收3个字符后进入LED控制if(num==3)RTflag=3;tmp=0;//控制LEDif(RTflag==3)//控制LED2if(Recdata[0]=='1')//10#关LED2if(Recdata[1]=='0')LED1=1;else//11#LED2开LED1=0;// 查看详情
zigbee开发--基础实验按键(代码片段)
CC2530的IO口配置我们需要配置三个寄存器P1SEL、P1DIR、P1INP。功能如下表所示:(详细参考CC2530datasheet.pdf)*P1SEL(0:普通IO口1:第二功能)*P1DIR(0:输入1:输出)*P1INP(0:上拉/下拉1:三态)按照表格寄存器内容,我们对LED1和按键S1,也... 查看详情
树莓派实验1:gpio点亮led灯
详细请参考网友博文。实验目的:控制GPIO,点亮一个led灯实验步骤:1、使用wiscp传输GPIO的库文件(下载地址)到树莓派中,并解压(可以像windows操作一样解压,或者使用命令行解压)。2、解压后,可以看到其中有一个文件setup... 查看详情
5按键中断实验
中断方式——按键控制LED亮灭(外部信号输入读取) 电路依然没变,若要使用CC2530的外部中断需要使用P0IEN、PICTL、P0IFG、INE1寄存器 查看详情
cc2530控制两个led灯交替闪烁,闪烁周期为0.5左右.其中p1_2连led1p1-3连2
如果是PC机需要配置一块MOXA的TTL板卡来实现高低电瓶输出:1、先设定LED灯是低电平亮还是高电瓶亮,这里假设低电平;2、设置一个定时器,在定时器里面写代码,分别发送高、低电瓶值可实现交替闪耀;参考技术A但有三点要注... 查看详情
cc2530t3定时器控制引脚p1_1的亮灭
/*****************************************************************************文件名:main.c*作者:Andy*修订:2013-01-08*版本:1.0*描述:操作IO口控制3盏LED灯的全亮和全灭、闪烁、流水灯***************************************************** 查看详情
zigbee学习----点亮led(代码片段)
一、前言 其实我把zigbee后面的组网那些都看完了,现在开始写也是当复习吧。二、原理分析 ①:看过好多博客,刚开始都是直接讲配置寄存器,但我觉得需要且有必要了解一下cc2530这款单片机。zigbee就在人家上面搭载嘛... 查看详情
linux应用开发第九章gpio编程应用开发(代码片段)
文章目录9GPIO编程应用开发9.1GPIO编程基础介绍9.2GPIO编程软件接口9.2.1控制接口9.2.2GPIO信号9.2.3GPIO控制器9.3IMX6ULL开发板GPIO编号的确定9.3.1LED的GPIO编号计算9.3.2按键的GPIO编号计算9.3.3特殊情况下的GPIO编号计算9.4实际编程操作9.4.1导... 查看详情
GPIO 引脚控制 SAMC21
...,但我卡住了。我在AtmelStudio中使用ASF。我从基础开始,学习如何用开关切换LED。这是Atmel的代码,完美无瑕:voidconfigure_port_pin 查看详情
cc2530芯片定时器1的输出比较模式怎么用?
...intunsignedint#defineucharunsignedchar#defineRLEDP1_0 //定义LED1为P10口控制#defineYLEDP1_1 //定义LED2为P11口控制#defineGLEDP1_4 //定义LED3为P14口控制uintcounter=0; //统计溢出次数uintLEDFlag; //标志是否要闪烁voidInitialT1test(void);//初始化函数声明/********... 查看详情
巧用1个gpio控制2个led显示4种状态!(代码片段)
...(点击阅读)清华大学的卓老师,做了具体的实验分析。不仅重点分析了串并联两种实现方式,还对串联方式时两个LED存在微亮的问题提出了解决方案。文章讲解得非常到位,有理有据,实在是“实践出真... 查看详情
arm裸机之点亮led
声明:本文由个人学习过程中整理而成,转载请注明出处实验开发版:S5PV2101、什么是GPIO?GeneralPurposeInputOutput(通用输入/输出)简称为GPIO,属于芯片引脚的一部分。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设... 查看详情
arm裸机之点亮led
声明:本文由个人学习过程中整理而成,转载请注明出处实验开发版:S5PV2101、什么是GPIO?GeneralPurposeInputOutput(通用输入/输出)简称为GPIO,属于芯片引脚的一部分。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设... 查看详情
stm32学习笔记——串口控制led(中断方式)
目录:一、时钟使能,包括GPIO的时钟和串口的时钟使能二、设置引脚复用映射三、GPIO的初始化配置,注意要设置为复用模式四、串口参数初始化配置五、中断分组和中断优先级配置六、设置串口中断类型并使能串口中断七、编... 查看详情