基于STM32F103嵌入式實驗指導書_第1頁
基于STM32F103嵌入式實驗指導書_第2頁
基于STM32F103嵌入式實驗指導書_第3頁
基于STM32F103嵌入式實驗指導書_第4頁
基于STM32F103嵌入式實驗指導書_第5頁
免費預覽已結束,剩余18頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗一、STM32的開發(fā)環(huán)境與簡單工程一、實驗目的1、熟悉STM3叫發(fā)板的開發(fā)環(huán)境;2、熟悉MD/iJ建和配置STM32T程項目的基本流程;3、熟悉STM32W方庫的應用;4、規(guī)范編程格式。二、實驗內容本次實驗配置MDK!成開發(fā)環(huán)境,新建一個簡單的工程文件,添加STM3給方庫并配置 工程,編譯運行這個工程文件。下載已經編譯好的文件到開發(fā)板中運行。 學會在程序中設置 斷點,觀察系統內存和變量,為調試應用程序打下基礎。三、預備知識基本單片機硬件知識、單片機軟件編程語言、程序創(chuàng)建和調試的基本方法。四、實驗設備及工具硬件:STM3加發(fā)平臺軟件:STM32W方庫;PC機操作系統 Windows 98、W

2、indows 2000 或 Windows XP; KEIL MDK 集成開發(fā)環(huán)境;串口轉 usb驅動。五、實驗步驟1、在準備存放工程文件的目錄下創(chuàng)建一新文件夾,命名為 Proj_GPIO ;在Proj_GPIO 文件夾里面分別再創(chuàng)建四個文件夾:CMSIS USER LIB、OBJ如圖1。其中 CMSIS (Cortex Microcontroller Software Interface Standard)用于存放Cortex-M處理器系列的與供應商無關的軟件抽象層和啟動相關的代碼文件;USER!于存放我們自己編寫的代碼文件(含自己移植的底層驅動),還有MDKT程;LIB存放所有的官方底層驅

3、動庫文件;OBJ用于工程輸出的過程文件和最終的二進制文件。+ 充蛀游 Projl GPSD ,,ste - j7斯CMSIS2U16/SA193A LEEM16/SAma* MJM16/1A2016/1圖12、將官方庫 STM32F10x_StdPeriph_Lib_V350.rar解壓。1)把 STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport 下的所有文件和STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x下的所有文件都到第一步所創(chuàng)建

4、的CMSIS文件夾中;2)把 STM32F10x_StdPeriph_Lib_V350LibrariesSTM32F10x_StdPeriph_Driver目錄下的文件(目錄inc和scr)復制到第一步創(chuàng)建的LIB文件夾中;3)把 STM32F10x_StdPeriph_Lib_V350ProjectSTM32F10x_StdPeriph_Template目錄下的 stm32f10x_conf.h 、stm32f10x_it.c 、stm32f10x_it.h 三個文件復制到 USE戲件夾 13、打開 MDK軟件,新建一個工程Proj_GPIO 保存到 Proj_GPIO/USER中。CPU選

5、擇PTojertSTM32F103ZE 如圖 2;圖2-! J laraet F 三 CMSI5因 CDra_cm9.c圖 EyEtem_tni32F 3 Ox x舅IQx_hd-s-0合U9ER 母iim.c電 4面3布口T stm3S0x_conf,h4、新建一個空文檔 main.c保存到USER中,然后根 據絕對路徑將文件對應添加到工程中,如右圖。B 3 LE 目 misc.c Etm32FlOK_adcx stm3fiox_bkp,c由 stm33fl0x_can.c百 stm3f LQx_cbc.c &貪面3胃1口工,%c 力型而切口囪 stm32f 1 Oxdbgnoj. c g

6、stm32f Iflx_drrk3.c 或I Ox_extliC-哲麗 33fl QxJliWh 二圖 砒Oxjsmc.c目 stm32d!l0:_gpb.c stmSaiOx.iSc-G stm32fiox_iwda.c圖 stmSSflOxjswr.c g stm32f lOx_rcc.c:-春tmSEfmjtcstm32fl0x_sdio.c國| 5tm32fl0x&5pi.c西| 5tm32f lOxJim.cstm33flQx_usart.c5、配置工程屬性,右鍵點擊工程文件中的Target 1選擇Options for Target Target1打開工程選項對話框。做如下修改:1

