久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2830|回復: 0
收起左側

STM32組建文件系統、庫函數的方法 實驗指導書下載

[復制鏈接]
ID:473493 發表于 2019-1-28 08:56 | 顯示全部樓層 |閱讀模式
實驗一、STM32的開發環境與簡單工程
一、實驗目的
1、熟悉STM32開發板的開發環境;
2、熟悉MDK創建和配置STM32工程項目的基本流程;
3、熟悉STM32官方庫的應用;
4、規范編程格式。
二、實驗內容
本次實驗配置MDK集成開發環境,新建一個簡單的工程文件,添加STM32官方庫并配置工程,編譯運行這個工程文件。下載已經編譯好的文件到開發板中運行。學會在程序中設置斷點,觀察系統內存和變量,為調試應用程序打下基礎。
三、預備知識
基本單片機硬件知識、單片機軟件編程語言、程序創建和調試的基本方法。
四、實驗設備及工具
硬件:STM32開發平臺
軟件:STM32官方庫;PC機操作系統Windows 98、Windows 2000或Windows XP;KEIL MDK集成開發環境;串口轉usb驅動。
五、實驗步驟
1、在準備存放工程文件的目錄下創建一新文件夾,命名為Proj_GPIO;在Proj_GPIO文件夾里面分別再創建四個文件夾:CMSIS、USER、LIB、OBJ。如圖1。
其中CMSIS(Cortex Microcontroller Software Interface Standard)用于存放Cortex-M 處理器系列的與供應商無關的軟件抽象層和啟動相關的代碼文件;
USER用于存放我們自己編寫的代碼文件(含自己移植的底層驅動),還有MDK工程;
LIB存放所有的官方底層驅動庫文件;
OBJ用于工程輸出的過程文件和最終的二進制文件。
圖1
2、將官方庫STM32F10x_StdPeriph_Lib_V3.5.0.rar解壓。
1)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的所有文件和STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x下的所有文件都到第一步所創建的CMSIS文件夾中;
2)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目錄下的文件(目錄inc和scr)復制到第一步創建的LIB文件夾中;
3)把STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目錄下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三個文件復制到USER文件夾中。
3、打開MDK軟件,新建一個工程Proj_GPIO保存到Proj_GPIO/USER中。CPU選擇STM32F103ZE,如圖2;
圖2
4、新建一個空文檔main.c保存到USER中,然后根據絕對路徑將文件對應添加到工程中,如右圖。
5、配置工程屬性,右鍵點擊工程文件中的Target 1選擇Options for Target ‘Target 1’打開工程選項對話框。做如下修改:
1)Output選項勾選Create HEX File,然后點擊Select Folder for Objects按鈕定位輸出文件保存目錄到工程的OBJ文件;
2)Listing選項,同樣點擊Select Folder for Listings定位輸出文件保存目錄到工程的OBJ文件;
3)C/C++選項,Define中填入STM32F10X_HD, USE_STDPERIPH_DRIVER系統的兩個基本宏定義;配置Include Paths屬性,加入工程中包含頭文件的目錄;如右圖
4)后面Debug和Utilities兩個選項如果使用J-link或者其他調試器則需要做對應的修改,否則不用。
6、根據實驗任務硬件原理圖編寫代碼實現四個按鍵控制led燈亮滅。
1)其中用戶按鍵和LED原理圖如下:
圖5
2)根據原理圖初始化各IO引腳,編寫控制函數,然后主函數中調用。
3)代碼編寫完成后編譯鏈接,通過下載軟件將hex文件下載到實驗板中運行驗證。

