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

    文章

    19135

    浏览量

    228926
  • led
    led
    +关注

    关注

    240

    文章

    23100

    浏览量

    657732
  • 寄存器
    +关注

    关注

    31

    文章

    5305

    浏览量

    119909
收藏 人收藏

    评论

    相关推荐

    CC2530 GPIO口输入配置配置步骤

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

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

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

    基于CC2530的SDHC卡读写设计

    提出了将SDHC卡作为CC2530的外部存储设备实现数据存储的方法。SDHC卡具有体积小、存储容量大的特点,通过CC2530组建的无线传感网络适用于工业监测,而将SDHC卡与CC2530
    发表于 05-02 14:28 3596次阅读
    基于<b class='flag-5'>CC2530</b>的SDHC卡读写设计

    cc2530的PWM实现

    CC2530 结合了领先的RF 收发器的优良性能,业界标准的增强型8051 CPU,系统内可编程闪存,8-KB RAM 和许多其它强大的功能。CC2530 有四种不同的闪存版本:CC2530F32/64/128/256,分别具有
    发表于 11-07 18:43 3998次阅读
    <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.2w次阅读
    <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次下载

    基于WSN的信号灯控制系统设计与实现

    基于WSN的信号灯控制系统设计与实现
    发表于 05-29 11:52 4次下载

    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 引脚配置函数

    CC2530 引脚配置函数使用下面的函数可以避免麻烦的位逻辑运算,GPIO_Config.c:/*驱动文件:配置引脚作者:JX*/#include<ioCC2530.h>
    发表于 11-29 19:06 12次下载
    <b class='flag-5'>CC2530</b> 引脚配置函数

    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灯

    CC2530按键控制流水灯设计

      实验目的   1)、通过实验掌握CC2530芯片GPIO的配置方法,带你一步步走进嵌入式大门   2)、握Led驱动电路及开关Led的原理   3)、掌握检测按键的方法
    发表于 04-11 15:55 8次下载

    CC2530按键控制LED开关实验

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

    CC2530驱动OLED源代码

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

    cc2530继电器模块使用

    CC2530继电器模块是一款基于TI公司的低功耗无线通信芯片CC2530的继电器应用模块。它能实现物联网设备之间的远程控制,广泛应用于家庭自动化、工业
    的头像 发表于 12-21 14:47 1400次阅读