7、) Output 選項勾選 Create HEX File ,然后點擊 Select Folder for Objects 按鈕定 位輸出文件保存目錄到工程的OBJ文件;2) Listing 選項,同樣點擊 Select Folder for Listings定位輸出文件保存目錄到工程的OBJ文件;3) ) C/C+選項,Define 中填入 S32F10X_HDUSE_STDPERIPH_DRIVER 的兩個基本宏定義;配置 Include Paths 屬 性,加入工程中包含頭文件的目錄;如右圖4)后面Debug和Utilities 兩個選項如果使用 J-link 或者其他調試器則需要做對應

8、的 修改,否則不用。6、根據實驗任務硬件原理圖編寫代碼實現四個按鍵控制led燈亮滅。1)其中用戶按鍵和 LED原理圖如下:用戶按鍵用戶功能LED燈GPIO_Init(GPIOE, &gpin_init_struct);/E 口按鍵2)根據原理圖初始化各 IO弓I腳,編寫控制函數,然后主函數中調用。I*函數名稱:io init*函數功能:初始化 PA0 PE2 PE3 PE4 為輸入口 PE5 PB5為輸出口*1void io_init()GPIO_InitTypeDef gpin_init_struct;/使能每個IO 口的時鐘RCC_APB2PeriphClockCmd(RCC_APB2Pe

9、riph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);gpin_init_struct.GPIO_Pin = GPIO_Pin_0;gpin_init_struct.GPIO_Speed = GPIO_Speed_2MHz;gpin_init_struct.GPIO_Mode = GPIO_Mode_IPD;GPIO_Init(GPIOA, &gpin_init_struct);gpin_init_

10、struct.GPIO_Pin = GPIO_Pin_5;gpin_init_struct.GPIO_Speed = GPIO_Speed_2MHz;gpin_init_struct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &gpin_init_struct);GPIO_Init(GPIOE, &gpin_init_struct);gpin_init_struct.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;gpin_init_struct.GPIO_Speed = GPIO_Speed_2MHz;

11、gpin_init_struct.GPIO_Mode = GPIO_Mode_IPU;/PA0弓|腳/IO 速度為2MHz/下拉模式/A 口按鍵/B 口 ledl/E 口 led2/上拉模式* 函數名稱:key_led* 函數功能:根據按鍵情況控制led燈的亮滅si s2 控制ledl ; s3 s4* 參數:無* 其他:其中 LED1_ON LED1_OFF LED2_ON LED2_OFF 為全局宏定義*/void key_led()if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_4)=0) LED1_ON;if(GPIO_ReadInputDataBit

12、(GPIOE, GPIO_Pin_3)=0) LED1_OFF;if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2)=0) LED2_ON;if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)=1) LED2_OFF;控制led2#include stm32f10x.h#define LED2_ON#define LED2_OFF#define LED1ONGPIO_ResetBits(GPIOB, GPIO_Pin_5)GPIO_SetBits(GPIOB, GPIO_Pin_5)GPIO_ResetBits(GPIOE,

13、GPIO_Pin_5)#define LED1OFFGPIO_SetBits(GPIOE, GPIO_Pin_5)void io_init();void key_led();int main()io_init();while(1)key_led();3)代碼編寫完成后編譯鏈接,通過下載軟件將hex文件下載到實驗板中運行驗證。實驗二、ucos操作系統的移植一、實驗目的1、掌握ucos到STM32的移植方法;2、熟悉通過C語音處理底層寄存器的技巧;3、了解STM3酢ucos任務切換時的處理;4、規(guī)范編程格式。二、實驗內容本次實驗通過用C語言編寫6個操作系統相關函數和用匯編語言編寫4個與處理器相關的

14、函數,將實時操作系統式/OS-n移植到芯片STM32F103ZE中,并創(chuàng)建兩個用戶任務點亮led。學會操作系統的移植方法,深入掌握嵌入式操作系統4/OS- n在初始化任務和任務調度的實現方法,直觀了解實時操作系統的體系結構和設計思想。三、預備知識基本單片機硬件知識、單片機軟件編程語言、程序創(chuàng)建和調試的基本方法、ucos操作系統的任務調度原理、STM32的寄存器架構。四、實驗設備及工具硬件:STM3 M發(fā)平臺軟件:STM32W方庫;PC機操作系統 Windows 98、Windows 2000 或 Windows XP; KEIL MDK 集成開發(fā)環(huán)境;串口轉 usb驅動。五、實驗步驟1、按實驗

