嵌入式實(shí)驗(yàn)報(bào)告_第1頁(yè)
嵌入式實(shí)驗(yàn)報(bào)告_第2頁(yè)
嵌入式實(shí)驗(yàn)報(bào)告_第3頁(yè)
嵌入式實(shí)驗(yàn)報(bào)告_第4頁(yè)
嵌入式實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄目錄 實(shí)驗(yàn)一實(shí)驗(yàn)一 跑馬燈實(shí)驗(yàn)跑馬燈實(shí)驗(yàn) .1 實(shí)驗(yàn)二實(shí)驗(yàn)二 按鍵輸入實(shí)驗(yàn)按鍵輸入實(shí)驗(yàn).3 實(shí)驗(yàn)三實(shí)驗(yàn)三 串口實(shí)驗(yàn)串口實(shí)驗(yàn).5 實(shí)驗(yàn)四實(shí)驗(yàn)四 外部中斷實(shí)驗(yàn)外部中斷實(shí)驗(yàn).8 實(shí)驗(yàn)五實(shí)驗(yàn)五 獨(dú)立看門狗實(shí)驗(yàn)獨(dú)立看門狗實(shí)驗(yàn).11 實(shí)驗(yàn)七實(shí)驗(yàn)七 定時(shí)器中斷實(shí)驗(yàn)定時(shí)器中斷實(shí)驗(yàn).13 實(shí)驗(yàn)十三實(shí)驗(yàn)十三 adcadc 實(shí)驗(yàn)實(shí)驗(yàn).15 實(shí)驗(yàn)十五實(shí)驗(yàn)十五 dmadma 實(shí)驗(yàn)實(shí)驗(yàn).17 實(shí)驗(yàn)十六實(shí)驗(yàn)十六 i2ci2c 實(shí)驗(yàn)實(shí)驗(yàn).21 實(shí)驗(yàn)十七實(shí)驗(yàn)十七 spispi 實(shí)驗(yàn)實(shí)驗(yàn).24 實(shí)驗(yàn)二十一實(shí)驗(yàn)二十一 紅外遙控實(shí)驗(yàn)紅外遙控實(shí)驗(yàn) .27 實(shí)驗(yàn)二十二實(shí)驗(yàn)二十二 ds18b20ds18b20 實(shí)驗(yàn)實(shí)驗(yàn) .30 實(shí)驗(yàn)一

2、實(shí)驗(yàn)一 跑馬燈實(shí)驗(yàn)跑馬燈實(shí)驗(yàn) 一實(shí)驗(yàn)一實(shí)驗(yàn)簡(jiǎn)介簡(jiǎn)介 我的第一個(gè)實(shí)驗(yàn),跑馬燈實(shí)驗(yàn)。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)?zāi)康?掌握 stm32 開發(fā)環(huán)境,掌握從無(wú)到有的構(gòu)建工程。 三實(shí)驗(yàn)內(nèi)容三實(shí)驗(yàn)內(nèi)容 熟悉 mdk keil 開發(fā)環(huán)境,構(gòu)建基于固件庫(kù)的工程,編寫代碼實(shí)現(xiàn)跑馬燈工程。通過(guò) isp 下載代碼到實(shí)驗(yàn)板,查看運(yùn)行結(jié)果。使用 jlink 下載代碼到目標(biāo)板,查看運(yùn)行結(jié)果, 使用 jlink 在線調(diào)試。 四實(shí)驗(yàn)設(shè)備四實(shí)驗(yàn)設(shè)備 硬件部分:pc 計(jì)算機(jī)(宿主機(jī))、亮點(diǎn) stm32 實(shí)驗(yàn)板、jlink。 軟件部分:pc 機(jī) windows 系統(tǒng)、mdk keil 軟件、isp 軟件。 五實(shí)驗(yàn)步驟五實(shí)驗(yàn)步驟 1.熟悉md

3、k keil 開發(fā)環(huán)境 2.熟悉串口編程軟件 isp 3.查看固件庫(kù)結(jié)構(gòu)和文件 4.建立工程目錄,復(fù)制庫(kù)文件 5.建立和配置工程 6.編寫代碼 7.編譯代碼 8.使用 isp 下載到實(shí)驗(yàn)板 9.測(cè)試運(yùn)行結(jié)果 10.使用 jlink 下載到實(shí)驗(yàn)板 11.單步調(diào)試 12.記錄實(shí)驗(yàn)過(guò)程,撰寫實(shí)驗(yàn)報(bào)告 六實(shí)驗(yàn)結(jié)果及測(cè)試六實(shí)驗(yàn)結(jié)果及測(cè)試 源代碼: 兩個(gè)燈 led0 與 led1 實(shí)現(xiàn)交替閃爍的類跑馬燈效果,每 300ms 閃爍一次。 七實(shí)驗(yàn)總結(jié)七實(shí)驗(yàn)總結(jié) 通過(guò)本次次實(shí)驗(yàn)我了解了stm32開發(fā)板的基本使用,初次接觸這個(gè)開發(fā)板和mdk keilc 軟件,對(duì)軟件操作不太了解,通過(guò)這次實(shí)驗(yàn)了解并熟練地使用mdk

