0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于C語言驅(qū)動CC2530的GPIO實現(xiàn)對信號燈控制

454398 ? 來源:博客園 ? 作者:Reqaw ? 2020-10-19 11:30 ? 次閱讀

本問主要介紹了CC2530處理器的通用輸入/輸出接口(GPIO),以及GPIO的位操作,理解GPIO的基本原理和功能,最后使用C語言驅(qū)動CC2530的GPIO實現(xiàn)對信號燈的控制。

CC2530的GPIO引腳有3個8位端口,分別是端口0,端口1和端口2,分別表示位P0,P1,P2,其中P0和P1是8位端口,而P2只有5位可用,所有端口均可以通過SFR寄存器來進(jìn)行位尋址和字節(jié)尋址。

寄存器PxSEL中的x表示端口0~2,用來設(shè)置端口的每個引腳位GPIO(0)或者外部設(shè)備輸入信號(1),在默認(rèn)情況下,當(dāng)復(fù)位之后,所有的數(shù)字輸入/輸出引腳都設(shè)置為通用輸入引腳。

寄存器PxDIR用來改變一個端口引腳的方向,0設(shè)置為輸入,1設(shè)置為輸出。

GPIO一般是通過位操作完成寄存器設(shè)置的,而常用的位操作符有按位與“&”,按位或“|”,按位取反“~”,按位異或“^”,以及左移“<<”和右移“>>”操作。值得注意的是常使用按位或運算符將一個數(shù)據(jù)位置1,比如將P0端口方向寄存器的第一位和第二位置1(P0端口的0和1引腳置為輸出模式),可以寫為P0DIR |= 0x03;常使用按位與“&”將一個數(shù)據(jù)位置0,比如P0SEL &= ~0x03;,表示將將端口0和1配置位GPIO模式。

通過查看電路圖,實現(xiàn)CC2530微處理器開發(fā)板上的紅燈亮,只需使P0_1為0即可。

驅(qū)動程序如下:

 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){//定義延時函數(shù)
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 }

燒寫完成后,可以看到綠燈常亮,按鍵被按下之后紅燈改變一次狀態(tài),功能完成。