15、一的步驟新建一個工程Proj2_ucos 。2、將移植好的ucos源代碼整個拷貝到我們的新建的工程目錄中,然后按對應的文件路徑添加到keil工程里(os dbg.c和os dbg r.c只添加一個),如圖6和圖7。-f=| Ta- flM I理由UBi由uUl ij ETwnjP3.T UCCKJLGNF 口 *ClwSrfchs mV1三 &. ycwcore圖6jj圖73、配置工程相關屬性(與實驗一庫應用配置一樣),記得將ucos的頭文件路徑添加到工程的 include path 上面去,找到 stm2f10x_it.c 的 PendSV_Handler 函數注釋掉, main 文件中將i

16、ncludes.h 包含進來,主函數為空,編譯通過。4、在main.c中建立sys_init()函數編寫操作系統運行需要的硬件相關初始化(見代碼),然后修改stm32f10x_it.c中的系統心跳中斷函數并加入頭文件includes.h (見代碼,)。I* 函數名稱:sys_init* 函數功能:嵌套向量中斷優(yōu)先級分組,時鐘心跳定時初始化1/200 s* 參數:無*/*void sys_init()NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);SysTick_Config(SystemCoreClock/200);* brief This fun

17、ction handles SysTick Handler.* param None* retval None* /void SysTick_Handler(void)OSIntEnter();OSTimeTick();OSIntExit();5、編寫用戶任務函數和相關的初始化。I* 函數名稱:led_init* 函數功能:初始化LED* 參數:* 其他:* */void led_init()GPIO_InitTypeDef gpin_init_struct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, EN

18、ABLE);gpin_init_struct.GPIO_Pin = GPIO_Pin_5;gpin_init_struct.GPIO_Speed = GPIO_Speed_2MHz;gpin_init_struct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &gpin_init_struct);/B 口 ledlI* 函數名稱:my_task* 函數功能:用戶任務* 參數:*其他:*void my_task()sys_init();led_init();OSStatInit();while(1)LED1_ON;LED2_OFF;OSTimeDl

19、y(50);LED1_OFF;LED2_ON;OSTimeDly(IOO);6、最后在主函數中創(chuàng)建任務并啟動操作系統。編譯并調試運行。#include stm32f10x.h#define LED2_ON#define LED2_OFF#define LED1_ON#define LED1OFF#include includes.hGPIO_ResetBits(GPIOB, GPIO_Pin_5)GPIO_SetBits(GPIOB, GPIO_Pin_5)GPIO_ResetBits(GPIOE, GPIO_Pin_5)GPIO_SetBits(GPIOE, GPIO_Pin_5)OS_ST

20、K task_stk128;void my_task(void);void led_init(void);void sys_init(void);int main()OSInit();OSTaskCreate(my_task, (void *)0, (OS_STK *)&task_stk127, 10);OSStart();while(1);實驗三、ucos操作系統的任務通信一、實驗目的1、掌握ucos任務間通信的各種方法;2、了解嵌入式操作系統任務間可能出現的資源沖突;3、掌握ucos中信號量和郵箱的應用;4、規(guī)范編程格式。二、實驗內容本次實驗通過用 C語言編寫基于ucos操作系統下的多個用

21、戶任務,并且實現任務間的 正確通信。通過信號量處理公共資源的等待和使用, 通過郵箱實現任務間的多個數據變量的 傳遞。建立正確的操作系統編程理念,深入掌握心/OS- n中信號量與郵箱的創(chuàng)建和使用,了解各任務間通信方法的大概原理及優(yōu)缺點。三、預備知識ucos操作基本單片機硬件知識、單片機軟件編程語言、程序創(chuàng)建和調試的基本方法、 系統的任務調度原理。四、實驗設備及工具硬件:STM3加發(fā)平臺。軟件:STM32W方庫;PC機操作系統 Windows 98、Windows 2000 或 Windows XP; KEIL MDK 集成開發(fā)環(huán)境;串口轉 usb驅動。五、實驗步驟1、建立基于操作系統2、創(chuàng)建用戶

