小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

第二課Nordic藍(lán)牙開發(fā)板

 巴渭居士 2014-01-26
開始第二課!

1 跑馬燈
對于學(xué)習(xí)單片機(jī)編程的人來說,“跑馬燈”這個詞再熟悉不過了,它基本是我們?nèi)腴T的第一個例子。
本章我們就以“跑馬燈”為例子,講解nRF51822軟件編程的第一課:GPIO。
開始前還要嘮叨一句,記得用nRFgo Studio擦除整個芯片哦,因?yàn)樵瓉沓鰪S有藍(lán)牙程序的,不擦除不能下新的程序。

1.1 nRF51822 AK board硬件介紹
1.1.1 AK board (PCA10001)的LED資源
AK board PCA10001上有兩個按鍵和五個用戶可編程的LED,它們被連接到nRF51822芯片的特定引腳上。請看 Table 1(或者開發(fā)板背面).

Part        GPIO        Short
Button0        P0.16        
Button1        P0.17        
LED 0        P0.18        SB6
LED 1        P0.19        SB7
LED 2        P0.20        SB8
LED 3        P0.21        SB9
LED 4        P0.22        SB10
Table 1 按鍵和 LED 連接
注意:此SB非彼SB,這里應(yīng)該是short bridge的意思。板子上的某些GPIO被連到了特點(diǎn)的設(shè)備上(比如用于串口),但是同時也通過插針引出來了,如果你不想使用板載的功能,可以手動割斷這個SB。
這里再賣個關(guān)子,nRF51822有個很牛X的功能,類似于FPGA,這顆芯片的任意一個引腳可以配置成任意一個功能。以后的課程中會提到。

1.1.2 AK board LED原理圖
按鍵是低電平有效的,就是說按下按鍵后,IO的輸入端會被連接到地。按鍵沒有外部的上拉電阻,所以如果要使用P0.16 和 P0.17 引腳上的兩個按鍵,需要使能引腳的內(nèi)部上拉電阻。
Buttons.JPG

LED是高電平有效的,就是說寫一個邏輯的 (‘1’) 到相應(yīng)的輸出引腳,將點(diǎn)亮LED。
可能了解電子的朋友看到下面這個圖都會問:為什么是“共陰極”設(shè)計(jì),而不是一般的“共陽極”設(shè)計(jì)呢?
其實(shí)因?yàn)槲覀儗W(xué)習(xí)的這顆nRF51822芯片最大的一個特性就是低功耗,而這種低功耗必定是芯片經(jīng)常處于“睡眠”狀態(tài)。在“睡眠”狀態(tài)下,引腳電平都是低,LED只有設(shè)計(jì)成“共陰極”設(shè)計(jì)才能更省電。
LEDs.JPG

1.1.3 AK board (PCA10001)LED三維圖
3D.JPG

1.2.1 nRF51822的GPIO框圖
GPIO.JPG

1.3.1 nRF51822的GPIO寄存器簡介
Register        Offset        Description
保留        0x000        保留位[321]
OUT        0x504        寫GPIO端口,bit0對應(yīng)pin0,bit1對應(yīng)pin1...
OUTSET        0x508        set單一GPIO端口,寫“1”到0x00只能將pin0拉高,對其他pin無效
OUTCLR        0x50C        clear單一GPIO端口,寫“1”到0x00只能將pin0拉低,對其他pin無效
IN        0x510        讀GPIO端口,bit0對應(yīng)pin0,bit1對應(yīng)pin1...
DIR        0x514        設(shè)置GPIO端口方向,類同于OUT
DIRSET        0x518        設(shè)置GPIO端口方向,類同于OUTSET
DIRCLR        0x51C        設(shè)置GPIO端口方向,類同于OUTCLR
保留        0x520        保留位[120]
PIN_CNF[0]        0x700        pin0的配置,詳見后續(xù)內(nèi)容
....               
PIN_CNF[31]        0x77C        pin31的配置,詳見后續(xù)內(nèi)容

1.3.3 GPIO的PIN_CNF[x]寄存器簡介
ID        Field        Description
A        DIR        設(shè)置pin[x]的方向,與DIR(0x514)等寄存器關(guān)聯(lián),修改其中一個另外一個自動改變
B        INPUT        設(shè)置pin[x]的INPUT緩沖,為了省電可以寫“1”斷開緩沖,但是使用前必須寫“0”連接上
C        PULL        設(shè)置pin[x]的上下拉電阻,使用標(biāo)準(zhǔn)值為13kΩ的內(nèi)部電阻
D        DRIVE        設(shè)置pin[x]的驅(qū)動強(qiáng)度,std. drive, 0.5 mA,high-drive, 5 mA
E        DRIVE        設(shè)置pin[x]的電平感知,寫“1”感知高電平,寫“0”感知低電平

1.4 官方blink代碼樣例
使用官方例程即可點(diǎn)亮LED0和LED1的blink程序(安裝SDK后,源代碼位于<keil path>\ARM\Device\Nordic\nRF51822\Board\PCA10001\blinky_example\)
main函數(shù)請看:
  • int main(void)
  • {
  •   uint8_t output_state = 0;

  •   // Configure LED-pins as outputs
  •   // 設(shè)置LED_START到LED_STOP的引腳為輸出
  •   nrf_gpio_range_cfg_output(LED_START, LED_STOP);

  •   while(true)
  •   {
  •     // 點(diǎn)亮LED
  •     nrf_gpio_port_write(LED_PORT, 1 << (output_state + LED_OFFSET));
  •     output_state = (output_state + 1) & BLINKY_STATE_MASK;
  •     nrf_delay_ms(100);
  •   }
  • }


相關(guān)宏定義位于頭文件"pca10001.h"內(nèi):
  • #ifndef PCA10001_H
  • #define PCA10001_H

  • #define LED_START      18
  • #define LED0           18
  • #define LED_STOP       19
  • #define LED1           19
  • #define LED_PORT       NRF_GPIO_PORT_SELECT_PORT2
  • #define LED_OFFSET     2

  • #define BUTTON_START   16
  • #define BUTTON0        16
  • #define BUTTON_STOP    17
  • #define BUTTON1        17

  • #define RX_PIN_NUMBER  11
  • #define TX_PIN_NUMBER  9
  • #define CTS_PIN_NUMBER 10
  • #define RTS_PIN_NUMBER 8
  • #define HWFC           true

  • #define BLINKY_STATE_MASK   0x01

  • #endif



1.5 編譯、下載與演示
1.        在Keil μVision中打開 Blinky 工程, 或者 雙擊blinky.uvproj 文件。
2.        從 Select Target 下拉列表中選擇 nRF51822_xxaa(256K),然后點(diǎn)擊Build 或者按鍵盤上的F7編譯 Blinky 工程。
3.        點(diǎn)擊Load 圖標(biāo), 下載并運(yùn)行 Blinky 演示程序。 LED 0 和 LED 1 應(yīng)該開始連續(xù)的閃爍了。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多