4、 keil軟件,用這個(gè) 軟件來(lái)編程和完成一些功能的實(shí)現(xiàn)。作為 stm32 的入門第一個(gè)例子,詳細(xì)介紹了 stm32 的io口操作,同時(shí)鞏固了前面的學(xué)習(xí),并進(jìn)一步介紹了mdk的軟件仿真功能。 實(shí)驗(yàn)二實(shí)驗(yàn)二 按鍵輸入實(shí)驗(yàn)按鍵輸入實(shí)驗(yàn) 一實(shí)驗(yàn)簡(jiǎn)介一實(shí)驗(yàn)簡(jiǎn)介 在實(shí)驗(yàn)一的基礎(chǔ)上,使用按鍵控制流水燈速度,及使用按鍵控制流水燈流水方向。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)?zāi)康?熟練使用庫(kù)函數(shù)操作 gpio,掌握中斷配置和中斷服務(wù)程序編寫方法,掌握通過(guò)全局變量 在中斷服務(wù)程序和主程序間通信的方法。 三實(shí)驗(yàn)內(nèi)容三實(shí)驗(yàn)內(nèi)容 實(shí)現(xiàn)初始化 gpio,并配置中斷,在中斷服務(wù)程序中通過(guò)修改全局變量,達(dá)到控制流水燈 速度及方向。 使用 jl

5、ink 下載代碼到目標(biāo)板,查看運(yùn)行結(jié)果,使用 jlink 在線調(diào)試。 四實(shí)驗(yàn)設(shè)備四實(shí)驗(yàn)設(shè)備 硬件部分:pc 計(jì)算機(jī)(宿主機(jī))、亮點(diǎn) stm32 實(shí)驗(yàn)板、jlink、示波器。 軟件部分:pc 機(jī) windows 系統(tǒng)、mdk keil 軟件、isp 軟件。 五實(shí)驗(yàn)步驟五實(shí)驗(yàn)步驟 1 在實(shí)驗(yàn) 1 代碼的基礎(chǔ)上,編寫中斷初始化代碼 2 在主程序中聲明全局變量,用于和中斷服務(wù)程序通信,編寫完成主程序 3 編寫中斷服務(wù)程序 4 編譯代碼,使用 jlink 下載到實(shí)驗(yàn)板 5.單步調(diào)試 6 記錄實(shí)驗(yàn)過(guò)程,撰寫實(shí)驗(yàn)報(bào)告 六實(shí)驗(yàn)結(jié)果及測(cè)試六實(shí)驗(yàn)結(jié)果及測(cè)試 源代碼: 我們將通過(guò) ministm32 板上載有的 3

6、 個(gè)按鈕,來(lái)控制板上的 2 個(gè) led,其中 key0 控 制 led0,按一次亮,再按一次,就滅。key1 控制 led1,效果同 key0。key_2(key_up),同時(shí)控制 led0 和 led1,按一次,他們的狀態(tài)就翻轉(zhuǎn)一 次。 七實(shí)驗(yàn)總結(jié)七實(shí)驗(yàn)總結(jié) 通過(guò)本次實(shí)驗(yàn),我學(xué)會(huì)了如何使用 stm32 的 io 口作為輸入用。tm32 的 io 口做輸入 使用的時(shí)候,是通過(guò)讀取 idr 的內(nèi)容來(lái)讀取 io 口的狀態(tài)的。這里需要注意的是 key0 和 key1 是低電平有效的,而 wk_up 是高電平有效的,而且要確認(rèn) wk_up 按鈕與 ds18b20 的連接是否已經(jīng)斷開,要先斷開,否則 d

7、s18b20 會(huì)干擾 wk_up 按鍵!并且 key0 和 key1 連接在與 jtag 相關(guān)的 io 口上,所以在軟件編寫的時(shí)候要先禁用 jtag 功能,才能把這兩個(gè) io 口當(dāng)成普通 io 口使用。 實(shí)驗(yàn)三實(shí)驗(yàn)三 串口實(shí)驗(yàn)串口實(shí)驗(yàn) 一實(shí)驗(yàn)簡(jiǎn)介一實(shí)驗(yàn)簡(jiǎn)介 編寫代碼實(shí)現(xiàn)串口發(fā)送和接收,將通過(guò)串口發(fā)送來(lái)的數(shù)據(jù)回送回去。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)?zāi)康?掌握 stm32 基本串口編程,進(jìn)一步學(xué)習(xí)中斷處理。 三實(shí)驗(yàn)內(nèi)容三實(shí)驗(yàn)內(nèi)容 編寫主程序,初始化串口 1,設(shè)置波特率為 9600,無(wú)校驗(yàn),數(shù)據(jù)位 8 位,停止位 1 位。 編寫中斷服務(wù)程序代碼實(shí)現(xiàn)將發(fā)送過(guò)來(lái)的數(shù)據(jù)回送。 四實(shí)驗(yàn)設(shè)備四實(shí)驗(yàn)設(shè)備 硬件部分:pc 計(jì)

