0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于C语言驱动CC2530的GPIO实现对信号灯控制

454398 来源:博客园 作者:Reqaw 2020-10-19 11:30 次阅读

本问主要介绍了CC2530处理器的通用输入/输出接口(GPIO),以及GPIO的位操作,理解GPIO的基本原理和功能,最后使用C语言驱动CC2530的GPIO实现对信号灯的控制。

CC2530的GPIO引脚有3个8位端口,分别是端口0,端口1和端口2,分别表示位P0,P1,P2,其中P0和P1是8位端口,而P2只有5位可用,所有端口均可以通过SFR寄存器来进行位寻址和字节寻址。

寄存器PxSEL中的x表示端口0~2,用来设置端口的每个引脚位GPIO(0)或者外部设备输入信号(1),在默认情况下,当复位之后,所有的数字输入/输出引脚都设置为通用输入引脚。

寄存器PxDIR用来改变一个端口引脚的方向,0设置为输入,1设置为输出。

GPIO一般是通过位操作完成寄存器设置的,而常用的位操作符有按位与“&”,按位或“|”,按位取反“~”,按位异或“^”,以及左移“<<”和右移“>>”操作。值得注意的是常使用按位或运算符将一个数据位置1,比如将P0端口方向寄存器的第一位和第二位置1(P0端口的0和1引脚置为输出模式),可以写为P0DIR |= 0x03;常使用按位与“&”将一个数据位置0,比如P0SEL &= ~0x03;,表示将将端口0和1配置位GPIO模式。

通过查看电路图,实现CC2530微处理器开发板上的红灯亮,只需使P0_1为0即可。

驱动程序如下:

 1 #include "iocc2530.h"
 2 
 3 #define uint unsigned int
 4 #define uchar unsigned char 
 5 
 6 #define Rled P1_1
 7 #define Gled P1_0
 8 #define ON  0
 9 #define OFF 1
10 #define Key1 P1_4
11 
12 void delay(uint n){//定义延时函数
13     uint i, j;
14     for(i = 0; i < n; i++)
15         for(j = 500; j >= 0; j--);
16 }
17 void key_init(){
18     P1SEL &= 0x10;//GPIO模式
19     P1DIR &= 0x10;//输出模式
20 }
21 void led_init(){
22     P1SEL &= ~0x03;//GPIO模式
23     P1DIR |= 0x03; //输出模式
24 
25     Rled = OFF;
26     Gled = OFF;
27 }
28 void main()
29 {
30     led_init();//led初始化
31     key_init();//案件初始化
32     Rled = ON;//打开红灯
33     
34     while(1){
35          if(Key1 == ON){
36              delay(1000);   //消抖
37              if(Key1 == ON){
38                 while(Key1 == ON);//松手检测
39 
40                 Rled = ~Rled;
41             }
42          }
43     }
44 }

烧写完成后,可以看到绿灯常亮,按键被按下之后红灯改变一次状态,功能完成。

需要思考的是有时按键控制led时不太准确,后者说不太灵敏,从而引入下一节,通过中断使得按键控制led更加准确。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18269

    浏览量

    222118
  • led
    led
    +关注

    关注

    237

    文章

    22446

    浏览量

    645849
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117712
收藏 人收藏

    评论

    相关推荐

    CC2530 GPIO口输入配置配置步骤

    介绍CC2530 GPIO口输入配置配置。
    的头像 发表于 07-06 14:40 1490次阅读
    <b class='flag-5'>CC2530</b> <b class='flag-5'>GPIO</b>口输入配置配置步骤

    Cc2530

    CC2530
    三分温柔
    发布于 :2022年05月31日 21:12:52

    请问CC2530CC2538的GPIO怎么使用?

    如:我使用的CC2530GPIO寄存器的P1端口的第一个引脚P1_1,现在我使用的是CC2538控制器,我想使用PD端口的第一个引脚PD1,我该如何编写?
    发表于 08-18 06:13

    CC2530控制LED闪烁该如何去实现

    CC2530控制LED闪烁CC2530 控制LED闪烁电路图知识点CC2530有两个高频时钟输入输出配置程序及注释
    发表于 01-24 07:51

    cc2530的PWM实现

    CC2530 结合了领先的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM 和许多其它强大的功能。CC2530 有四种不同的闪存版本:CC2530F32/64/128/256,分别具有
    发表于 11-07 18:43 3841次阅读
    <b class='flag-5'>cc2530</b>的PWM<b class='flag-5'>实现</b>

    cc2530程序设计实例之CC2530 RF部分使用—实现点对点收发

    本文主要介绍了cc2530程序设计实例之CC2530 RF部分使用—实现点对点收发,通过串口调试助手发送字节数据。例如通过串口向设备A发送HelloCC2530,设备B可收到Hello
    发表于 12-09 12:22 2.1w次阅读
    <b class='flag-5'>cc2530</b>程序设计实例之<b class='flag-5'>CC2530</b> RF部分使用—<b class='flag-5'>实现</b>点对点收发

    CC2530 GPIO输出控制-控制Led亮灭实验资料下载

    CC2530 GPIO输出控制-控制Led亮灭实验资料下载
    发表于 05-03 09:47 1次下载

    CC2530GPIO输出控制-Led闪烁、流水灯实验资料下载

    CC2530GPIO输出控制-Led闪烁、流水灯实验资料下载
    发表于 05-03 09:42 5次下载

    CC2530控制LED闪烁

    CC2530控制LED闪烁CC2530 控制LED闪烁电路图知识点CC2530有两个高频时钟输入输出配置程序及注释
    发表于 11-29 18:51 15次下载
    <b class='flag-5'>CC2530</b><b class='flag-5'>控制</b>LED闪烁

    CC2530 GPIO 控制LED灯

    向 I/O 控制寄存器写入数据可以控制 I/O 口输入输出模式,实现对某些设备的控制信号采集的功能。若将通用 I/O 进行组合配置可以
    发表于 11-29 19:51 11次下载
    <b class='flag-5'>CC2530</b> <b class='flag-5'>GPIO</b> <b class='flag-5'>控制</b>LED灯

    实现(4)---CC2530实现采集温湿度(纯采集)

    和气体浓度的采集之后再将这两个分别和协议栈融合,成为真正可以实现无线传输的感知层。(1)实验器材:CC2530,DHT11温湿度传感器,CC2530仿真器,电脑、IAR软件。(2)目的:1.通过该实验掌握
    发表于 11-29 21:06 20次下载
    <b class='flag-5'>实现</b>(4)---<b class='flag-5'>CC2530</b><b class='flag-5'>实现</b>采集温湿度(纯采集)

    CC2530按键控制LED开关实验

      实验目的   1)、通过实验掌握CC2530芯片GPIO的配置方法   2)、掌握Led驱动电路及开关Led的原理   3)、掌握检测按键的方法
    发表于 04-11 15:32 5次下载

    CC2530查询方式使用定时器

      实验目的   1)、通过实验掌握 CC2530 芯片 GPIO 的配置方法   2)、掌握 Led 驱动电路及开关 Led 的原理   3)、掌握定时器 T1 的配置与使用
    发表于 04-11 15:35 3次下载

    CC2530驱动OLED源代码

    CC2530驱动OLED源代码
    发表于 09-27 14:48 1次下载

    cc2530总中断控制位是什么?

    cc2530是一款著名的无线通信芯片,它内置了丰富的功能和资源,其中包括总中断控制位。在本文中,将介绍cc2530总中断控制位的概念、作用、使用方法以及注意事项。 首先,让我们来了解一
    的头像 发表于 01-08 09:37 362次阅读