需要思考的是有時按鍵控制led時不太準(zhǔn)確,后者說不太靈敏,從而引入下一節(jié),通過中斷使得按鍵控制led更加準(zhǔn)確。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    18927

    瀏覽量

    227251
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    22907

    瀏覽量

    650155
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119212
收藏 人收藏

    評論

    相關(guān)推薦

    CC2530 GPIO口輸入配置配置步驟

    介紹CC2530 GPIO口輸入配置配置。
    的頭像 發(fā)表于 07-06 14:40 ?2131次閱讀
    <b class='flag-5'>CC2530</b> <b class='flag-5'>GPIO</b>口輸入配置配置步驟

    CC2530控制LED閃爍該如何去實現(xiàn)

    CC2530控制LED閃爍CC2530 控制LED閃爍電路圖知識點CC2530有兩個高頻時鐘輸入輸出配置程序及注釋
    發(fā)表于 01-24 07:51

    基于CC2530的SDHC卡讀寫設(shè)計

    提出了將SDHC卡作為CC2530的外部存儲設(shè)備實現(xiàn)數(shù)據(jù)存儲的方法。SDHC卡具有體積小、存儲容量大的特點,通過CC2530組建的無線傳感網(wǎng)絡(luò)適用于工業(yè)監(jiān)測,而將SDHC卡與CC2530
    發(fā)表于 05-02 14:28 ?3551次閱讀
    基于<b class='flag-5'>CC2530</b>的SDHC卡讀寫設(shè)計

    cc2530的PWM實現(xiàn)

    CC2530 結(jié)合了領(lǐng)先的RF 收發(fā)器的優(yōu)良性能,業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型8051 CPU,系統(tǒng)內(nèi)可編程閃存,8-KB RAM 和許多其它強(qiáng)大的功能。CC2530 有四種不同的閃存版本:CC2530F32/64/128/256,分別具有
    發(fā)表于 11-07 18:43 ?3942次閱讀
    <b class='flag-5'>cc2530</b>的PWM<b class='flag-5'>實現(xiàn)</b>

    cc2530程序設(shè)計實例之CC2530 RF部分使用—實現(xiàn)點對點收發(fā)

    本文主要介紹了cc2530程序設(shè)計實例之CC2530 RF部分使用—實現(xiàn)點對點收發(fā),通過串口調(diào)試助手發(fā)送字節(jié)數(shù)據(jù)。例如通過串口向設(shè)備A發(fā)送HelloCC2530,設(shè)備B可收到Hello
    發(fā)表于 12-09 12:22 ?2.2w次閱讀
    <b class='flag-5'>cc2530</b>程序設(shè)計實例之<b class='flag-5'>CC2530</b> RF部分使用—<b class='flag-5'>實現(xiàn)</b>點對點收發(fā)

    CC2530 GPIO輸出控制-控制Led亮滅實驗資料下載

    CC2530 GPIO輸出控制-控制Led亮滅實驗資料下載
    發(fā)表于 05-03 09:47 ?1次下載

    CC2530GPIO輸出控制-Led閃爍、流水燈實驗資料下載

    CC2530GPIO輸出控制-Led閃爍、流水燈實驗資料下載
    發(fā)表于 05-03 09:42 ?5次下載

    基于WSN的信號燈控制系統(tǒng)設(shè)計與實現(xiàn)

    基于WSN的信號燈控制系統(tǒng)設(shè)計與實現(xiàn)
    發(fā)表于 05-29 11:52 ?4次下載

    CC2530控制LED閃爍

    CC2530控制LED閃爍CC2530 控制LED閃爍電路圖知識點CC2530有兩個高頻時鐘輸入輸出配置程序及注釋
    發(fā)表于 11-29 18:51 ?15次下載
    <b class='flag-5'>CC2530</b><b class='flag-5'>控制</b>LED閃爍

    CC2530 引腳配置函數(shù)

    CC2530 引腳配置函數(shù)使用下面的函數(shù)可以避免麻煩的位邏輯運算,GPIO_Config.c:/*驅(qū)動文件:配置引腳作者:JX*/#include<ioCC2530.h>
    發(fā)表于 11-29 19:06 ?12次下載
    <b class='flag-5'>CC2530</b> 引腳配置函數(shù)

    CC2530 GPIO 控制LED燈

    I/O 控制寄存器寫入數(shù)據(jù)可以控制 I/O 口輸入輸出模式,實現(xiàn)對某些設(shè)備的控制信號采集的功能。若將通用 I/O 進(jìn)行組合配置可以
    發(fā)表于 11-29 19:51 ?11次下載
    <b class='flag-5'>CC2530</b> <b class='flag-5'>GPIO</b> <b class='flag-5'>控制</b>LED燈

    CC2530按鍵控制流水燈設(shè)計

      實驗?zāi)康?   1)、通過實驗掌握CC2530芯片GPIO的配置方法,帶你一步步走進(jìn)嵌入式大門   2)、握Led驅(qū)動電路及開關(guān)Led的原理   3)、掌握檢測按鍵的方法
    發(fā)表于 04-11 15:55 ?8次下載

    CC2530按鍵控制LED開關(guān)實驗

      實驗?zāi)康?   1)、通過實驗掌握CC2530芯片GPIO的配置方法   2)、掌握Led驅(qū)動電路及開關(guān)Led的原理   3)、掌握檢測按鍵的方法
    發(fā)表于 04-11 15:32 ?6次下載

    CC2530驅(qū)動OLED源代碼

    CC2530驅(qū)動OLED源代碼
    發(fā)表于 09-27 14:48 ?2次下載

    cc2530繼電器模塊使用

    CC2530繼電器模塊是一款基于TI公司的低功耗無線通信芯片CC2530的繼電器應(yīng)用模塊。它能實現(xiàn)物聯(lián)網(wǎng)設(shè)備之間的遠(yuǎn)程控制,廣泛應(yīng)用于家庭自動化、工業(yè)
    的頭像 發(fā)表于 12-21 14:47 ?1174次閱讀