久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12079|回復: 0
打印 上一主題 下一主題
收起左側

CC2530 GPIO輸出控制實驗-控制Led亮滅的詳細教程

[復制鏈接]
跳轉到指定樓層
樓主
ID:244570 發表于 2017-11-1 22:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1.實驗目的
1.GPIO輸出控制實驗-控制Led亮滅

1) 通過實驗掌握 CC2530 芯片 GPIO 的配置方法,帶你一步步走進嵌入式大門
2) 掌握 Led 驅動電路及開關 Led 的原理
3) 試著看數據手冊 cc2530-datasheet.pdf
2.實驗設備


硬件:PC 機
一臺

EB2530(底板、核心板、仿真器、USB線)
一套
軟件:2000/XP/win7 系統,IAR 8.10 集成開發環境
3.實驗相關電路圖


由于發光二級管單向導電特性,即只有在正向電壓(二極管的正極接正,負極接負)下才 能導通發光。P1.0 引腳接發光二極管(D1)的負極,所以 P1.0 引腳輸出低電平 D1 亮,P1.0 引腳輸出亮電平 D1 熄滅。

提示:TI 官方的開發板是高電平點亮 LED 哦,我們的板子是低電平亮,更符合國人習慣, 后面協議棧也是一樣的。
更多電路圖請看“EB2530\相關資料與軟件\原理圖和參考 PCB”下的原理圖
4.實驗相關寄存器 操作P1.0我們需要掌握相關寄存器的作用和配置方法。如下表所示(更詳細的介紹請參考 “EB2530\相關資料與軟件\cc2530-datasheet.pdf,英文不好的可參考CC2530中文數據手 冊完全版.pdf,翻譯有250頁并非官方中文,有個別地方有錯,請以英文為主哦”):

寄存器
作用

描述
P1 (0x90)
端口 1
端口 1。通用 I / O 端口。可以從 SFR 位尋址。


P1SEL(0xF4)


端口 1 功能選擇
P1.7 到 P0.0 功能選擇
0: 通用 I / O
1: 外設功能



P1DIR(0xFE)


端口 1 方向
P1.7 到 P1.0 的 I/O 方向
0: 輸入
1: 輸出




P1INP(0xF6)



端口 1 輸入模式
P1.7 到 P1.2 的 I/O 輸入模式。由于 P1.0 和 P1.1 沒有

上拉/下拉功能, P1INP 暫時不需要配置, 了解一下為后面的實驗打下基礎

0: 上拉/下拉(見 P2INP (0xF7)–端口 2 輸入模式)
1: 三態


按照表格寄存器的內容,對 P1.0 口進行配置,當 P1.0 輸出低電平時 D1 被點亮。 所以配 置如下:
P1SEL &=~0x01;  //配置P1.0為通用IO口
P1DIR |= 0x01;  //配置 P1.0 為輸出
由于 CC2530 寄存器初始化時默認值為(詳細說明請參考 CC2530 數據手冊(中文).pdf):

P1SEL = 0x00; P1DIR = 0x00; P1INP = 0x00;

所以 IO 口初始化我們可以簡化初始化指令: P1DIR |= 0x01;   //配置 P1.0 為輸出


也許有人會問手冊怎么看啊?那么多頁。我們看手冊是并非一章章看下去,那樣太浪費時 間,恐怕看兩個星期也看不完。現在教大家一個方法,比如這個實現是講 GPIO 我們就直 接看 CC2530 中文數據手冊完全版.pdf 7.IO 端口那一章,再不行找一個代碼中使用的寄存器 搜索,這方法高效吧,多做一些實驗,你看的也多了基本上也就會了,方法很重要。

5.源碼分析
打開 “EB2530\第 3 章 基礎實驗\1.GPIO 輸出控制實驗-控制 Led 亮滅\Led\Led.eww”
工程,也可以在文件夾雙擊“Led.eww”。我們先分析一下源碼后再調試程序
  1. /****************************************************************************
  2. * 文 件 名: main.c
  3. * 作    者: Andy
  4. * 修    訂: 2013-01-08
  5. * 版    本: 1.0
  6. * 描    述: GPIO 輸出控制實驗 1 操作 IO 口控制 LED 燈的亮和滅
  7. ****************************************************************************/
  8. #include <ioCC2530.h>
  9. typedef unsigned char uchar;
  10. typedef unsigned int  uint;
  11. #define LED1 P1_0                //定義 P1.0 口為 LED1 控制端
  12. /****************************************************************************
  13. * 名    稱: DelayMS()
  14. * 功    能: 以毫秒為單位延時 16M 時大約為 530,系統時鐘不修改默認為 16M
  15. * 入口參數: msec 延時參數,值越大,延時越久
  16. * 出口參數: 無
  17. ****************************************************************************/
  18. void DelayMS(uint msec)
  19. {
  20. uint i,j;
  21. for (i=0; i<msec; i++)
  22. for (j=0; j<530; j++);
  23. }
  24. /****************************************************************************
  25. * 名              稱: InitLed()
  26. * 功              能: 設置 LED 燈相應的 IO 口
  27. * 入口參數: 無
  28. * 出口參數: 無
  29. ****************************************************************************/
  30. void InitLed(void)
  31. {
  32. P1DIR |= 0x01;              //P1.0 定義為輸出口
  33. }
  34. /****************************************************************************
  35. * 程序入口函數
  36. ****************************************************************************/
  37. void main(void)
  38. {
  39. InitLed();              //設置 LED 燈相應的 IO 口
  40. while(1)              //死循環
  41. {
  42. LED1 = 0;                //點亮 LED1
  43. DelayMS(1000);           //延時 1 秒 LED1 = 1;                //LED1 熄滅DelayMS(1000);           //延時 1 秒
  44. }
復制代碼

6.仿真下載程序、調試(根據自己的仿真器擇以下一種連接方式

1) SmartRF04EB 仿真器連接如下圖:







2) CC Debugger 連接如下圖:




