CC2530基础
资料来自B站UP主:欧浩源老师讲CC2530与BasicRF应用开发。本人进行笔记整理。
ShowTime_Younger
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一、CC2530简介
寄存器快速操作其实可以直接赋值,相对好理解,但是熟练之后还是这个方法比较快。一、只将寄存器中的某些位置1而不影响其它位使用或操作 “|” 。任何值与0相或,保持原值。任何值与1相或,结果为1.例如:寄存器TMP的当前值为0X62,要将第2、3、6位置1。C语言表达式:TMP|=0X4C。0X62:0110 00100X4C:0100 1100TMP= 0110 1110那么这个0X4C的值如何快速得到的?先假设寄存器所有位的值都是0,如TMP=0000 0000。再将要操作的位置全部原创 2021-05-23 10:12:28 · 10704 阅读 · 2 评论 -
二、流水灯
流水灯程序#include"iocc2530.h" //引入头文件之后才能使用其中定义的一些寄存器的名称#define D3 P1_0#define D4 P1_1#define D5 P1_3#define D6 P1_4void delay(unsigned int t){ while(t--);}void Init_Port() //端口初始化函数。{ P1SEL&=~0X1B;//0001 1011。选择端口的功能,将其设为通用I/O端口,则将相应的位清0原创 2021-05-23 10:15:22 · 261 阅读 · 0 评论 -
三、按键
按键#include"ioCC2530.h" //引入头文件之后才能使用其中定义的一些寄存器的名称#define D3 P1_0#define D4 P1_1#define D5 P1_3#define D6 P1_4#define SW0 P0_1#define SW1 P1_2void delay(unsigned int t){ while(t--);}void Init_Port() //端口初始化函数。{ //配置LED引脚 P1原创 2021-05-23 10:16:49 · 817 阅读 · 0 评论 -
四、 按键控制流水灯的运行与暂停
按键控制流水灯的运行与暂停项目要求:【1】程序开始时,4个LED灯全亮一会,然后,再全灭一会,开始进入跑马灯。 【2】跑马灯过程为:D4灯亮,其余熄灭,延时,D3灯亮,其余熄灭,延时,D6灯亮, 其余熄灭,延时,D5灯亮,其余熄灭,延时…如此反复。【3】按下SW1按键松开后,跑马灯暂停保留当前状态;再一次SW1按键松开后,从当前状态保留处继续运行跑马灯,在按下SW1按键时,不能打断流水灯的运行。#include"ioCC2530.h" //引入头文件之后才能使用其中定义的一些寄存器的名称#d原创 2021-05-23 10:17:12 · 12401 阅读 · 2 评论 -
五、CC2530的中断
1. CC2530的中断在执行CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执行的程序,转而去执行另外一段特殊程序来处理出现的紧急事务,处理结束后,CPU自动返回到原来暂停的程序中去继续执行。这种程序在执行过程中由于外界的原因而被中间打断的情况,称为中断。中断号中断名称中断描述icCC2530.h中的宏定义0RFERRRF发送完成或接收完成#define RFERR_VECTOR VECT1ADCADC转换结束#define ADC_VEC原创 2021-05-23 10:17:45 · 4817 阅读 · 1 评论 -
六、外部中断控制LED灯开关
外部中断控制LED灯开关【1】启动后,D4灯循环闪烁,其他三个LED灯熄灭。(其实就是在模拟主程序的执行过程)【2】SW1按键,即P1_2引脚外部中断设置为下降沿触发。【3】设计中断服务函数,外部中断响应后,将D5灯的开关状态翻转。(在主程序的执行过程中进行一个中断)#include"ioCC2530.h" //引入头文件之后才能使用其中定义的一些寄存器的名称#define D3 P1_0#define D4 P1_1#define D5 P1_3#define D6 P1_4#defin原创 2021-05-23 10:18:22 · 4767 阅读 · 0 评论 -
七、CC2530定时器
一 、 CC2530定时器定时器资源概述1、普通定时器CC2530共有5个定时/计数器,分别是:a. 定时器1:16位定时器,是CC2530中功能最全的一个定时/计数器,在应用中应优先选用。该定时器支持输入捕获、输出比较、PWM输出、能触发DMA功能,具有5个独立的捕获/比较通道,具有自由运行、模模式和正计数/倒计数三种不同工作模式。可以通过两个8位的寄存器读取定时器1的16位计数器值:T1CNTH和T1CNTL。当读取T1CNTL时,计数器的高位字节就会缓冲到T1CNTH,因此,我们必须原创 2021-05-23 10:19:08 · 12652 阅读 · 0 评论 -
八、基于定时器1模模式的秒闪灯
基于定时器1模模式的秒闪灯【1】选择内部16MHz时钟的128分频作为计数器1的计数信号。【2】在定时器1的模模式中实现0.1秒的间隔定时。【3】在中断服务函数中,实现1秒的间隔定时,并翻转D4灯的开关状态,以实现秒闪灯的功能,即D4灯亮1秒,灭1秒…实现3秒的间隔定时,并翻转D6灯的开关状态,即D6灯亮3秒,灭3秒…# include"ioCC2530.h"#define D4 P1_1#define D6 P1_4unsigned int count=0;void Init_Port()原创 2021-05-23 10:19:35 · 1386 阅读 · 0 评论 -
九、基于定时器的长按与短按
基于定时器的长按与短按【1】选择内部16MHz时钟的128分频作为计数器1的计数信号。【2】在定时器1的模模式中实现0.1秒的间隔定时。【3】当SW1按键长按松开后,切换D4灯的开光状态,当SW1按键短按松开后,切换D6灯的开光状态。【注】按键按下时间大于0.5秒,可定义为长按,反之为短按。# include"ioCC2530.h"#define D4 P1_1#define D6 P1_4#define SW1 P1_2unsigned int count=0;unsigned ch原创 2021-05-23 10:20:48 · 1036 阅读 · 0 评论 -
十、前后台程序设计思维模式及其应用
前后台的基本概念前台系统:一般指中断级程序,即中断服务函数后台系统:一般指任务级程序,即死循环中的主函数基本思维模式中断服务函数中的逻辑处理受到主函数运行的制约,主函数中的某些功能又取决于中断服务函数中的变量,两者相互关联,相互制约,协同运行。以“按键的长按与短按实现”为例:【前台工作】:定时器循环进行0.1秒间隔定时。按键按下,开始计算时间,按键松开,结束计算时间。【后台工作】:扫描按键状态,在按键按下和松开时分别标志不同的变量值,并且对按键的按下时间T进行判断,决定按键是长按还是短按。决原创 2021-05-23 10:21:23 · 862 阅读 · 0 评论 -
十一、看门狗定时器实现1秒定时
看门狗定时器实现1秒定时【1】将看门狗定时器设置成定时器模式。【2】定时周期选择1秒。【3】在看门狗中断服务函数中,切换D4灯的开关状态。# include"ioCC2530.h"#define D4 P1_1void Init_Port(){ P1SEL &=~0X1B; P1DIR |=0X1B; P1&=~0X1B;}//**************************************void Init_WDT(){ WDCTL=0X原创 2021-05-24 08:44:00 · 2351 阅读 · 0 评论 -
十二、CC2530系统时钟设置
CC2530系统时钟概述系统时钟源:32MHz的外部晶振或16MHz内部RC振荡器。32MHz外部晶振的启动时间对一些应用程序来说可能比较长,所以设备可以运行在16MHz的内部RC振荡器。系统上电默认是16MHZ的内部RC振荡器。RC振荡器的功耗少于外部晶振,但是精度不如外部晶振高,因此,要使用RF收发器,必须使用32MHz晶体振荡器。做Zigbee协议栈,做点对点BasicRF的数据传输都需要对晶振进行切换但是已经帮我们做好了。。。。。。。2.4G无线收发、串口通信是建议使用32MHz晶体振荡原创 2021-05-24 08:44:52 · 6372 阅读 · 0 评论 -
十三、CC2530串口及相关寄存器
CC2530串口资源概述CC2530有两个串行通信接口USART0和USART1,它们能够分别运行于异步UART模式或者同步SPI模式。通常说的串口是指异步UART模式。波特率计算与设置CC2530的波特率由BAUD_E和BAUD_M共同决定。计算公式为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hR6Caeo8-1621817061280)(十三、CC2530串口及相关寄存器.assets/clip_image002.gif)]由于计算公式较为复杂,但是我原创 2021-05-24 08:46:01 · 2036 阅读 · 0 评论 -
十四、串口数据发送基础
【1】USART0选择UART模式,波特率9600,I/O引脚映射到备用位置1。【2】利用看门狗定时器的定时功能实现1秒定时。【3】在看门狗中断服务函数中,由串口向上位机发送“Hello Word ! ",回车换行。D5灯作为数据发送指示灯,在字符串发送前点亮,在字符串发送结束后熄灭。#include"ioCC2530.h"#define D5 P1_3//系统时钟切换函数void Set_Clock_32MHZ(){ CLKCONCMD&=~0X40;//要操作的位为0100 0原创 2021-05-24 08:47:14 · 1015 阅读 · 0 评论 -
十五、串口数据收发基础
【1】USART0选择UART模式,波特率9600,I/O引脚映射到备用位置1。【2】串口接收到上位机的一个数据后,在原值上加1,发回上位机。【3】D3灯作为数据接收指示灯,在接收到一个数据后,D3灯点亮;D5灯作为数据发送指示灯,在数据发送之前点亮,在数据发送完成后,D3灯和D5灯同时熄灭。#include"ioCC2530.h"#define D5 P1_3#define D3 P1_0//系统时钟切换函数void Set_Clock_32MHZ(){ CLKCONCMD&=原创 2021-05-24 08:47:46 · 582 阅读 · 0 评论 -
十六、串口命令控制LED灯开关
【1 】USART0选择UART模式,波特率9600,I/O引脚映射到备用位置1。【2】命令字“0xA1”,点亮D4灯,操作完成后,返回“D4 is open!”。【3】命令字“OxA2”,关闭D4灯,操作完成后,返回“D4 is closed!”。【4】命令字“OxB1”,点亮D6灯,操作完成后,返回"D6 is open!”。【5】命令字“OxB2”,关闭D6灯,操作完成后,返回“D6 is closed!”。#include"ioCC2530.h"#define D4 P1_1#defi原创 2021-05-24 08:48:20 · 4085 阅读 · 0 评论
分享