ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

8.1 實時時鐘——RTC

8.1.1 RTC初步認識

RTC(Real Time Clock)實時時鐘,主要用於為人們提供精確的實時時間或者為系統提供精確的時間基準。RTC通常分為兩類,一類是外部時鐘芯片提供實時時鐘,比如DS1302時鐘芯片;另一類是CPU內部集成RTC模塊。STM32F103內部集成了RTC模塊,可以通過配置相應的寄存器來實現實時時鐘的功能。

STM32內部有一塊特殊區域,叫做備份區域(也叫後備區域),該區域主要包含了RTC核心模塊和備份寄存器兩部分。當STM32在系統電源工作的狀態下,備份區域也是通過系統電源供電;當STM32的系統電源VDD掉電的情況下,備份區域可以自動切換到VBAT使用備用電源如電池、電容等進行工作,維持RTC運行,並且保護備份寄存器數據不丟失。STM32電源部分結構圖如圖8-1所示,如果沒有接外部電池,建議將VBAT引腳通過一個100nF的陶瓷電容與電源VDD相連。

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

圖8-1 STM32供電結構圖

8.1.2 RTC基本結構

RTC模塊主要由APB1接口和一組可編程計數器組成(RTC核心部件),如圖8-2所示。其中APB1接口部分(圖中藍色框內)用來實現CPU通過APB1總線和RTC寄存器相互通信;RTC核心部分(圖中紅色框內)由一個RTC預分頻模塊和一個32位可編程計數器組成,這部分運行在後備區域(圖示灰底部分)。

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

圖8-2 RTC時鐘結構框圖

1、RTC的時鐘源——RTCCLK

RTCCLK可以通過備份域控制寄存器(RCC_BDCR)來選擇其時鐘源,可以分別用HSE/128、LSI或者LSE作為RTC時鐘源。其中HSE是高速外部時鐘,Kingst-32F1開發板中HSE採用的是8MHz的外部晶振,該時鐘同樣也是系統時鐘源;LSI是低速內部時鐘,由STM32內部RC振盪器產生,頻率為40KHz,該時鐘源受環境影響較大;LSE為低速外部時鐘,需要外接頻率為32.768KHz的晶振,LSE是一個低功耗且精準度相對較高的的時鐘源。

當系統主電源關閉時,HSE無法工作,而如果採用LSI作為RTC時鐘源,一方面精度相對較低,另外一方面會有相對大的功率消耗,所以大多數情況下RTC的時鐘源是採用LSE,LSE的晶振的負載電容要求為6pF。

2、RTC預分頻模塊

RTC預分頻模塊包含了一個20位的可編程分頻器,可以通過對預分頻裝載寄存器RTC_PRL配置,實現RTCCLK時鐘信號分頻,每經過‘N+1’個時鐘週期輸出一個計時時間為1秒的RTC時間基準TR_CLK,如圖8-2中左側紅框所示。如果在RTC_CR寄存器中設置了相應的允許位(SECIE位),每個TR_CLK週期RTC會產生一箇中斷。通常情況下,用戶是將RTC時間基準配置成1秒,因此這個中斷也常被稱為秒中斷。

圖8-2種RTC_DIV是一個只讀寄存器,它的作用是對輸入的RTCCLK進行計數,當計數值與預分頻寄存器中的值相匹配時,輸出TR_CLK信號,然後重新計數。用戶可以通過讀取RTC_DIV寄存器,獲取當前的分頻計數器的當前值而不停止分頻計數器的工作。當RTC_PRL或RTC_CNT寄存器中的數據發生改變後,RTC_DIV會由硬件重新裝載。

3、32位的可編程計數器

RTC核心部分的第二個模塊是一個32位可編程、向上計數的計數器,可以通過兩個16位的寄存器(RTC_CNTH或RTC_CNTL)訪問。此計數器以TR_CLK時間基準信號進行計數,計滿後溢出,並且產生溢出標誌位。當TR_CLK的週期為1秒時,計數器從0到溢出大概需要136年。

計數器按照TR_CLK週期累加外,同時與用戶設定的RTC鬧鐘寄存器(RTC_ALR)的時間比較,一致則產生鬧鐘標誌,如果此時開啟中斷,則會觸發中斷。

8.2 UNIX時間戳及時間轉換問題

RTC模塊本質是一個計數器,當設置RTC預分頻模塊輸出週期為1秒的TR_CLK信號時,通過計算TR_CLK的週期數來獲取從開始計數的0時刻到現在經過的秒數。計數器為0的時刻稱之為計時元年,當前時間為計時元年加上計數器的計數值。