實驗二、ucos操作系統的移植一、實驗目的
1、掌握ucos到STM32的移植方法;
2、熟悉通過C語音處理底層寄存器的技巧;
3、了解STM32在ucos任務切換時的處理;
4、規范編程格式。
二、實驗內容
本次實驗通過用C語言編寫6個操作系統相關函數和用匯編語言編寫4個與處理器相關的函數,將實時操作系統μC/OS-Ⅱ移植到芯片STM32F103ZE中,并創建兩個用戶任務點亮led。學會操作系統的移植方法,深入掌握嵌入式操作系統μC/OS-Ⅱ在初始化任務和任務調度的實現方法,直觀了解實時操作系統的體系結構和設計思想。
三、預備知識
基本單片機硬件知識、單片機軟件編程語言、程序創建和調試的基本方法、ucos操作系統的任務調度原理、STM32的寄存器架構。
四、實驗設備及工具
硬件:STM32開發平臺
軟件:STM32官方庫;PC機操作系統Windows 98、Windows 2000或Windows XP;KEIL MDK集成開發環境;串口轉usb驅動。
五、實驗步驟
1、按實驗一的步驟新建一個工程Proj2_ucos。
2、將移植好的ucos源代碼整個拷貝到我們的新建的工程目錄中,然后按對應的文件路徑添加到keil工程里(os_dbg.c和os_dbg_r.c只添加一個),如圖6和圖7。

圖6                                                    圖7

3、配置工程相關屬性(與實驗一庫應用配置一樣),記得將ucos的頭文件路徑添加到工程的include path上面去,找到stm2f10x_it.c的PendSV_Handler函數注釋掉,main文件中將includes.h包含進來,主函數為空,編譯通過。
4、在main.c中建立sys_init()函數編寫操作系統運行需要的硬件相關初始化(見代碼),然后修改stm32f10x_it.c中的系統心跳中斷函數并加入頭文件includes.h(見代碼,)。
5、編寫用戶任務函數和相關的初始化。
6、最后在主函數中創建任務并啟動操作系統。編譯并調試運行。


實驗三、ucos操作系統的任務通信
一、實驗目的
1、掌握ucos任務間通信的各種方法;
2、了解嵌入式操作系統任務間可能出現的資源沖突;
3、掌握ucos中信號量和郵箱的應用;
4、規范編程格式。
二、實驗內容
本次實驗通過用C語言編寫基于ucos操作系統下的多個用戶任務,并且實現任務間的正確通信。通過信號量處理公共資源的等待和使用,通過郵箱實現任務間的多個數據變量的傳遞。建立正確的操作系統編程理念,深入掌握μC/OS-Ⅱ中信號量與郵箱的創建和使用,了解各任務間通信方法的大概原理及優缺點。
三、預備知識
基本單片機硬件知識、單片機軟件編程語言、程序創建和調試的基本方法、ucos操作系統的任務調度原理。
四、實驗設備及工具
硬件:STM32開發平臺。
軟件:STM32官方庫;PC機操作系統Windows 98、Windows 2000或Windows XP;KEIL MDK集成開發環境;串口轉usb驅動。
五、實驗步驟
1、建立基于操作系統μC/OS-Ⅱ的工程Proj3_ucos1,并配置好工程各項屬性。
2、創建用戶任務文件task.c和task.h兩個文件,詳細代碼如下。


代碼中,在task1.c中定義兩個全局變量NUM_COUNT1和NUM_COUNT2,兩個變量在my_task函數里用于記錄該任務循環的總次數,區別在與NUM_COUNT1直接操作,而NUM_COUNT2則通過信號量的方法進行操作。

3、在main函數中初始化操作系統后創建一個信號量NUM_COUNT,然后用OSTaskCreate創建兩個任務,優先級分別是8和9,兩個任務的入口地址都是task1.c文件中的my_task函數。

4、編譯通過后調試,在debug界面中,將NUM_COUNT1,NUM_COUNT2兩個全局變量加入到變量觀察窗口watch1中,然后在task.c的my_task函數里面設置斷點,運行并觀察兩個變量的變化,理解信號量的使用。

5、關于操作系統郵箱的應用由例子工程Proj3_ucos2實現,請自行理解代碼。

實驗四、ucos操作系統的文件系統實現一、實驗目的
1、了解文件系統FATFS的基本實現原理;
2、掌握FATFS的移植步驟;
3、掌握基于ucos中FATFS的應用;
4、掌握STM32對SD卡的讀寫操作;
5、規范編程格式。
二、實驗內容
本實驗實現將FAT文件系統移植到ucos中,并基于ucos的文件系統編寫用戶任務進行測試,通過對文件系統的移植實驗深入掌握對嵌入式相關驅動移植的基本步驟,建立正確的嵌入式操作系統驅動移植理念,并且熟悉掌握ucos操作系統下的文件系統的基本應用,了解其優缺點。
三、預備知識
基本單片機硬件知識、單片機軟件編程語言、程序創建和調試的基本方法、ucos操作系統的任務調度原理、STM32單片機中的SD卡驅動、文件系統的操作函數、FAT文件系統的基礎知識。
四、實驗設備及工具
硬件:STM32開發平臺。
軟件: PC機操作系統Windows 98、Windows 2000或Windows XP;KEIL MDK集成開發環境;串口轉usb驅動;STM32官方庫;FATFS的官方庫;STM32的uart驅動和SD卡驅動源碼。
五、實驗步驟
1、拷貝實驗三的所有代碼到新的目錄地下,刪除USER和OBJ文件夾里工程相關的文件,重新建立實驗四的工程并命名為Proj4_FATFS,配置好工程各項屬性。


2、在USER文件夾里面創建文件夾myapp,將串口驅動uart和SD卡驅動sdio_sdcard的源代碼拷貝到該文件夾里面,并添加到工程中USER。
3、拷貝FAT文件系統源碼到myapp文件夾。在keil的工程中增加一個文件夾FATFS并添加diskio.c、ff.c、cc936.c三個文件到里面,如右圖。

4、嘗試編譯字符表文件cc936.c可能發現出錯:#error directive: This file is not needed in current configuration. 這是因為在ff.h中_CODE_PAGE這個宏的定義值不是936和長文件名宏定義_USE_LFN的值不是1導致的。修改成對應的值后該文件的編譯即可通過(如果用其他字符表文件同理)。
5、移植FAT文件系統需要做的事情。
1)FATFS是一個通用的文件系統模塊,用于在小型嵌入式系統中實現FAT文件系統。 FatFs 的編寫遵循ANSI C,因此不依賴于硬件平臺。它可以嵌入到便宜的微控制器中,如 8051,PIC,AVR,SH,Z80,H8,ARM等等,不需要做任何修改。FATFS源代碼的獲取,可以到官網下載elm-chanorg/fsw/ff/00index_e.html; 解壓文件會得到兩個文件夾,一個是doc文件夾,保存FATFS的一些使用文檔和說明。另一個是src文件夾,保存代碼源文件。FAT文件系統源碼和sd卡讀寫的底層驅動。
2)移植FAT文件系統只需根據硬件中可能接入的物理存儲模塊對文件系統的底層IO驅動(diskio.c)進行修改,具體需要修改的函數有:
DSTATUS disk_initialize (BYTE);//存儲介質的初始化
DSTATUS disk_status (BYTE);//讀取存儲介質的狀態
DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);//讀取數據
DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);//寫入數據
DRESULT disk_ioctl (BYTE, BYTE, void*);//讀取存儲介質文件系統相關信息
DWORD get_fattime (void);//返回文件系統的時間
3)diskio.c文件中添加頭文件sdio_sdcard.h、ff.h,增加SD卡的驅動號0如下:
4)diskio.c五個函數具體代碼:





5)對于最底層(物理層)對SD卡的具體初始化和讀寫操作,STM32有SPI和SDIO兩種方式實現,實際應用中根據硬件電路條件選擇。在沒有SPI外設的單片機中也可以通過IO口模擬SPI協議。(具體實現代碼略,詳見工程文件中的 sdio_sdcard.c 和 sdio_sdcard.h )
6)修改task.c進行文件系統的測試應用。在測試FAT文件系統之前,首先應該確保對底層SD卡的讀寫驅動正確。所以第一步通過直接調用SD卡驅動函數實現對SD卡進行初始化檢測和基本的讀寫操作,具體代碼如下:
7)如果上一步能初始化并檢測出SD卡的大小,讀出前512個字節的數據,則說明SD卡和驅動函數都正常。下一步設計一個FAT測試函數:實現檢測TEST.txt文件是否存在,存在則讀取文件中的前100個字節內容并串口輸出;然后打開TEST2.txt文件(不存在則創建)寫入讀取到的內容(沒有內容則寫入“is no file TEST.txt!”);打開TEST2.txt讀取文件中的前100個字節內容并串口輸出。具體代碼如下。
8)至此,我們已經將FATFS移植成功了,下面我們設計一個基于ucos的文件系統應用實驗,實現在用戶中檢測是否有SD卡插入,如果有則任務沒循環一次在SD卡中的文件mytask.txt的末尾寫入一句“這是本任務的第xx次循環”,然后在主函數中創建兩個以上的該任務的線程(這里需要注意實驗三的資源沖突問題!)。
9)具體代碼,詳見實例工程!
*擴展知識1:在本工程中的SD底層驅動中,因為用32位存儲SD卡的容量大小,所以最大只能識別到4GB,如果采用大于4G的卡進行測試則讀出的容量是錯誤的。
*擴展知識2:對于FAT32的MBR區不一定是在0扇區中。
*擴展知識3:配置ff.h(可能是ffconf.h)文件中 _USE_STRFUNC 宏定義為1,可以使用f_putc、f_puts、f_printf、f_gets、f_eof、f_error 等函數

實驗五、基于ucos操作系統的網絡模塊一、實驗目的
1、了解W5500網絡模塊的基本實現原理;
2、掌握ucos下網絡底層庫的移植步驟;
3、掌握基于ucos的網絡編程TCP、UDP思路;
4、了解嵌入式軟件設計的分層思路;
二、實驗內容
本實驗通過STM32的SPI協議讀寫W5500網絡模塊,移植網絡協議驅動到ucos嵌入式操作系統,并通過編寫ucos操作系統的應用任務實現實驗板和上位機的網絡通信。了解基于網絡通信的嵌入式軟件設計的思路。
三、預備知識
本實驗要求學生具備基本的C語言讀寫能力、基本單片機軟硬件知識、了解SPI協議、了解基礎的網絡協議應用、ucos操作系統的用戶任務設計能力
四、實驗設備及工具
硬件:STM32開發平臺、PC機
軟件: keilMDK編程環境、串口轉usb驅動、STM32官方庫、移植好的ucos源碼、基于STM32的SPI驅動庫、基于STM32的uart驅動庫、W5500網絡模塊驅動庫、
五、實驗步驟
1、了解網絡編程中socket、UDP的基本實現原理。

2、了解W5500網絡模塊的基本功能和官方驅動庫提供的代碼架構。

W5500  是一款全硬件  TCP/IP  嵌入式以太網控制器,為嵌入式系統提供了更加簡易的互聯網連接方案。W5500  集成了  TCP/IP  協議棧,10/100M  以太網數據鏈路層(MAC)  及物理層(PHY),使得用戶使用單芯片就能夠在他們的應用中拓展網絡連接。原廠公司位于韓國,中文官網:www點iwiznet點cn
W5500的驅動可在官網中找到下載,下載解壓后的目錄Ethernet為W5500的官方驅動庫。其中W5500.c和W5500.h提供W5500的硬件接口函數,實現對W5500寄存器的讀寫驅動;socket.c和socket.h提供網絡協議socket的API實現和用戶接口函數;wizchip_conf.c和wizchip.h提供對芯片應用驅動和配置接口,例如芯片的復位、IP地址的初始化,注冊用戶的SIP驅動函數等。整體架構如右圖:
3、基于STM32的移植。
由上圖我們知道對于官方驅動庫,我們需要提供STM32的SPI協議驅動接口。具體需要我們手動實現的函數是:
wizchip_cris_enter :進入臨界區的函數,可以不管
wizchip_cris_exit :退出臨界區的函數,也可以不管
wizchip_cs_select :輸出有效片選信號的函數,控制CS輸出低電平的函數,必須實現
wizchip_cs_deselect :控制CS輸出高電平的函數,必須實現
wizchip_bus_readbyte :SPI總線讀取一字節數據函數,必須實現
wizchip_bus_writebyte :SPI總線寫一字節數據函數,必須實現
正常情況下我們需要找到驅動庫中對應的函數原型進行修改,但是因為官方庫中提供了一個用戶接口,可以將我們已有對應的SPI函數入口注冊并替換掉上述函數,所以我們可以獨立編寫文件SPI.c和SPI.h,然后初始化時調用“注冊函數”(注冊函數在wizchip)。
工程中我們創建文件confForW5500.c和confFroW5500.h實現對W5500的配置和各項初始化,代碼詳見工程文件。
4、用戶測試任務。
根據網絡編程基礎知識,我們編寫一個回環測試任務,對網絡模塊的TCP/IP功能進行基礎測試。具體分為實現socket功能和UDP兩個功能,流程圖如下:

根據上述流程圖,我們創建文件loopback.c和loopback.h實現對應的各項功能函數。然后基于ucos操作系統下建立用戶任務my_task() 進行各項功能的順序調用,主函數中啟動操作系統并創建該任務。
5、上位機連接測試。
將工程編譯調試通過并燒寫到實驗板,用網線連接PC機和W5500網絡模塊,實驗板上電啟動,根據我們編寫的用戶任務STM32將會啟動一個SOCKET服務端并綁定實驗板的IP和程序中配置的端口。
PC上機設置各項網絡參數,讓PC機和實驗板處于同一網段(局域網),然后打開命令提示符窗口CMD,輸入ping命令:ping 192.168.xxx.xxx (實驗板IP),觀察是否能夠收到實驗板反饋的數據信息。如下圖:
PC機打開調試軟件NetAssist.exe,選擇TCP Client,服務器IP地址設置成實驗板IP,服務端口設置成實驗板中打開的socket端口,點擊連接看能否成功連接實驗板socket服務,連接成功后在軟件的發送數據區隨便輸入發送內容,點擊發送,查看接收到的反饋信息,如下圖
6、自行設計編寫應用任務,實現實驗板網絡方面新的需求。


全部資料51hei下載地址:
STM32中GPIO的8種工作模式.pdf (916.55 KB, 下載次數: 6)
UCOS-II_API_參考手冊.doc (516 KB, 下載次數: 5)
基于STM32F103嵌入式實驗指導書.docx (392.74 KB, 下載次數: 8)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久999 成人在线国产 | 欧美激情影院 | 一区二区三区精品 | 黄色三级视频网站 | 国产精品免费av | 99热播| 成年人的免费视频 | www.亚洲视频 | 国产成人精品一区二区 | 久久久蜜桃 | 国产丝袜视频 | 天天操天天碰 | 国产一区二区不卡 | 黑人巨大猛烈捣出白浆 | 午夜国产在线 | 免费在线观看av | 成人免费在线视频 | 69视频在线播放 | 国产极品在线观看 | 午夜视频免费在线观看 | 福利视频网址 | 国产无遮挡 | 巨骚综合 | 欧美一区二区三区在线视频 | 国产强伦人妻毛片 | 国产精品成人国产乱一区 | 999国产视频| 国产午夜在线 | 99视频网站 | 超碰麻豆 | 国产黄a | 亚洲男人的天堂在线观看 | 精品国产成人 | av日韩精品| 中文字幕免费观看视频 | 国产一级网站 | 精品乱子伦一区二区三区 | 精品免费视频 | 日韩欧美在线观看 | 国产成人免费 | 久久精品观看 |