下你所需,载你所想!
汇集开发技术源码资料

通过CC2530的通用IO口点亮LED1和LED2

:1.064MB :1 :2022-09-19 13:21:52

部分简介

?通过CC2530的通用IO口点亮LED1和LED2如果开发者对于本文件有需要的可以参考,
【实例简介】

基础开发是用来熟悉CC2530F256的资源组成和各接口控制使用,为后面进行基于协议栈应用开发,组网和数据传输时打下基础。通过CC2530的通用IO口点亮LED1和LED2。

【实例原理】

1)先了解LED连接原理图,如下图所示,可以看到P1_0、P1_1两个IO是CC2530的P1端口来控制LED灯亮灭,需要设置CC2530 P1[1:0]为通用IO口、输出模式,这样输出低电平时点亮,高电平时灭。

2)CC2530有三个端口P0[7:0]、P1[7:0]、P2[4:0]共21个通用IO口,设置PX(X=0~2)端口时,主要配置三个寄存器,通过三个寄存器配置21个通用IO:

PXSEL:0为默认通用IO,1为功能接口(如UART串口、TIMER定时器等,后面再研究);

PXDIR:0为默认输入,1为输出;

PXINP:0默认为上拉/下拉,1为三态;在上拉和下拉选择中,在P2INP中进行设置,如下图P2INP[7:5]三位来设置,0默认为上拉,1为下拉。

通用IO配置详细参考CC2530 datasheet.pdf P78开始,上面总结可以看出P2INP[7:5]的设置是针对整个PX端口设置上拉或下拉,在设计作为输入IO时要注意整个端口所有IO电平匹配情况。

3)总结CC2530的IO 口配置后,我们回到具体设计中来,点LED需要配置三个寄存器P1SEL、P1DIR、P1INP:

P1SEL &=~0x03; //00000011取反后与原P1SEL值相与,再赋值给P1SEL,确定最后两位为

//00,即P1_1、P1_0作为通用IO口,其它6位保留原状态

P1DIR |= 0x03; // 00000011与原P1DIR值相或,再赋值给P1DIR,确定最后两位为11,

//即P1_1、P1_0作为输出,其它6位保留原状态

P1INP &=~0X03; // 00000011取反后与原P1INP值相与,再赋值给P1INP,确定最后两位为

//00,即P1_1、P1_0选择上拉/下拉,考虑作为输出,可以不关注上拉还是

//下拉的选择,所以不设置P2INP。

在没有复杂的设计时,我们可以利用默认值简化设计,由于 CC2530 寄存器初始化时默认是: P1SEL =0x00; P1DIR =0x00; P1INP =0X00; P2INP =0X00;

所以 IO 口初始化我们可以简化初始化指令: P1DIR |= 0x03;

【核心代码】
源程序代码。

热门推荐

相关文章