如果編譯有錯誤,請參考最后一頁圖片說明。沒有錯誤請繼續
下載調試程序,顯示如下圖所示:


如果程序錯誤我們怎么跟蹤呢?這時我們就要發揮仿真器的作用了,方法如下:
先打斷點讓程序停在斷點處再單步跟蹤變量的值。選定變量“Add to watch”即可。
光標放在要打斷點的所在行,我們打在 main.c 的第 27 號,然后點
,或者在所在行行首雙擊,也會出現一個斷點,再次雙擊可以取消此斷點。





再點全速運行,如果程序停在斷點處時會變成綠色,如下圖所示

雙擊紅色圓點即可取消斷點,再點全速運行程序就運行了,可以觀察實現現象了。


怎么觀察變量的值呢?選定變量右鍵在彈出的窗口選擇“Add to watch”即可。


好了,一定要學會仿真調試哦,這是解決問題最常用的方法,也是嵌入式開發中最常用的 仿真方法,大部分集成環境調試方法都大同小異的。以后的實驗中就不重復講仿真的方 法 ,靈活使用仿真器會大大提高開發進度。如果你有兩個仿真器并且 ID 不同時,可以在 一臺電腦同時跟蹤兩種設備,調試無線通訊中問題到底是協調器代碼有問題,還是終端代 碼有問題。此時就能發現兩個仿真器是如此強大,效率也大大提高。希望大家掌握!




編譯常用錯誤如圖所示:

1.






一般是由于 IAR 沒有裝在 C 盤造成的,修改工程 Linker 項即可,以后每個實驗都要修改

哦,還是安裝在默認路徑省事。





2.


軟件沒有注冊,請重新安裝 IAR,在第 5.6 步要仔細看。 實驗常見問題

問題 1:為什么要用 P1_0 呢,這是硬件決定的,如果想用其它 IO 引腳就要自己跳線了


問題 2:為什么用以下賦值,直接寫等于不是更簡單?
P1DIR |= 0x01;               //P1.0 定義為輸出口 P1SEL &=~0x01;
嵌入式中位運算只修改要修改的位,不要影響到其它位,直接等于同時也改變了其它位的狀態哦,在基礎實驗功能單一,感覺不出來,如果在協議棧中就有嚴重問題了;并且用上述寫法一眼就知道操作 的位,易懂。

完整的pdf格式文檔51黑下載地址:
1.GPIO輸出控制實驗-控制Led亮滅.pdf (1.37 MB, 下載次數: 10)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av黄色在线观看 | 亚洲精品成人av久久 | 亚洲第一av网站 | 国产精品性做久久久久久 | 日韩成人一区 | 人人爽人人爽人人片av | cao视频| 亚洲精品一二三 | 日本久久久久久 | 91黄在线观看 | 色偷偷人人澡人人爽人人模 | 欧美自拍日韩 | 成人在线视频免费观看 | 欧美综合精品 | 瑞克和莫蒂第五季在线观看 | 国产精品一区三区 | 久久国产精品72免费观看 | 亚洲免费视频一区 | 亚洲精品乱码久久久久久按摩观 | 99精品国产一区二区青青牛奶 | 99在线精品视频 | 国产一区二区不卡 | 国产亚洲一区二区精品 | 一区二区三区 在线 | 日韩中文字幕第一页 | 成人小视频在线免费观看 | 美女黄色在线观看 | 日韩视频一区二区三区 | 亚洲国产精品久久久久秋霞不卡 | 久久高潮 | 国产成人a亚洲精品 | 中文字幕在线观 | 狠狠躁夜夜躁人人爽天天高潮 | 精品久久久一区 | 欧洲一区二区三区 | 国产福利91精品 | 久久久久久免费精品一区二区三区 | 免费av毛片| 亚洲欧美日韩久久久 | 亚洲激情第一页 | 国产免费国产 |