不同人或者不同系統規定的計時元年可能不同,換算成當前時間時會出現災難性錯誤。為了解決這個問題,大部分操作系統普遍以格林尼治時間1970年1月1日0時0分0秒作計時元年,該時間最早在UNIX系統中使用,因此從計時元年到當前時間的經過的秒數也被稱之為UNIX時間戳。

因此使用RTC模塊時,首先要計算出當前時間的UNIX時間戳X,然後將時間戳X寫入到RTC_CNT寄存器中並啟動計時。獲取當前時間時,先讀出RTC_CNT寄存器的值,然後再加上計時元年,所得到的時間便是當前時間。

8.3 RTC模塊基本操作

8.3.1 讀RTC寄存器

由於RTC核心部件位於後備區域,雖然RTC的寄存器讀寫由APB1接口完成,但是APB1接口在系統電源掉電時是停止工作的。由於RTC核心部件和APB1接口是相互獨立的,因此他們使用不同的時鐘源,當發生以下三種情況時,會導致時鐘不同步。

(1)發生系統復位或電源復位

(2)系統剛從待機模式喚醒

(3)系統剛從停機模式喚醒

當發生以上三種情況,讀寫RTC相關寄存器之前,必須首先檢測RTC_CRL寄存器中的RSF位,確保此位被置1,即RTC核心部件和APB1兩者時鐘同步,檢測庫函數如下:

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

8.3.2 配置RTC寄存器

當系統復位後,對後備寄存器和RTC的訪問將被禁止,這是為了防止對後備區域的意外寫操作。因此在配置RTC模塊前應先設置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能電源和後備接口時鐘,代碼如下:

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

使能後備區域時鐘後還要使能電源的寄存器PWR_CR的DBP位來取消後備區域的寫保護。代碼如下:

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

設置RTC時鐘源為LSE之前要先等待LSE時鐘啟動,保證LSE時鐘正常起振。啟動LSE時鐘代碼為:

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

LSE時鐘起振成功後才可以設置RTC時鐘源為LSE時鐘並使能RTC,由於RTC使用的時鐘源與APB1總線時鐘並非同一時鐘源,因此兩者的時鐘信號並不是同步的,需要等待RTC和APB1時鐘同步。

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

以上操作完畢後,就可以配置RTC寄存器,配置過程如下:

(1)查詢RTOFF位,直到RTOFF的值變為’1’

(2)置CNF值為1,進入配置模式

(3)對一個或多個RTC寄存器進行寫操作

(4)清除CNF標誌位,退出配置模式

(5)查詢RTOFF,直至RTOFF位變為’1’以確認寫操作已經完成。

需要注意的是,對RTC任何寄存器的寫操作,都必須在前一次寫操作結束後才能繼續進行。可以通過查詢RTC_CR寄存器中的RTOFF狀態位,判斷RTC寄存器是否處於更新中,僅當RTOFF狀態位是’1’時,才可以寫入RTC寄存器。配置完畢後需要清除CNF標誌位(即退出配置模式)才算配置完成,否則無法更新RTC寄存器,這個過程至少需要3個RTCCLK週期。

代碼如下:

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

以下是RTC模塊的驅動代碼:

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

RTC時鐘由於晶振精度以及環境影響等原因,會存在一些誤差,粗略測試每天會快2s左右,不同環境下誤差可能有所不同。

8.4 初識觸摸屏

觸摸屏是一種可接收觸頭等輸入信號的感應式液晶顯示裝置,當接觸了屏幕的圖形按鈕時,屏幕上的觸覺反饋可根據預先編寫的程序驅動各種設備,可以替代機械式按鈕,並且通過液晶顯示更加生動的影音效果。觸摸屏提供了一種簡單、方便、自然的人機交互方式,賦予了多媒體嶄新的面貌,是極富吸引力的全新多媒體交互設備,應用非常廣泛。

8.4.1 觸摸屏的分類和特點

按照觸摸屏的工作原理和傳輸信息的介質區分,觸摸屏可以分為電阻式、電容式、紅外線式以及表面聲波式,我們常見的主流應用是電阻式和電容式。

電阻觸摸屏是在顯示器表面附著一個多層複合薄膜,薄膜底層由玻璃或硬塑料構成,頂層為光滑防擦的塑料層,上下兩層的內表面都塗有透明導電層,並且相互隔離開。上下兩個薄膜層組成一個電阻網絡,當手指按壓屏幕時,上下導電層就會出現接觸點,此時在X軸和Y軸分別施加電壓,通過對比觸摸點電壓與施加電壓可以計算出觸摸點的X和Y座標,確定觸摸點的相對位置,電阻觸摸屏的結構如圖8-3所示。

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