8、算機(jī)(宿主機(jī))、亮點(diǎn) stm32 實(shí)驗(yàn)板、jlink、示波器。 軟件部分:pc 機(jī) windows 系統(tǒng)、mdk keil 軟件、isp 軟件、串口調(diào)試助手。 五實(shí)驗(yàn)步驟五實(shí)驗(yàn)步驟 1 編寫串口初始化代碼 2 編寫中斷服務(wù)程序代碼 3 編譯代碼,使用 jlink 或 isp 下載到實(shí)驗(yàn)板 4 記錄實(shí)驗(yàn)過(guò)程,撰寫實(shí)驗(yàn)報(bào)告 六實(shí)驗(yàn)結(jié)果及測(cè)試六實(shí)驗(yàn)結(jié)果及測(cè)試 源代碼: 把代碼下載到 ministm32 開發(fā)板,可以看到板子上的 led0 開始閃爍,說(shuō)明程序已經(jīng) 在跑了。接著我們打開串口調(diào)試助手,看到如下信息: 證明串口數(shù)據(jù)發(fā)送沒(méi)問(wèn)題。接著,我們?cè)诎l(fā)送區(qū)輸入上面的文字,輸入完后按回車鍵。 然后單擊發(fā)送

9、,可以得到如下結(jié)果: 七實(shí)驗(yàn)總結(jié)七實(shí)驗(yàn)總結(jié) 通過(guò)本次實(shí)驗(yàn),我進(jìn)一步了解了串口的使用,學(xué)會(huì)了通過(guò)串口發(fā)送和接收數(shù)據(jù),將通過(guò) 串口發(fā)送來(lái)的數(shù)據(jù)回送回去。該實(shí)驗(yàn)的硬件配置不同于前兩個(gè)實(shí)驗(yàn),串口 1 與 usb 串 口默認(rèn)是分開的,并沒(méi)有在 pcb 上連接在一起,需要通過(guò)跳線帽來(lái)連接一下。這里我們 把 p4 的 rxd 和 txd 用跳線帽與 p3 的 pa9 和 pa10 連接起來(lái)。 實(shí)驗(yàn)四實(shí)驗(yàn)四 外部中斷實(shí)驗(yàn)外部中斷實(shí)驗(yàn) 一實(shí)驗(yàn)簡(jiǎn)介一實(shí)驗(yàn)簡(jiǎn)介 stm32 的 io 口在本章第一節(jié)有詳細(xì)介紹,而外部中斷在第二章也有詳細(xì)的闡述。這里 我們將介紹如何將這兩者結(jié)合起來(lái),實(shí)現(xiàn)外部中斷輸入。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)

10、目的 進(jìn)一步掌握串口編程,進(jìn)一步學(xué)習(xí)外部中斷編程,提高編程能力。 三實(shí)驗(yàn)內(nèi)容三實(shí)驗(yàn)內(nèi)容 初始化 io 口的輸入,開啟復(fù)用時(shí)鐘,設(shè)置 io 與中斷的映射關(guān)系,從而開啟與 io 口相對(duì) 應(yīng)的線上中斷事件,設(shè)置觸發(fā)條件。配置中斷分組(nvic),并使能中斷,編寫中斷服 務(wù)函數(shù)。 四實(shí)驗(yàn)設(shè)備四實(shí)驗(yàn)設(shè)備 硬件部分:pc 計(jì)算機(jī)(宿主機(jī))、亮點(diǎn) stm32 實(shí)驗(yàn)板、jlink、示波器。 軟件部分:pc 機(jī) windows 系統(tǒng)、mdk keil 軟件、isp 軟件、串口調(diào)試助手。 五實(shí)驗(yàn)步驟五實(shí)驗(yàn)步驟 1.編寫中斷服務(wù)程序代碼 2.使用 isp 下載到實(shí)驗(yàn)板 3.測(cè)試運(yùn)行結(jié)果 4.記錄實(shí)驗(yàn)過(guò)程,撰寫實(shí)驗(yàn)報(bào)

11、告 六實(shí)驗(yàn)結(jié)果及測(cè)試六實(shí)驗(yàn)結(jié)果及測(cè)試 源代碼: 打開串口助手。 七實(shí)驗(yàn)總結(jié)七實(shí)驗(yàn)總結(jié) 首先需要將 io 設(shè)置為中斷輸入口: 1)初始化 io 口為輸入。 2)開啟 io 口復(fù)用時(shí)鐘,設(shè)置 io 口與中斷線的映射關(guān)系。 3)開啟與該 io 口相對(duì)的線上中斷/事件,設(shè)置觸發(fā)條件。 4)配置中斷分組(nvic),并使能中斷。 5)編寫中斷服務(wù)函數(shù)。 這一節(jié),使用的是中斷來(lái)檢測(cè)按鍵,通過(guò) wk_up 按鍵實(shí)現(xiàn)按一次 led0 和 led 1 同 時(shí)翻轉(zhuǎn),按 key0 翻轉(zhuǎn) led0,按 key1 翻轉(zhuǎn) led1。 試驗(yàn)中外部中斷函數(shù)不能進(jìn)入的原因分析 : 1)gpio 或者 afio 的時(shí)鐘沒(méi)有開啟。

