CC2530嵌入式系统入门学习-1

1,前言

CC2530和STM32是不同类型的单片机,其二者的区别主要如下,目前我主要想实现组网功能,然后将STM32与CC2530结合起来使用,利用CC2530的无线通讯与组网优势,结合STM32的灵活性,开发一套产品,下面就开启我的CC2530自学之路。

STM32

是一款广泛使用的微控制器,适用于多种应用场景。

需要额外的无线通信模块才能实现组网功能,灵活性高,可以支持多种通信协议(如Wi-Fi、蓝牙等)。

CC2530

是专门用于无线通信的芯片,支持Zigbee协议。

内置无线功能,适合构建低功耗、低数据速率的无线传感器网络。

2,点个灯吧

不管学什么系列的单片机,都首先是点灯,作为点灯大师,先用CC2530点个灯吧。针对嵌入式系统来说,软件与硬件都是紧密联系的,我个人认为在学一个历程之前,首先要有自己的思路和目标,按照之前我做STM32单片机的经验来说,学习思路可以分为先硬件后软件,最后debug的思路去做。

2.1 硬件电路

首先观察LED灯部分的电路图,其电路图如下:

根据电路图,可以发现,当P1_0和P1_1电平为高电平时,电路不导通,灯灭,电平为低电平时,电路导通,灯亮。这也就给了我们软件程序的思路,无非就是控制P1_0和P1_1等引脚输出高电平与低电平而已。

2.2 寄存器选择

如果我们想要控制P1_0等引脚,我们需要知道该端口所在的寄存器,针对寄存器进行处理,本例程中,使用的寄存器为P1SEL和P1DIR两个,具体如何使用,这时候就用到CC2530的数据手册了,内容如下:

P1SEL是端口1的功能选择,针对本例程来说,我们选择通用I/O功能,至于通用IO与外设功能的区别,如下:

·  通用 I/O 功能

  • 引脚作为普通的输入或输出使用。
  • 主要用于控制或读取引脚电平

·  外设功能

  • 引脚用于外设的特定功能,如串口、定时器、SPI 等。
  • P1SEL 寄存器的相应位设置为 1 时,引脚配置为外设功能。

P1DIR是端口1的方向选择,即确定输入还是输出,故针对本例程,设置程序如下:

关于|==的区别

·  0x13:这是十六进制数,表示二进制的 00010011。

·  |= 运算

  • 当前 P1DIR 的值与 0x13 进行按位或运算。
  • 只有 0x13 中为 1 的位(第 0、1、4 位)会将 P1DIR 中对应位设置为 1,其他位保持不变。

针对本例程

  • 如果 P1DIR 原来值是 00000000,执行后变为 00010011。

= 与 |= 的区别

  • =:直接赋值,将右侧的值赋给左侧变量。例如,P1DIR = 0x13; 会将 P1DIR 的所有位设置为 00010011,覆盖原有值。
  • |=:按位或赋值,将左侧变量与右侧值进行按位或运算后再赋值,仅更改特定位,而不影响其他位。例如,P1DIR |= 0x13; 只修改 0x13 中为 1 的位,其他位保持不变。

至此,完成了端口1的寄存器配置,然后接下来就是主程序中的调用,该程序中主要使用的是翻转实现GPIO的高低输出切换。

void main(void)

{

    InitIO();         //初始化LED灯控制IO口 

    while(1)                //死循环

    { 

       LED1 = !LED1;           // LED1灯闪一次

       Delay(10000);          

       LED2 = !LED2;           // LED2灯闪一次

       Delay(10000);

       LED3 = !LED3;           // LED3灯闪一次

       Delay(10000);

         }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值