单片机cc2530的日常学习笔记
将寄存器的某些位清零或置1
置1操作
使用或操作:任何值与0相或,保持原值;
任何值与1相或,结果都为1
注意:寄存机从右往左开始计算从0位开始,实际计算是直接将要置1位置,进行置然后计算出16进制
清0操作
使用与操作:任何值与1相与,保持原值;
任何值与0相与,结果为0
注意:为了方便记忆 我们通常使用取反进行操作 先将要清0的位置进行置1操作然后进行取反
通用I/0及其相关寄存器
I/O 引脚概述
共有 40 个引脚,
其中 21 个为可编程数字 I/O 引脚,
分为 3 个端口组。
P0 端口 8 个引脚,
P1 端口 8 个引脚,
P2 端口 5 个引脚。
其中,P1_0 和 P1_1 引 脚没有上拉/下拉能力
但具有 20mA 的高驱动输出能力,其余的 I/O 引脚具有 4mA 的输出驱 动能力。在 P2 端口的 5 个引脚中,其中 2 个用于仿真器接口,2 个引脚用于外部 32KHz 晶 振,在应用中,我们能够使用的数字 I/O
相关寄存器
PXSEL
1 | PXSEL:端口功能能选择,谁知端口是通用端口还是外设功能端口 |
PXDIR
1 | PXDIR:作为通用i/o时用来选择传输方向 |
PXINP
1 | PXINP:作为输入端口时,选择模式是上拉/下拉还是三态 |
PX
1 | PX:数据端口,用来控制端口的输出或获取端口的输入 |
外部中断及相关寄存器
简介:
cc2530的P0,P1,P2端口的每个引脚都具有外部中断输入功能,要使得某些引脚具有中断功能进行设置
IENx中断使能寄存器
用于设置中断使能
CC2530中定时器1~定时器4的中断使能位分别是IEN1寄存器中的T1IE、T2IE、T3IE、T4IE 可用于设置定时器中断
1 | IEN1 |= 0x20;//开P0端口组中断 //IEN1可位寻址也可使用 P0IE=1 (IEN0也可以位寻址) |
PXIEN端口触发寄存器
设置那个端口触发中断使能
PICTL寄存器 设置中断触发方式
D0到D3设置各个端口的中断触发方式 0为上升沿触发,1为下降沿触发
PXIFG端口状态标志寄存器
必须再中断函数中进行清除操作否则cpu会反复进入中断
PXIF中断标志位
分别对应三个端口位的状态标志寄存器,当某引脚触发特定 这个端口组就会自动置1 当在中断服务函数中必须手动清除
注意:先清除 PXIFN 再清除PXIF
1 | /*先清除引脚标志位,再清除端口标志位,否则会不断进入中断*/ |
总结
1 |
|
定时器相关
定时器/计数
自由运行模式
1 | 计数器从0x0000开始,在每个活动时钟边沿加1,当计数器大道0xffff是就会溢出,计数器重新载入0x0000并开始新的一轮计数 |
模模式
1 | 计数器从0x0000开始在每个活动时钟边沿加1 当计数器到达T1CC0寄存器保存值时溢出,计数器又将从0x0000开始新的一轮计数 |
正计数/倒计数模式
1 | 计数器反复从0x0000开始 正计数到 T1CC0 保存的最终计数值.然后再倒计数回到0x0000 |
定时器产生中断请求的三种情况
1 | 1. 计数器达到最终计数值(溢出或回到0) |
定时器1的最大计数值和计算与设置
定时器1相关寄存器
T1CCX(五对T1CCX与T1CCXL)
T1CNTH与T1CNTL(读取16位计数器值)
T1CTL (定时器1的控制寄存器)
注意一旦设置了这个值之后 定时器立刻开始了计数工作
将定时器 1 通道 0 的模式选择为比较模式 T1CCTL0 |= 0x04; //模模式定时,需开启通道 0 的比较模式
定时器3和定时器4
CC2530 的定时器 3 和定时器 4 是两个 8 位计数器,在每个时钟边沿递增或递减。每个 定时器有两个独立的比较通道,每个通道使用一个 I/O 引脚。这两个定时器有四种工作模式, 分别是:自由运行模式,倒计数模式,模模式和正计数/倒计数模式。 在倒计数模式中,定时器启动后,计数器载入 TxCC0 的内容,然后计数器倒计数,直到 其值为 0x00。当达到 0x00 时,设置 TIMIF.TxOVFIF 标志位,如果设置了相应的中断屏蔽位 TxCTL.OVFIM,就会产生一个中断请求。需要注意的是,倒计数模式中,定时器只运行一次, 一般用于需要事件超时间隔的应用。
看门狗定时器
看门狗中断标志位 WDTIF需要手动清除
WDTIF=0; //手动清除寄存器
WDCTL 看门狗控制寄存器
系统时钟设置
系统时钟是从所选的主时钟源获得的
CC2530的主时钟源,可以用16MHz的内部RC震荡器,也可以用32MHz的外部晶振
时钟控制命令寄存器CLKCONCMD
CLKCONCMD.OSC位选择主系统的时钟源。
改变CLKCONCMD.OSC位不会立即改变系统的时钟。
时钟源的改变首先在CLKCONSTA.OSC位与CLKCONCMD.OSC位相等的时候生效。因为在实际改变时钟源之前需要有稳定的时钟。
意思就是要先检测是否稳定在改变值:
时钟控制状态寄存器(只读) CLKCONSTA
1 | 将CC2530的系统时钟源从 16MHz 的内部RC振荡器切换成32MHz的外部品报。 |
串口
串行通信接口概述
CC2530 有 2 路功能完成相同的串行通信接口 USART0 和 USATT1,它们能够分别运行于异 步 UART 模式或者同步 SPI 模式。在 UART 模式中,有 2 个独立的中断向量:发送中断和接 收完成中断。当数据缓冲寄存器就绪,准备接受新的发送数据时,就产生一个中断请求。该 中断在传送开始后立刻发生,也就是,当字节正在发送时,新的字节能够装入数据缓冲器。
PERCFG 外设控制寄存器(结合串口外设 I/O 引脚映射)
波特率的设置
UxBAUD 波特率控制寄存器
UxGCR 通用控制寄存器
UxDBUF 接收/发送数据缓存寄存器
UxUCR UART 控制寄存器
UxCSR 控制和状态寄存器