圖8-3電阻式觸摸屏結構

電容觸摸屏是利用人體的電流感應進行工作的四層複合玻璃屏,內外層都塗有特殊材料,當手指摸在金屬層上時,由於人體電場,用戶和觸摸屏表面形成一個耦合電容,對於高頻電流來說,電容是導體,於是手指從接觸點吸走一個很小的電流,這個電流從觸摸屏的四角的電極中流出,控制器通過對這四個電流比例的精確計算,得出觸摸點的位置,電容屏觸摸原理如圖8-4所示。

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

圖8-4 電容屏觸摸原理

電阻屏和電容屏之間特點比較:

1、電阻屏靠壓力使各層接觸,因此可以用手指、指甲、觸筆等進行操作;電容屏利用人體的電流與觸摸屏之間形成耦合電場,從而觸發電容感應系統,但是任何非導電物體如指甲、首套等無效,手寫比較困難。

2、電阻屏精度可以達到單個顯示像素,便於手寫,有助於在精準操作;電容屏精度低,尤其是受限於手指接觸面限制,難以提高精度。

3、電阻觸屏價格比較低;電容屏成本比電阻屏貴10%到50%,在iPhone誕生之前的中低端手機大多是電阻屏,對成本不敏感的產品多采用電容屏。

4、電阻屏需要按下去,因此決定了他的頂部是軟的,多用塑料材質,這使他容易產生劃痕,但是通常不容易摔壞;電容屏外層通常使用玻璃,外層更不容易劃壞,方便去除汙跡,但是嚴重衝擊容易碎裂,當然電容屏也有塑料材質。

5、電阻屏不能支持多點同時觸摸;電容屏是可以支持多點同時觸摸的。

6、電阻屏在惡劣環境下可以正常工作,而電容屏操作溫度典型值是0到35度,至少5%的溼度,因此複雜的工業場合應用多用電阻屏。

7、電阻屏的可視效果相比電容屏差的多,尤其在陽光下,電容屏的可視效果優於電阻屏。

電阻屏通常分為四線電阻屏和五線電阻屏,Kingst-32F1開發板上的TFT-LCD採用的是4線制電阻觸摸屏。

8.4.2 觸摸屏的控制原理

電阻式觸摸屏的4個邊對應 X+、Y+、X-、Y-四個電極,這也是4線電阻觸摸屏的由來。當有筆尖或手指按壓觸摸屏表面時,觸摸屏的電阻性表面相當於被分隔為兩個串聯的電阻,由於觸摸屏的電阻值與觸摸點到接地邊之間的距離成正比,根據串聯電阻之比等於電阻兩端電壓之比的原理,只需要測量出一端電阻的電壓即可得到電阻之比,進而計算出觸摸點到兩邊的距離之比,觸摸屏等效電路如圖8-5所示。

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

8-5觸摸屏等效電路圖

計算觸點的X、Y座標主要分為以下兩步:

1. 計算X座標,在X+電極施加驅動電壓U, X-電極接地,X+到 X-之間形成均勻電場。Y+做為引出端可以測得接觸點的電壓為Uref,由於ITO層均勻導電,觸點電壓與Uref電壓之比等於觸點X座標與屏寬度之比。假如X+與X-之間的距離為d,則

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

2. 計算Y座標,在Y+電極施加驅動電壓U, Y-電極接地,此時Y+到Y-之間形成均勻電場。X+作為引出端可以測得接觸點的電壓為Uref。由於ITO層均勻導電,觸點電壓與Uref之比等於觸點Y座標與屏高度之比。假如Y+與Y-之間的距離為d, 即:

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

8.5 電阻式觸摸控制器——XPT2046

為了方便測量觸摸屏的座標,芯片廠商設計了專門的觸摸屏控制芯片,實現觸摸點電壓測量與轉換功能。本文采用的XPT2046是一款4導線制觸摸屏控制器,內含12位分辨率

125KHz 轉換速率逐次逼近型A/D轉換器。XPT2046通過執行兩次A/D轉換便可以計算出觸摸點位置,該芯片兼容 ADS7843 觸摸芯片,其電路原理圖和引腳圖如圖8-6和表8-1、表8-2所示。

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

