CC2530寄存器编程学习笔记_点灯

下面是我的CC2530的学习笔记之点灯部分。

第一步:分析原理图

找到需要对应操作的硬件

  图 1

通过这个图1我们可以找到LED1和LED2连接的引脚,分别是P1_0和P1_1。


第二步 分析原理图

   图 2  

  • 通过图2 确认P1_0和P1_1引脚连接到LED,并且这些引脚可以通过单片机控制。

LED连接到两个引脚:P1_0和P1_1,这两个引脚属于并行IO口。可以看到当P1_0和P1_1输出高电平时,LED灯就会亮。这两个引脚由单片机控制,当P1_0和P1_1输出1(0低电平)时,LED灯亮。


 第三步 查手册设置引脚和配置寄存器

第一步 将引脚设为通用模式

        首先我们要知道 CC2530 有3组端口 P0 P1 P2 ---> P0 P1 有8个引脚 P2 有5个引脚。合起来21个数字输入/输出引脚。可以配置为通用数字I/O或外设I/O信号,配置为连接到ADC、定时器或 USART 外设。这些 I/O 口的用途可以通过一系列寄存器配置,由用户软件加以实现。

I/O 端口具备如下重要特性:
  • 21 个数字 I/O 引脚
  • 可以配置为通用 I/O 或外部设备 I/O
  • 输入口具备上拉或下拉能力
  • 具有外部中断能力。
        21 个 I/O 引脚都可以用作于外部中断源输入口。因此如果需要外部设备可以产生中断。外部中断功能也可以从睡眠模式唤醒设备。

        对于CC2530单片机的P1_0和P1_1引脚,配置为通用I/O口而不是外设I/O口是因为我们需要直接控制这些引脚的电平状态来实现LED的点亮和熄灭。外设I/O口通常用于特定的硬件外设(如UART、SPI、I2C等),而在这种情况下,选择通用I/O口更适合用于简单的引脚电平控制。别纠结 反正就是选通用就对了。


                                                                        图 3

                                                                    图 4  此图来自手册  

        我们根据图3 和图4 篮框部分可以看到如果我们需要配置端口功能为通用IO口,就选择PxSEL寄存器因为我们是P1_0和P1_1引脚。 所以我们就选择P1SEL寄存器。

PxSEL寄存器: 

        PxSEL寄存器(这里的x可以是0、1或2)用来决定每个引脚的用途。你可以把它想象成一个开关板,每个开关对应一个引脚。这个开关可以让引脚变成普通的输入/输出口(就像家里的开关控制灯的开关),或者让引脚连接到单片机内部的特殊功能(比如UART、SPI等外设)。

         默认情况下,当单片机复位(重启)后,所有的引脚都会被设置成普通的输入口。这就像家里的所有开关在重启后都默认是关闭状态,等你需要的时候再手动打开。

 

                                                             图 5 此图来自手册 

  要将P1_0和P1_1引脚配置为普通I/O口,可以这样设置:

P1SEL &= ~0x03; /将P1_0和P1_1配置为通用I/O 把第0位和第1位置为0。
引脚从0 开始  0 1 2 3 4 5 6 7 共8位
             0 0 0 0 0 0 0 0
///          0 0 0 0 0 0 1 1 如果你要配置为外设IO 就把对应位,置为1就可以了

 第二步 设置引脚方向为输出

        在将方向设置为输出的时候,我们要先知道什么是输入输出,不需要多懂,简单了解一下就好了,懂这个为啥设为输出即可。

输入:输入是指检测各个引脚上的电平状态。

电平状态:电平状态分为高电平和低电平。高电平表示有电压,通常用数字符号1表示;低电平表示接地,通常用数字符号0表示。

应用示例:一个常见的输入例子是按钮。当按钮按下时,引脚检测到高电平(1);当按钮松开时,引脚检测到低电平(0)。

输出:输出是指控制引脚电平的高低状态。

电平状态:通过设置引脚的电平状态,可以控制外部设备。例如,高电平(1)可以点亮LED,低电平(0)可以熄灭LED。

应用示例:你提供的图片就是一个输出的例子。P1_0和P1_1引脚通过电阻连接到LED,当引脚输出高电平时,LED亮起;当引脚输出低电平时,LED熄灭。

                                                            图 6 此图来自手册 

                                                                     图  7

       我们根据图6 和图7 篮框部分可以看到如果我们需要配置改变方向为输入,就选择PxDIR寄存器因为我们是P1_0和P1_1引脚。 所以我们就选择P1DIR寄存器。

PxDIR寄存器的作用

        PxDIR寄存器就像一个控制面板,用来决定每个引脚是作为输入还是输出。每个引脚都有一个对应的开关(位),你可以通过这个开关来设置引脚的方向是输入还是输出。

                                                               图 8

代码如下:

P1SEL &= ~0x03; /将P1_0和P1_1配置为通用I/O
P1DIR |= 0x03; // 将P1_0和P1_1设置为输出

 写到这里我们的寄存器配置就完成了。

 第四步 软延时

void delay(int num) 
{ 
    int i = 0; 
    for(i = 0; i < num; i++) 
    { 
        int j = 0; 
        for(j = 0; j <400; j++) 
          {
          
          }
    } 
} 

这个软延时不精准,但是能达到延时的作用了,为了闪烁嘛

下面我们就可以来编写简单的LED闪烁的代码了,下面是代码的流程图;

代码

那下面就请你根据这个图来完善你的代码喽 实现LED灯闪烁

#include "ioCC2530.h" 
#define LED1 P1_0 
#define LED2 P1_1 
 
void LED_Init() 
{ 
    P1SEL &= ~0X03; 
    P1DIR |= 0X03; 
    LED1 = 0; 
    LED2 = 0; 
} 
 
void delay(int num) 
{ 
    int i = 0; 
    for(i = 0; i < num; i++) 
    { 
        int j = 0; 
        for(j = 0; j <400; j++) 
          ; 
    } 
} 
 
void main() 
{ 
    LED_Init(); 
    while(1) 
    {
        LED1 = !LED1; 
        LED2 = !LED2; 
        delay(1000); 
    } 
}

芜湖 完结 撒花

附上原理图        

  • 29
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值