22、任務文件/task.c 文件代碼#include task.hINT32U NUM_COUNT1;INT32U NUM_COUNT2;void test_sem(void);void my_task()while(1) test_sem();心/OS-n的工程Proj3_ucos1 ,并配置好工程各項屬性。task.c和task.h兩個文件,詳細代碼如下。void test_sem()INT8U sem_err;INT32U tmp;tmp = NUM_COUNT1;OSTimeDlyHMSM(0,0,0,50);/用延時代替任務的其他任務tmp+; NUM_COUNT1 = tmp;OSSe

23、mPend(NUM_COUNT, 500, &sem_err);tmp = NUM_COUNT2;OSTimeDlyHMSM(0,0,0,50);/用延時代替任務的其他任務tmp+; NUM_COUNT2 = tmp;OSSemPost(NUM_COUNT);/task.h 文件代碼#ifndef _MY_TASK_H#define _MY_TASK_H#include includes.hextern OS_EVENT *NUM_COUNT;extern void my_task(void);#endif代碼中,在task1.c 中定義兩個全局變量 NUM_COUNT1 NUM_COUN下的

24、個變量在 my_task 函數里用于記錄該任務循環(huán)的總次數,區(qū)別在與NUM_COUN直接操彳而NUM_COUNT2通過信號量的方法進行操作。3、在main函數中初始化操作系統后創(chuàng)建一個信號量NUM_COUN球后用OSTaskCreate創(chuàng)建兩個任務,優(yōu)先級分別是 8和9,兩個任務的入口地址都是 task1.c文件中的my_task函 數。NUM_COUNT = OSSemCreate(1);/ 創(chuàng)建一個信號量OSTaskCreate(my_task, (void *)0, (OS_STK *)&task1_stkSIZE_STK-1, 9);OSTaskCreate(my_task, (voi

25、d *)0, (OS_STK *)&task2_stkSIZE_STK-1, 8);4、編譯通過后調試, 在debug界面中,將NUM_COUNT1NUM_COUNT2個全局變量力口入至IJ變 量觀察窗口 watch1中,然后在task.c的my_task函數里面設置斷點, 運行并觀察兩個變量 的變化,理解信號量的使用。5、關于操作系統郵箱的應用由例子工程Proj3_ucos2實現,請自行理解代碼。實驗四、ucos操作系統的文件系統實現一、實驗目的1、了解文件系統 FATFS的基本實現原理;2、掌握FATFS的移植步驟;3、掌握基于 ucos中FATFS的應用;4、掌握STM32寸SD卡的讀寫

26、操作;5、規(guī)范編程格式。二、實驗內容本實驗實現將FAT文件系統移植到 ucos中,并基于ucos的文件系統編寫用戶任務進行 測試,通過對文件系統的移植實驗深入掌握對嵌入式相關驅動移植的基本步驟,建立正確的嵌入式操作系統驅動移植理念,并且熟悉掌握ucos操作系統下的文件系統的基本應用,了解其優(yōu)缺點。三、預備知識基本單片機硬件知識、單片機軟件編程語言、程序創(chuàng)建和調試的基本方法、ucos操作系統的任務調度原理、STM32單片機中的SD卡驅動、文件系統的操作函數、FAT文件系統的 基礎知識。四、實驗設備及工具硬件:STM3加發(fā)平臺。軟件:PC機操作系統 Windows 98、Windows 2000或

27、 Windows XP; KEIL MD磔成開發(fā)環(huán)境;串口轉usb驅動;STM32W方庫;FATFS的官方庫;STM32的uart驅動和SD卡驅動源碼。五、實驗步驟1、拷貝實驗三的所有代碼到新的目錄地下,刪除USE濟口 OBJ文件夾里工程相關的文件,重新建立實驗四的工程并命名為Proj4 FATFS,配置好工程各項屬性。2、在USE戲件夾里面創(chuàng)建文件夾myapp,將串口驅動uart和SD卡驅動sdio_sdcard 的源代碼拷貝到該文件夾里面, 并添加到工程中 USER3、拷貝FAT文件系統源碼到 myapp文件夾。在keil的工 程中增加一個文件夾FATFS并添加 diskio.c 、ff.

