電容觸摸 藍牙心率防水運動手環 ——智能穿戴開發系列 1相關簡介 本次章節,我們將使用到 DA14580 的外部中斷,通過觸摸手環主板上面的小彈簧,觸發中斷。 DA14580 內部有嵌套中斷向量控制器( NVIC,Nested Vectored Interrupt Controller),支持 24 個中斷,能夠中斷配置與處理異常代碼。當發生一個中斷請 求時,自動執行對應的中斷函數,不需要軟件確定異常向量。中斷可以有 4 個不同的可編程的優先級,NVIC 自動處理嵌套中斷。對于安全關鍵系統,又不可屏蔽中斷(NMI,Non maskable interrupt)輸入。 DA14580 內部還有一個鍵盤控制器,可以用于延時 GPIO 信號進入的時間。可以檢測所有的 I/O 口的電平變化。當監測信號時,可以產生中斷(KEYBR_IRQ)。同時,另外有 5 個中斷(GPIOn_IRQ)可以被 GPIO 口觸發。 2硬件設計 下面的就是本次使用的觸摸按鍵,采用的是 RH6015,中斷引腳連接到我們DA14850 的 P27 腳。 圖 1 RH6015 是一款內置穩壓模塊的單通道電容式觸摸感應控制開關 IC,可以替代傳統的機械式開關。當我們觸摸到 RH1615 第三引腳前的觸摸電容時,第一引腳會由高電平變成低電平。 3軟件設計 本次軟件,將完觸摸一次按鍵,打印一次累計按鍵次數的現象。 整個實驗代碼,將使用到兩個部分:串口和外部中斷。關于串口的初始化配置,以及串口打印的相關函數,可以參考前面的章節,本章節只介紹外部中斷的相關代碼。 要使用外部中斷,就需要一下幾個流程: (1)配置要使用的 IO 口。 GPIO_ConfigurePin(BUTTON_PORT, BUTTON_PIN1, INPUT, PID_GPIO, false); 這里將 DA14580 的 P27 管腳設置為輸入。 (2)注冊中斷回調函數。 GPIO_RegisterCallback(GPIO0_IRQn, button1_int_handler); 這個注冊中斷回調函數有兩個參數, 第一個參數是外部中斷編號, 可以填寫GPIO0_IRQn、GPIO1_IRQn、GPIO2_IRQn、GPIO3_IRQn 和 GPIO4_IRQn。第二個是回調函數的指針。 (3)使能外部中斷。 GPIO_EnableIRQ( BUTTON_PORT, BUTTON_PIN1, GPIO0_IRQn, 1, 1, 10 ); 完成以上 3 步之后,每當手觸摸到觸摸彈簧,代碼就會運行到回調函數 button1_int_handler 之中。 void button1_int_handler(void) { static unsigned char button_count=0; button_count++; printf_string("\r\n Number of key:"); printf_byte(button_count); } 在中斷函數 button1_int_handle ( ) 中, 首先定義了一個靜態變量 button_count,用于記錄按鍵次數,進入一次外部中斷,就將變量button_count 加 1,然后答應出換行符以及字符串 Number of key:,最后就打印出 button_count 的值。 4實驗現象 首先,插好 Jlink 和 USB 轉串口,然后打開打開串口調試助手。 (1)選擇串口號,我們圖中是 COM1,這個根據實際情況選擇。 (2)配置串口參數,波特率為 115200,數據位 8,停止位 1,沒有校驗位和控制流,與下圖一致。 (3)點擊打開串口。 圖 2 配置完串口之后,打開我們提供的代碼。 (1)點擊仿真按鍵。 圖 3 (2)點擊運行代碼。 圖 4 完成之后,觸摸一次觸摸彈簧,串口調試助手就打印出一條信息,如下圖所示。 圖 5 配套資料:https://www.fengke.club/GeekMart/su_fkZyGYgrp.jsp 配套視頻:https://www.fengke.club/GeekMart/su_fTSgUL3y3.jsp 套件地址:http://shop115904315.taobao.com 文件下載請點擊: |