12、 2)gpio 和配置的中斷線路不匹配。 3)中斷觸發(fā)方式和實(shí)際不相符合。 4)中斷處理函數(shù)用庫(kù)函數(shù)時(shí),寫錯(cuò),經(jīng)常可能出現(xiàn)數(shù)字和字母之間沒(méi)有下劃線。 5)外部中斷是沿觸發(fā),有可能不能檢測(cè)到沿,比如 中斷線是低電平(浮空輸入), 觸發(fā)是下降沿觸發(fā),可能會(huì)出現(xiàn)一直是低電平,高電平的時(shí)候是一樣的情況,電平持續(xù)為 高電平。 6)沒(méi)有用軟件中斷來(lái)觸發(fā)外部中斷,調(diào)用函數(shù) exti_generateswinterrupt;,因?yàn)檐?件中斷先于邊沿中斷處理。 實(shí)驗(yàn)五實(shí)驗(yàn)五 獨(dú)立看門狗實(shí)驗(yàn)獨(dú)立看門狗實(shí)驗(yàn) 一一實(shí)驗(yàn)簡(jiǎn)介實(shí)驗(yàn)簡(jiǎn)介 獨(dú)立看門狗(iwdg)由專用的低速時(shí)鐘(lsi)驅(qū)動(dòng),即使主時(shí)鐘發(fā)生故障它也仍然有效。

13、窗 口看門狗由從 apb1 時(shí)鐘分頻后得到的時(shí)鐘驅(qū)動(dòng),通過(guò)可配置的時(shí)間窗口來(lái)檢測(cè)應(yīng)用程 序非正常的過(guò)遲或過(guò)早的操作。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)?zāi)康?通過(guò)編程,編寫一個(gè)獨(dú)立看門狗驅(qū)動(dòng)程序 三實(shí)驗(yàn)內(nèi)容三實(shí)驗(yàn)內(nèi)容 啟動(dòng) stm32 的獨(dú)立看門狗,從而使能看門狗,在程序里面必須間隔一定時(shí)間喂狗,否 則將導(dǎo)致程序復(fù)位。利用這一點(diǎn),我們本章將通過(guò)一個(gè) led 燈來(lái)指示程序是否重啟, 來(lái)驗(yàn)證 stm32 的獨(dú)立看門狗。 四實(shí)驗(yàn)設(shè)備四實(shí)驗(yàn)設(shè)備 硬件部分:pc 計(jì)算機(jī)(宿主機(jī))、亮點(diǎn) stm32 實(shí)驗(yàn)板、jlink。 軟件部分:pc 機(jī) windows 系統(tǒng)、mdk keil 軟件、isp 軟件、串口調(diào)試助手。 五實(shí)驗(yàn)

14、步驟五實(shí)驗(yàn)步驟 1.參考教材獨(dú)立看門狗部分,編寫?yīng)毩⒖撮T狗驅(qū)動(dòng)程序。建立和配置工程 2.編寫代碼 3.使用 isp 下載到實(shí)驗(yàn)板 4.記錄實(shí)驗(yàn)過(guò)程,撰寫實(shí)驗(yàn)報(bào)告 六實(shí)驗(yàn)結(jié)果及測(cè)試六實(shí)驗(yàn)結(jié)果及測(cè)試 源代碼: 在配置看門狗后,看到 led0 不停的閃爍,如果 wk_up 按鍵按下,就喂狗,只要 wk_up 不停的按,看門狗就一直不會(huì)產(chǎn)生復(fù)位,保持 led0 的常亮,一旦超過(guò)看門狗 定溢出時(shí)間(tout)還沒(méi)按,那么將會(huì)導(dǎo)致程序重啟,這將導(dǎo)致 led0 熄滅一次。 七實(shí)驗(yàn)總結(jié)七實(shí)驗(yàn)總結(jié) 通過(guò)本次實(shí)驗(yàn),我掌握了啟動(dòng)獨(dú)立看門狗的步驟: 1)向 iwdg_kr 寫入 0x5555。 2)向 iwdg_kr

15、 寫入 0xaaaa。 3)向 iwdg_kr 寫入 0xcccc。 通過(guò)上面 3 個(gè)步驟,啟動(dòng) stm32 的看門狗,從而使能看門狗,在程序里面就必須間隔 一定時(shí)間喂狗,否則將導(dǎo)致程序復(fù)位。利用這一點(diǎn),本章通過(guò)一個(gè) led 燈來(lái)指示程序是 否重啟,來(lái)驗(yàn)證 stm32 的獨(dú)立看門狗。在配置看門狗后,led0 將常亮,如果 wk_up 按鍵按下,就喂狗,只要 wk_up 不停的按,看門狗就一直不會(huì)產(chǎn)生復(fù)位,保 持 led 0 的常亮,一旦超過(guò)看門狗溢出時(shí)間(tout)還沒(méi)按,那么將會(huì)導(dǎo)致程序重啟, 這將導(dǎo)致 led 0 熄滅一次。 實(shí)驗(yàn)七實(shí)驗(yàn)七 定時(shí)器中斷實(shí)驗(yàn)定時(shí)器中斷實(shí)驗(yàn) 一一實(shí)驗(yàn)簡(jiǎn)介實(shí)驗(yàn)簡(jiǎn)介