28、c、cc936.c三個文件到里面,如右圖。4、嘗試編譯字符表文件 cc936.c可能發(fā)現出錯:#error directive:This file is not needed in currentconfiguration.這是因為在 ff.h 中_CODE_PAGE個宏的定義值不是936和長文件名宏定義_USE_LFN勺值不是1導 致的。修改成對應的值后該文件的編譯即可通過(如果用 其他字符表文件同理)。T&rget 1兇回x:E- 田二I B-ft i+)二i 坦二ICMSISUSER國 m.im c囪 stm32fl0xi t. c國 c用 sdi .idctrd. c因 uftrt.

29、cLIBUSEEJOHHGUSERJORI USER PORT f 0 1 6 k e 3 5 9 藥擊ffl; FATS闌3 0-由:, ,R5、移植FAT文件系統需要做的事情。1) FATFS是一個通用的文件系統模塊,用于在小型嵌入式系統中實現FAT文件系統。FatFs的編寫遵循 ANSI C,因此不依賴于硬件平臺。它可以嵌入到便宜的微控制器中,如 8051 , PIC, AVR SHH Z80, H8, ARMl?等,不需要做任何修改。FATFS源代碼的獲取,可以到官網下載/fsw/ff/00index_e.html;解壓文件會得到兩個文件夾,一個是d

30、oc文件夾,保存FATFS的一些使用文檔和說明。另一個是src文件夾,保存代碼源文件。FAT文件系統源碼和sd卡讀寫的底層驅動。2)移植FAT文件系統只需根據硬件中可能接入的物理存儲模塊對文件系統的底層IO驅動(diskio.c )進行修改,具體需要修改的函數有:DSTATUS disk_initialize (BYTE); / 存儲介質的初始化DSTATUS disk_status (BYTE); /讀取存儲介質的狀態(tài)DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE); / 讀取數據DRESULT disk_write (BYTE, const BYTE

31、*, DWORD, BYTE); / 寫入數據DRESULT disk_ioctl (BYTE, BYTE, void*); /讀取存儲介質文件系統相關信息 DWORD get_fattime (void); /返回文件系統的時間3) diskio.c 文件中添加頭文件 sdio_sdcard.h 、ff.h ,增加SD卡的驅動號 0如下:/* Correspondence between physical drive number and physical drive. */# define SD_CARD 0# define ATA1# define MMC2# define USB34)

32、 diskio.c五個函數具體代碼:DSTATUS disk_initialize ( BYTE drv/* Physical drive nmuber (0.) */) switch(drv)case SD_CARD:/SD 卡 if(SD_Init() = SD_OK) return RES_OK; else return RES_NOTRDY; return RES_NOTRDY;DSTATUS disk_status (BYTE drv /* Physical drive nmuber (0.) */)switch(drv)case SD_CARD:/SD 卡if(SD_GetStat

33、us() = SD_TRANSFER_ERROR) return STA_NOINIT; else return STA_PROTECT;default:return STA_NODISK;一DRESULT disk_read (BYTE drv,/* Physical drive nmuber (0.) */BYTE *buff,/* Data buffer to store read data */DWORD sector, /* Sector address (LBA) */BYTE count/* Number of sectors to read (1.255) */) switch

34、 (drv) case SD_CARD :for(;count0;count-) if(SD_ReadBlock(buff, sector3 9, _MAX_SS) != SD_OK) break;sector+; buff+=_MAX_SS; /* Wait until end of DMA transfer */ SD_WaitReadOperation();/* Check if the Transfer is finished */ while(SD_GetStatus() != SD_TRANSFER_OK); if(count = 0) return RES_OK;else ret

35、urn RES_ERROR; default: return RES_NOTRDY;#if READONLY = 0 DRESULT disk_write ( BYTE drv, const BYTE *buff, DWORD sector, BYTE count /* Physical drive nmuber (0.) */* Data to be written */* Sector address (LBA) */* Number of sectors to write (1.255) */switch (drv) case SD_CARD : for(;count0;count-)

