GPIOTE
(GPIOTE) :GPIO Tasks and Events
將GPIO的中斷快速觸發做成一個單獨的模塊GPIOTE,也提供使用任務(TASK)和訪問(EVENT)的方式訪問GPIO引腳的功能.
** TASK、EVENT可以配合PPI模塊使用,PPI將TASK、EVENT綁定兩端,EVENT發生時,TASK自動觸發。(不需要cpu的參與,減輕負荷、降低功耗)**
Task和Event均可分爲三類:
其中任務模式作爲輸出使用,而事件模式就作爲中斷觸發使用。
TASK:
置位、清零、翻轉
EVENT:
** 上升沿、下降沿、任何變化**
GPIOTE配置
task任務通過OUT[0]–OUT[3]設置三種觸發狀態;
event 事件通過檢測信號產生PORT enevt事件,產生 IN[n] event事件;
GPIOTE有四個通道,四個通道通過GONFIG[0]-GONFIG[3]來配置,這四個通道可單獨設置,和GPIO綁定。
需要GPIOTE中斷功能時可以設置相關寄存器的相應位讓某個通道做爲EVENT(事件)(配置爲上升沿,下降沿觸發)然後配置中斷使能。
詳細使用方法(見手冊)
中斷配置
按照手冊寄存器的配置
A:MODE 模式設置
B:PSEL 設置管腳
C:POLARIY 設置下降沿觸發
nrf_gpio_cfg_input(BUTTON_1,GPIO_PIN_CNF_PULL_Pullup); //設置爲上拉輸入
NRF_GPIOTE->CONFIG[0] = (GPIOTE_CONFIG_POLARITY_HiToLo << GPIOTE_CONFIG_POLARITY_Pos)
| (12 << GPIOTE_CONFIG_PSEL_Pos)
| (GPIOTE_CONFIG_MODE_Event << GPIOTE_CONFIG_MODE_Pos);//中斷配置
NVIC_SetPriority(GPIOTE_IRQn,3); //中斷優先級設定爲3
NVIC_EnableIRQ(GPIOTE_IRQn); //使能總中斷