16、 stm32 的定時(shí)器是一個(gè)通過(guò)可編程預(yù)分頻器(psc)驅(qū)動(dòng)的 16 位自動(dòng)裝載計(jì)數(shù)器 (cnt)構(gòu)成。stm32 的通用定時(shí)器可以被用于:測(cè)量輸入信號(hào)的脈沖長(zhǎng)度(輸入捕獲) 或者產(chǎn)生輸出波形(輸出比較和 pwm)等。使用定時(shí)器預(yù)分頻器和 rcc 時(shí)鐘控制器預(yù)分 頻器,脈沖長(zhǎng)度和波形周期可以在幾微秒到幾毫秒間調(diào)整。stm32 的每個(gè)通用定時(shí)器都 是完全獨(dú)立的,沒(méi)有互相共享的任何資源。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)?zāi)康?熟練掌握定時(shí)器中斷,學(xué)會(huì)對(duì)定時(shí)器中斷的編程操作。 三實(shí)驗(yàn)內(nèi)容三實(shí)驗(yàn)內(nèi)容 使用定時(shí)器產(chǎn)生中斷,然后在中斷服務(wù)函數(shù)里面翻轉(zhuǎn) led1 上的電平,來(lái)指示定時(shí)器中 斷的產(chǎn)生,修改中斷時(shí)間。 四實(shí)驗(yàn)設(shè)

17、備四實(shí)驗(yàn)設(shè)備 硬件部分:pc 計(jì)算機(jī)(宿主機(jī))、亮點(diǎn) stm32 實(shí)驗(yàn)板、jlink。 軟件部分:pc 機(jī) windows 系統(tǒng)、mdk keil 軟件、isp 軟件、串口調(diào)試助手。 五實(shí)驗(yàn)步驟五實(shí)驗(yàn)步驟 1.參考教材定時(shí)器中斷部分,編寫定時(shí)器中斷的驅(qū)動(dòng)程序。 2.編寫主程序 3.編譯代碼,使用 jlink 或 isp 下載到實(shí)驗(yàn)板 4.記錄實(shí)驗(yàn)過(guò)程,撰寫實(shí)驗(yàn)報(bào)告 六實(shí)驗(yàn)結(jié)果及測(cè)試六實(shí)驗(yàn)結(jié)果及測(cè)試 源代碼: 七實(shí)驗(yàn)總結(jié)七實(shí)驗(yàn)總結(jié) 通過(guò)本次實(shí)驗(yàn),認(rèn)識(shí)到時(shí)間中斷來(lái)控制 led 燈的閃爍,同時(shí)也可以將時(shí)間中斷應(yīng)用到控 制其他的程序塊。 以 time3 為例產(chǎn)生中斷的步驟為 1)tim3 時(shí)鐘使能。

18、2)設(shè)置 tim3_arr 和 tim3_psc 的值。 3)設(shè)置 tim3_dier 允許更新中斷。 4)允許 tim3 工作。 5)tim3 中斷分組設(shè)置。 6)編寫中斷服務(wù)函數(shù)。 在中斷產(chǎn)生后,通過(guò)狀態(tài)寄存器的值來(lái)判斷此次產(chǎn)生的中斷屬于什么類型。然后執(zhí)行相 關(guān)的操作,我們這里使用的是更新(溢出)中斷,所以在狀態(tài)寄存器 sr 的最低位。在 處理完中斷之后應(yīng)該向 tim3_sr 的最低位寫 0,來(lái)清除該中斷標(biāo)志。 實(shí)驗(yàn)十三實(shí)驗(yàn)十三 adcadc 實(shí)驗(yàn)實(shí)驗(yàn) 一實(shí)驗(yàn)簡(jiǎn)介一實(shí)驗(yàn)簡(jiǎn)介 通過(guò) dac 將 stm32 系統(tǒng)的數(shù)字量轉(zhuǎn)換為模擬量。使用 adc 將模擬量轉(zhuǎn)換為數(shù)字量。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)?zāi)康?

19、掌握 dac 和 adc 編程。 三實(shí)驗(yàn)內(nèi)容三實(shí)驗(yàn)內(nèi)容 編寫代碼實(shí)現(xiàn)簡(jiǎn)單的 dac 單次發(fā)送 編寫代碼實(shí)現(xiàn) adc 采集 dac 發(fā)送的數(shù)據(jù),并發(fā)送到串口 四實(shí)驗(yàn)設(shè)備四實(shí)驗(yàn)設(shè)備 硬件部分:pc 計(jì)算機(jī)(宿主機(jī))、亮點(diǎn) stm32 實(shí)驗(yàn)板、jlink。 軟件部分:pc 機(jī) windows 系統(tǒng)、mdk keil 軟件、isp 軟件、串口調(diào)試助手。 五實(shí)驗(yàn)步驟五實(shí)驗(yàn)步驟 1 編寫主程序 2 編譯代碼,使用 jlink 或 isp 下載到實(shí)驗(yàn)板,使用串口調(diào)試助手觀察數(shù)據(jù) 3 記錄實(shí)驗(yàn)過(guò)程,撰寫實(shí)驗(yàn)報(bào)告 六實(shí)驗(yàn)結(jié)果及測(cè)試六實(shí)驗(yàn)結(jié)果及測(cè)試 源代碼: 七實(shí)驗(yàn)總結(jié)七實(shí)驗(yàn)總結(jié) 本節(jié)將利用 stm32 的 ad