36、if(SD_WriteBlock(uint8_t *)buff,sector22); if(SD_ReadBlock(RxBuffer, 0, 512) = SD_OK) for(i=0; i512; i+) printf(%X , RxBufferi);7)如果上一步能初始化并檢測出SD卡的大小,讀出前 512個字節(jié)的數據,則說明 SD卡和驅動函數都正常。下一步設計一個FAT測試函數:實現檢測TEST.txt文件是否存在,存在則讀取文件中的前100個字節(jié)內容并串口輸出;然后打開TEST2.txt文件(不存在則創(chuàng)建)寫入讀取到的內容(沒有內容則寫入“ is no file TEST.txt!

37、”);打開TEST2.txt讀取 文件中的前100個字節(jié)內容并串口輸出。具體代碼如下。void test_FAT() FATFS fs;FIL f_1, f_2;INT32U read_count=21; FRESULT error;error = f_mount(0, &fs);掛載 SD 卡error = f_open(&f_1, TEST.txt, FA_OPEN_EXISTING|FA_READ); if(error=FR_OK)error = f_read(&f_1, RxBuffer, BUFFER_SIZE, &read_count);printf(品rread the file

38、: TEST.txt nr); 一一printf(read 100 bytes, then return %d bytes! nr”, read_count);printf(the data is :nr);printf(char*)RxBuffer);error = f_close(&f_1);一 一error = f_open(&f_2, TEST2.txt, FA_OPEN_ALWAYS|FA_WRITE);printf(nrwrite test2.txt %d words!nr”, read_count);error = f_write(&f_2, RxBuffer, read_cou

39、nt, &read_count);if(error=FR_OK)一一一 printf(write OK ! %d words are writednr”, read_count); else printf(write errornr); error = f_close(&f_2); error = f_open(&f_1, TEST2.txt, FA_OPEN_EXISTING|FA_READ); if(error=FR_OK) error = f_read(&f_1, RxBuffer, BUFFER_SIZE, &read_count); printf(而rread the file: T

40、EST2.txt nr)一printf(read 100 bytes, then return %d bytes! nr”, read_count); printf(the data is :nr); printf(char*)RxBuffer);error = f_close(&f_1);一 一8)至此,我們已經將FATFS移植成功了,下面我們設計一個基于ucos的文件系統應用實驗,實現在用戶中檢測是否有SD卡插入,如果有則任務沒循環(huán)一次在SD卡中的文件mytask.txt的末尾寫入一句“這是本任務的第xx次循環(huán)”,然后在主函數中創(chuàng)建兩個以上的該任務的線程(這里需要注意實驗三的資源沖突問題!

41、)。9)具體代碼,詳見實例工程!* 擴展知識1:在本工程中的SD底層驅動中,因為用 32位存儲SD卡的容量大小,所以 最大只能識別到4GB如果采用大于 4G的卡進行測試則讀出的容量是錯誤的。* 擴展知識2:對于FAT32的MBRK不一定是在 0扇區(qū)中。* 擴展知識3:配置ff.h(可能是ffconf.h )文件中_USE_STRFUNCg定義為1,可以使用 f_putc、f_puts、f_printf 、f_gets、f_eof、f_error 等函數實驗五、基于ucos操作系統的網絡模塊一、實驗目的1、了解 W5500網絡模塊的基本實現原理;2、掌握ucos下網絡底層庫的移植步驟;3、掌握基

42、于ucos的網絡編程TCP UDP思路;4、了解嵌入式軟件設計的分層思路;、實驗內容本實驗通過STM32的SPI協議讀寫 W5500網絡模塊,移植網絡協議驅動到ucos嵌入式操作系統,并通過編寫 ucos操作系統的應用任務實現實驗板和上位機的網絡通信。了解基 于網絡通信的嵌入式軟件設計的思路。三、預備知識本實驗要求學生具備基本的C語言讀寫能力、基本單片機軟硬件知識、了解 SPI協議、了解基礎的網絡協議應用、ucos操作系統的用戶任務設計能力四、實驗設備及工具硬件:STM3叫發(fā)平臺、PC機軟件:keilMDK編程環(huán)境、串口轉usb驅動、STM32官方庫、移植好的ucos源碼、基于STM32 的SPI驅動庫、基于 STM32的uart驅動庫、W5500網絡模塊驅動庫、五、實驗步驟1、了解網絡編程中 socket、UDP的基本實現原理。2、了解W5500網絡模塊的基本功能和官方驅動庫提供的代碼架構。 W5500是一款全硬件 TCP/IP 嵌入式以太網 控制器,為嵌入式系統提供了更加簡易的互聯網連接 方案。W5500集成了 TCP/IP協議棧,10/100M 以太網數據鏈路層(MAC及物理層(PHY,使得用戶使用單芯片就能夠在他們的應用

溫馨提示

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

評論

0/150

提交評論