XPT2046的電源VCC的範圍為2.7V~5.5V。A/D轉換所需的參考電壓可以選擇通過VREF輸入,範圍是1V~VCC;也可以採用內部內部 2.5V參考電壓,採用內部參考電壓時VREF引腳應懸空。XPT2046除了作為觸摸驅動芯片,還可以進行電池電壓檢測、溫度測量,以及壓力測量。作為觸摸屏應用時,X+、X-、Y+、Y-分別連接電阻觸摸屏的X+、X-、Y+、Y-引腳,測量時芯片會根據指令自動切換X、Y電極的電壓,並採集觸摸點的電壓進行快速A/D轉換。

XPT2046的ADC可以配置為單端或差分模式,具體如下:

單端模式是以外部參考電壓VREF為參考,在採樣過程完成後,進行A/D轉換時可以關閉驅動開關,以降低功耗。但這種模式的缺點是精度直接受參考電壓源的精度限制,同時由於內部驅動開關存在導通電阻,導通電阻與觸摸屏電阻的分壓作用,也會帶來測量誤差。因此該模式主要應用於電池監測、溫度測量和壓力測量。

差分工作模式是以X、Y電極兩端的電壓作為差分輸入電壓,可消除由於驅動開關的導通電阻引入的座標測量誤差。缺點是驅動開關一直接通,相對於單端輸入模式而言,功耗變高了。作為觸摸屏應用時,為了提高轉換精度,應該配置為差分模式。

8.6 XPT2046通信接口及控制命令

XPT2046允許採用SPI,SSI,Microwire等串行接口通信,本文采用IO口模擬SPI方式通信。XPT2046一次完整的數據轉換一般需要24個時鐘週期,即通信時單片機必須提供24個時鐘週期才能保證XPT2046完成一次數據轉換,數據按照高位在前、低位在後的順序傳輸,當CS為低電平時,數據在CLK的上升沿鎖存,下降沿輸出(即CPOL=0,CPHA=1的模式)通信時序如8-7所示。

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

圖8-7 XPT2046 24時鐘週期轉換時序圖

結合時序圖,操作步驟如下:

1、發送控制字命令。前8個時鐘週期單片機通過DIN(MOSI)引腳發送控制字命令,用於配置XPT2046的工作模式。控制命令由8個數據位組成,包括起始位、通道選擇位、分辨率選擇位、輸入方式和低功率模式,控制命令如表8-3所示。

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

(1)起始位——第一位,即 S 位。控制字的起始位必須為 1,否則所有的輸入將被忽略。

(2)通道選擇位——A2、A1、A0用於選擇對哪一個通道進行A/D轉換。差分模式下:當A2=0,A1=0,A0=1時表示選擇X+通道,即測量Y軸座標;當A2=1,A1=0,A0=1時表示選擇Y+通道,即測量X軸座標。測量座標時,要分別測量X+和Y+通道。

(3)MODE——模式選擇位,用於設置 ADC 的分辨率。為0表示下一次的轉換為 12 位模式;為1表示下一次的轉換將是 8 位模式,默認設置選擇12位模式。

(4)SER/DFR——輸入模式選擇位,單端輸入方式/差分輸入方式選擇位。為1是單端輸入方式,為0是差分輸入方式,觸摸測量時默認選擇差分模式,即設置該位為0。

(5)PD1和PD0——模式選擇位,其功能如表8-4所示。若為11,器件總處於全功耗模式;若為00,器件在A/D轉換之間處於低功率模式。同時PD0位還控制是否產生PENIRQ中斷,如果使能PENIRQ中斷,當有觸摸動作時,PENIRQ引腳會輸出0,否則輸出1,通過PENIRQ引腳可以判斷是否有觸摸動作,本教材默認設置PD1、PD0為00。

2、電壓採樣。當XPT2046接收到5個控制命令位時,即在接收到MODE位後,XPT2046內部就可以根據控制位信息設置輸入多路選擇器和參考源輸入,並啟動觸摸面板驅動器,開始進入採樣模式,該動作與SPI串行通信是同步的,並不影響剩餘控制位的傳輸,如圖8-7種的時序圖所示;3個多時鐘週期後,控制字接收完成,於此同時採樣完畢,轉換器進入轉換狀態,此時XPT2046會將BUSY引腳置高,表示數據正在轉換。

3、轉換結束後需要提供16個時鐘信號,其中第1個時鐘信號用於清除BUSY位,然後再發送12個時鐘週期將輸出轉換後的12位有效數據。最後3個時鐘信號用於輸出剩餘3個無效數據,默認為0。

4、注意當次讀取的轉換數據,是上一次的轉換結果,而當次的時鐘提供的轉換數據,下一次讀取,因此第一次讀取的數據是無效數據。