20、c1 通道 0 來(lái)采樣外部電壓值,并在串口調(diào)試助手中顯示出 來(lái)。步驟如下: 1)開啟 pa 口時(shí)鐘,設(shè)置 pa0 為模擬輸入。 2)使能 adc1 時(shí)鐘,并設(shè)置分頻因子。 3)設(shè)置 adc1 的工作模式。 4)設(shè)置 adc1 規(guī)則序列的相關(guān)信息。 5)開啟 ad 轉(zhuǎn)換器,并校準(zhǔn)。 6)讀取 adc 值。 在上面的校準(zhǔn)完成之后,adc 就算準(zhǔn)備好了。接下來(lái)我們要做的就是設(shè)置規(guī)則序列 0 里面的通道,然后啟動(dòng) adc 轉(zhuǎn)換。在轉(zhuǎn)換結(jié)束后,讀取 adc1_dr 里面的值。 通過(guò)以上幾個(gè)步驟的設(shè)置,可以正常的使用 stm32 的 adc1 來(lái)執(zhí)行 ad 轉(zhuǎn)換操作。 通過(guò)本次實(shí)驗(yàn)的學(xué)習(xí),我們了解了stm

21、32 adc的使用,但這僅僅是stm32強(qiáng)大的adc 功能的一小點(diǎn)應(yīng)用。stm32 的adc 在很多地方都可以用到,其adc 的dma 功能是很 不錯(cuò)的, 實(shí)驗(yàn)十五實(shí)驗(yàn)十五 dmadma 實(shí)驗(yàn)實(shí)驗(yàn) 一一實(shí)驗(yàn)簡(jiǎn)介實(shí)驗(yàn)簡(jiǎn)介 直接存儲(chǔ)器存取(dma)用來(lái)提供在外設(shè)和存儲(chǔ)器之間或者存儲(chǔ)器和存儲(chǔ)器之間的高速數(shù) 據(jù)傳輸。無(wú)須 cpu 干預(yù),數(shù)據(jù)可以通過(guò) dma 快速地移動(dòng),這就節(jié)省了 cpu 的資源來(lái)做 其他操作。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)?zāi)康?熟練掌握 dma 編程,學(xué)會(huì)對(duì) epc02 的讀寫操作,學(xué)習(xí)雙緩沖兵乓操作,理解互斥資源。 提高編程能力。 三實(shí)驗(yàn)內(nèi)容三實(shí)驗(yàn)內(nèi)容 利用外部按鍵key0 來(lái)控制dma 的傳

22、送,每按一次key0,dma 就傳送一次數(shù)據(jù) 到usart1,然后在串口調(diào)試助手觀察進(jìn)度等信息。led0 還是用來(lái)做為程序運(yùn)行的指示 燈。 這里我們使用到的硬件資源如下: 1)按鍵key0。 2)指示燈led0。 3)使用串口調(diào)試助手觀察數(shù)據(jù) 四實(shí)驗(yàn)設(shè)備四實(shí)驗(yàn)設(shè)備 硬件部分:pc 計(jì)算機(jī)(宿主機(jī))、亮點(diǎn) stm32 實(shí)驗(yàn)板、jlink。 軟件部分:pc 機(jī) windows 系統(tǒng)、mdk keil 軟件、isp 軟件、網(wǎng)絡(luò)調(diào)試助手。 五實(shí)驗(yàn)步驟五實(shí)驗(yàn)步驟 1 編寫主程序 2 編譯代碼,使用 jlink 或 isp 下載到實(shí)驗(yàn)板,使用串口調(diào)試助手觀察數(shù)據(jù) 3 記錄實(shí)驗(yàn)過(guò)程,撰寫實(shí)驗(yàn)報(bào)告 六實(shí)驗(yàn)結(jié)果

23、及測(cè)試六實(shí)驗(yàn)結(jié)果及測(cè)試 源代碼: 伴隨 led0 的不停閃爍,提示程序在運(yùn)行。我們打開串口調(diào)試助手,然后按 key0,可 以看到串口顯示如下內(nèi)容: 七實(shí)驗(yàn)總結(jié)七實(shí)驗(yàn)總結(jié) 本節(jié)利用 stm32 的 dma 來(lái)實(shí)現(xiàn)串口數(shù)據(jù)傳送,dma 通道的配置需要: 1)設(shè)置外設(shè)地址。 2)設(shè)置存儲(chǔ)器地址。 3)設(shè)置傳輸數(shù)據(jù)量。 4)設(shè)置通道 4 的配置信息。 5)使能 dma1 通道 4,啟動(dòng)傳輸。 通過(guò)以上 5 步設(shè)置,我們就可以啟動(dòng)一次 usart1 的 dma 傳輸了。 dma 控制器對(duì) dma 請(qǐng)求判別優(yōu)先級(jí)及屏蔽,向總線裁決邏輯提出總線請(qǐng)求。當(dāng) cpu 執(zhí)行完當(dāng)前總線周期即可釋放總線控制權(quán)。此時(shí),總

24、線裁決邏輯輸出總線應(yīng)答,表示 dma 已經(jīng)響應(yīng),通過(guò) dma 控制器通知 i/o 接口開始 dma 傳輸。 dma 控制器獲得總線控制權(quán)后,cpu 即刻掛起或只執(zhí)行內(nèi)部操作,由 dma 控制器輸出 讀寫命令,直接控制 ram 與 i/o 接口進(jìn)行 dma 傳輸。 在 dma 控制器的控制下,在存儲(chǔ)器和外部設(shè)備之間直接進(jìn)行數(shù)據(jù)傳送,在傳送過(guò)中不 需要中央處理器的參與。開始時(shí)需提供要傳送的數(shù)據(jù)的起始位置和數(shù)據(jù)長(zhǎng)度。 當(dāng)完成規(guī)定的成批數(shù)據(jù)傳送后,dma 控制器即釋放總線控制權(quán),并向 i/o 接口發(fā)出結(jié)束 信號(hào)。當(dāng) i/o 接口收到結(jié)束信號(hào)后,一方面停 止 i/o 設(shè)備的工作,另一方面向 cpu 提出

25、 中斷請(qǐng)求,使 cpu 從不介入的狀態(tài)解脫,并執(zhí)行一段檢查本次 dma 傳輸操作正確性的 代碼。最后,帶著本次操作結(jié)果及狀態(tài)繼續(xù)執(zhí)行原來(lái)的程序。 由此可見,dma 傳輸方式無(wú)需 cpu 直接控制傳輸,也沒(méi)有中斷處理方式那樣保留現(xiàn)場(chǎng) 和恢復(fù)現(xiàn)場(chǎng)的過(guò)程,通過(guò)硬件為 ram 與 i/o 設(shè)備開辟一條直接傳送數(shù)據(jù)的通路,使 cpu 的效率大為提高。 實(shí)驗(yàn)十六實(shí)驗(yàn)十六 i2ci2c 實(shí)驗(yàn)實(shí)驗(yàn) 一實(shí)驗(yàn)簡(jiǎn)介一實(shí)驗(yàn)簡(jiǎn)介 編程實(shí)現(xiàn)對(duì)使用 i2c 接口的 epc02 芯片進(jìn)行寫和讀操作。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)?zāi)康?熟練掌握 i2c 編程,學(xué)會(huì)對(duì) epc02 的讀寫操作。 三實(shí)驗(yàn)內(nèi)容三實(shí)驗(yàn)內(nèi)容 編寫 i2c 驅(qū)動(dòng)程序,

26、使用驅(qū)動(dòng)程序初始化 epc02,判斷設(shè)備正確性。 寫 256 個(gè) 0 x5a 到 epc02,讀出并發(fā)送給串口,通過(guò)串口調(diào)試助手判別是否讀到的都是 0 x5a. 四實(shí)驗(yàn)設(shè)備四實(shí)驗(yàn)設(shè)備 硬件部分:pc 計(jì)算機(jī)(宿主機(jī))、亮點(diǎn) stm32 實(shí)驗(yàn)板、jlink。 軟件部分:pc 機(jī) windows 系統(tǒng)、mdk keil 軟件、isp 軟件、串口調(diào)試助手。 五實(shí)驗(yàn)步驟五實(shí)驗(yàn)步驟 1 參考教材 i2c 部分,編寫 i2c 驅(qū)動(dòng)程序。 2 編寫主程序 3 編譯代碼,使用 jlink 或 isp 下載到實(shí)驗(yàn)板 4 記錄實(shí)驗(yàn)過(guò)程,撰寫實(shí)驗(yàn)報(bào)告 六實(shí)驗(yàn)結(jié)果及測(cè)試六實(shí)驗(yàn)結(jié)果及測(cè)試 伴隨 led0 的不停閃爍,提

27、示程序在運(yùn)行。我們先按下key0,可以看到如下所示的內(nèi) 容,證明數(shù)據(jù)已經(jīng)被寫入到24c02了。 接著我們按 key2,可以看我們剛剛寫入的數(shù)據(jù)被顯示出來(lái)了,如下圖所示: 源代碼: 七實(shí)驗(yàn)總結(jié)七實(shí)驗(yàn)總結(jié) iic 是由數(shù)據(jù)線 sda 和時(shí)鐘 scl 構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在 cpu 與被 控 ic 之間、ic 與 ic 之間進(jìn)行雙向傳送,高速 iic 總線一般可達(dá) 400kbps 以上。 iic 總線在傳送數(shù)據(jù)過(guò)程中共有三種類型信號(hào),它們分別是:開始信號(hào)、結(jié)束信號(hào)和應(yīng)答 信號(hào)。這些信號(hào)中,起始信號(hào)是必需的,結(jié)束信號(hào)和應(yīng)答信號(hào),都可以不要。 程序在開機(jī)的時(shí)候會(huì)檢測(cè) 24c02 是否存在,

28、如果不存在則會(huì)在 tftlcd 模塊上顯示錯(cuò) 誤信息,同時(shí) led0 慢閃。大家可以通過(guò)跳線帽把 pc11 和 pc12 短接就可以看到報(bào)錯(cuò) 了。 通過(guò)本次實(shí)驗(yàn),我掌握了如何使用 iic 寫入與讀出數(shù)據(jù),學(xué)習(xí)了編寫 i2c 驅(qū)動(dòng)程序,使用 驅(qū)動(dòng)程序初始化 epc02,判斷設(shè)備正確性,以及如何在助手上顯示。 實(shí)驗(yàn)十七實(shí)驗(yàn)十七 spispi 實(shí)驗(yàn)實(shí)驗(yàn) 一實(shí)驗(yàn)簡(jiǎn)介一實(shí)驗(yàn)簡(jiǎn)介 編程實(shí)現(xiàn)對(duì) spi 接口的 w25q64 進(jìn)行讀寫操作。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)?zāi)康?熟練掌握 spi 編程,學(xué)會(huì)對(duì)的 w25q64 讀寫操作。 三實(shí)驗(yàn)內(nèi)容三實(shí)驗(yàn)內(nèi)容 1.編寫 spi 驅(qū)動(dòng)程序 2.初始化 spi 接口 3.讀取 s

29、piflash 的 id,如果正確繼續(xù),否則報(bào)錯(cuò) 4.向 spifalsh 地址 0 x12ab00 開始寫一串字符,再讀出比較判斷是否與寫入的一致 5.向 spifalsh 地址 0 x12ab00 開始寫連續(xù) 256 個(gè)字節(jié)的 0 x5a,然后讀出并發(fā)送給串 口,通過(guò)串口調(diào)試助手判別是否讀到的都是 0 x5a. 四實(shí)驗(yàn)設(shè)備四實(shí)驗(yàn)設(shè)備 硬件部分:pc 計(jì)算機(jī)(宿主機(jī))、亮點(diǎn) stm32 實(shí)驗(yàn)板、jlink。 軟件部分:pc 機(jī) windows 系統(tǒng)、mdk keil 軟件、isp 軟件、串口調(diào)試助手。 五實(shí)驗(yàn)步驟五實(shí)驗(yàn)步驟 1 參考 spi 及 spi flash 部分,編寫 spi 及 s

30、pi flash 驅(qū)動(dòng)程序(可參考書上代碼)。 2 編寫主程序 3 編譯代碼,使用 jlink 或 isp 下載到實(shí)驗(yàn)板 4 記錄實(shí)驗(yàn)過(guò)程,撰寫實(shí)驗(yàn)報(bào)告 六實(shí)驗(yàn)結(jié)果及測(cè)試六實(shí)驗(yàn)結(jié)果及測(cè)試 源代碼: 伴隨 led0 的不停閃爍,提示程序在運(yùn)行。我們先按下key0,可以看到如圖13.17.4.2 所示的內(nèi)容,證明數(shù)據(jù)已經(jīng)被寫入到w25x16了。 接著我們按key2,可以看我們剛剛寫入的數(shù)據(jù)被顯示出來(lái)了,如下圖所示: 七實(shí)驗(yàn)總結(jié)七實(shí)驗(yàn)總結(jié) spi 接口主要應(yīng)用在 eeprom,flash,實(shí)時(shí)時(shí)鐘,ad 轉(zhuǎn)換器,還有數(shù)字信號(hào)處理 器和數(shù)字信號(hào)解碼器之間。spi,是一種高速的,全雙工,同步的通信總線,

31、并且在芯片 的管腳上只占用四根線,節(jié)約了芯片的管腳,同時(shí)為 pcb 的布局上節(jié)省空間,提供方 便,正是出于這種簡(jiǎn)單易用的特性,現(xiàn)在越來(lái)越多的芯片集成了這種通信協(xié)議,stm32 也有 spi 接口。 spi 的設(shè)置步驟: 1)配置相關(guān)引腳的復(fù)用功能,使能 spi 時(shí)鐘。 2)設(shè)置 spi 工作模式。 3)使能 spi。 程序在開機(jī)的時(shí)候會(huì)檢測(cè) w25x16 是否存在,如果不存在則會(huì)在tftlcd 模塊上顯示 錯(cuò)誤信息,同時(shí)led0 慢閃。大家可以通過(guò)跳線帽把pa5 和pa6 短接就可以看到報(bào)錯(cuò)了。 通過(guò)本實(shí)驗(yàn),我掌握了編寫 spi 程序?qū)懭牒妥x取 flash 的方法,掌握了對(duì)學(xué)會(huì)對(duì)的 w25q64 讀寫操作。對(duì) stm32 開發(fā)板有了進(jìn)一步的了解。 實(shí)驗(yàn)二十一實(shí)驗(yàn)二十一 紅外遙控實(shí)驗(yàn)紅外遙控實(shí)驗(yàn) 一一實(shí)驗(yàn)簡(jiǎn)介實(shí)驗(yàn)簡(jiǎn)介 編程實(shí)現(xiàn)通過(guò)在 alientek ministm32 開發(fā)板上實(shí)現(xiàn)紅外遙控器的控制。 二實(shí)驗(yàn)?zāi)康亩?shí)驗(yàn)?zāi)康?掌握編程實(shí)現(xiàn)紅外遙控控制

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論