8.7 觸摸屏校準

計算觸摸點位置時需要引入兩個概念——物理座標和邏輯座標。物理座標就是觸摸點在液晶屏上的實際位置,通常以液晶上像素的個數來度量。本文采用的TFT-LCD的X和Y軸座標範圍分別為0~239和0~319。邏輯座標指的是觸摸點的電壓值經ADC轉換後得到的座標值,由ADC精度決定,12位ADC模式下其範圍為0~4095。實際使用時需要通過邏輯座標計算相應的實際物理座標。

觸摸屏是由液晶顯示屏(TFT-LCD)疊加一層觸摸層構成一個矩形的實際物理平面。一方面由於存在誤差,這兩個平面並不是完全重合;另一方面由於 A/D轉換器的前端電路具有高輸入阻抗,因此特別容易受到電氣噪聲的干擾;觸摸屏本身電阻材料的均勻性以及模擬電子開關的內阻和 A/D轉換器自身的轉換精度都會影響轉換後的邏輯座標值。基於以上兩方面原因導致實際的物理座標與軟件通過邏輯座標所計算的物理座標有所偏差。校準的作用就是要將邏輯平面映射到物理平面上,即得到觸點在液晶屏上的位置座標。

由於電阻式觸摸屏的電壓成線性均勻分佈,那麼A/D轉換後的座標值也成線性。首先假定物理平面和邏輯平面之間的誤差是線性誤差,如果已知觸摸屏上一點A,其物理座標為(Xa,Ya),相應的邏輯座標為(Xb,Yb),根據假定的線性關係,可以得到:

Xa = Kx * Xb + Dx;

Ya = Ky * Xb + Dy;

其中Kx、Ky分別為觸摸屏X方向和Y方向的縮放比例係數,Dx、Dy為偏差常數,它們由校準點計算而來。根據觸摸屏的Kx、Ky、Dx、Dy,就可以通過邏輯座標計算出相對準確的物理座標。

觸摸屏的校準方法大致有兩點校準、三點校準、四點校準、五點校準等。其中校準的點數越多,觸摸屏的校準相對越精確。本文采用五點校正法。五點校正法優勢在於可以更加精確的計算出X和Y方向的比例縮放係數,同時提供了中心基準點,對於一些線性電阻係數比較差的電阻式觸摸屏有很好的校正作用。

首先在液晶屏的4個角取4個固定物理座標作為測量點,並且在液晶屏中心位置取一個基準點,然後依次顯示各個校準點,並讀取該點的觸摸座標,最後計算Kx、Ky、Dx、Dy,校準點如圖8-8所示。

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

8-8 五點校準示意圖

校準流程如下所示:

1、依次顯示並觸摸5個校準點,並讀取觸摸座標;

2、根據座標計算S1、S2、S3、S4、S5、S6五條線段的長度,並比較S1和S2,S3和 S4,S5和S6的距離,當二者的距離小於一定範圍時,默認校準有效,否則無效,重新 校準。當距離差越小時,校準越準確。

3、根據所得的校準點的邏輯座標計算縮放比例係數Kx、Ky,和偏差Dx、Dy公式如下:

Kx = ((X2-X1)/ S1+(X4-X3)/ S2)/2

Ky = ((Y3-Y1)/ S3+(Y4-Y2)/ S4)/2

Dx = (S1- Kx*(X1+X2))/2

Dy = (S1- Ky*(Y1+Y2))/2

4、通過Kx、Ky、Dx、Dy以及中心基點的邏輯座標計算相應的物理座標,如果計算後的座標與實際座標誤差小於一定範圍,比如5個像素時認為校準成功,否則校準失敗,需要重新校準。

8.8 觸摸畫板實驗

根據液晶屏的觸摸功能設計了一款簡易的觸摸畫板實驗。觸摸畫板分為兩部分,功能區和繪畫區,功能區用來選擇畫筆顏色和清除畫板,然後通過觸摸筆在繪畫區繪製圖案。

首先將觸摸事件分為按下、滑動、抬起三種事件,不同事件對應不同的動作。當滑動事件觸發時,如果觸摸點的座標位於繪畫區,則在對應位置通過畫點函數畫一個2*2的點。當抬起動作觸發時,如果抬起時的座標是否位於功能區,則觸發相應的功能。

具體代碼如下:

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能

ARM嵌入式編程與實戰應用(STM32F1系列)第8章 RTC時鐘與觸摸功能


分享到:


相關文章: