KinetisSDKv2培訓(xùn)教程_第1頁
KinetisSDKv2培訓(xùn)教程_第2頁
KinetisSDKv2培訓(xùn)教程_第3頁
KinetisSDKv2培訓(xùn)教程_第4頁
KinetisSDKv2培訓(xùn)教程_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、EXTERNAL USE熊宇,梁紹忠,李珂 CAS資深工程師2016年5月KINETIS SDK V2KINETIS SDK V2培訓(xùn)教程EXTERNAL USE1KSDK V2 初探初探EXTERNAL USE2Kinetis SDK v2 Kinetis SDK v2 - - 全全貌貌KSDKKSDKKinetis SDK v2是新的支持軟件開發(fā)包,與 v1.x 不完全兼容架構(gòu):CMSIS-CORE兼容扁平化外設(shè)驅(qū)動層針對通訊外設(shè),支持可選DMA功能的高級API集成嵌入式操作系統(tǒng):FreeRTOS, Micrium uC/OS-II & III原生操作系統(tǒng)級API集成協(xié)議棧 &am

2、p; 中間件USB Host, Device and OTG協(xié)議棧LwIP開源TCP/IP協(xié)議棧, FatFS開源FAT文件系統(tǒng)wolfSSL & mbedTLS 傳輸層安全協(xié)議與加密算法SD and eMMC軟件框架示例代碼:外設(shè)驅(qū)動用法高階應(yīng)用demos基于操作系統(tǒng)demos授權(quán)許可:BSD 3開源協(xié)議針對startup, drivers, USB stack開發(fā)環(huán)境支持:KDS, IAR, Keil, Atollic, GCC w/CMake可靠的代碼質(zhì)量量產(chǎn)級代碼兼容MISRA 2004標(biāo)準(zhǔn)通過靜態(tài)分析統(tǒng)計工具測試FreeRTOSuC/OS-II/IIIEXTERNAL USE

3、3Kinetis SDK Kinetis SDK v2 -v2 - 符合CMSIS CortexCMSIS Cortex微控制器軟件接口標(biāo)準(zhǔn)CMSIS-CORECMSIS-CORE 提供了一層對于Cortex-M內(nèi)核的標(biāo)準(zhǔn)訪問接口和定義:支持SysTick, NVIC, FPU等內(nèi)核通用屬性的配置標(biāo)準(zhǔn)化的Cortex-M MCU頭文件定義格式標(biāo)準(zhǔn)化的系統(tǒng)初始化實現(xiàn) SystemInit()、內(nèi)聯(lián)函數(shù)以支持嵌入特殊指令的操作CMSIS-DSPCMSIS-DSP 為Cortex-M家族量身定制的一套通用數(shù)字信號處理和數(shù)學(xué)運算的函數(shù)庫。特別在Cortex-M4內(nèi)核上通過其專用的數(shù)字信號處理指令集進(jìn)行

4、了優(yōu)化。CMSIS-CORE and CMSIS-DSPMicrocontroller HardwareStacks / MiddlewareBoard SupportApplication CodeRTOSPeripheral DriversEXTERNAL USE4Kinetis SDK Kinetis SDK v2 - v2 - 高效率的外設(shè)驅(qū)動層方便裁剪所有外設(shè)擁有一對獨立的 IP.c 和 IP.h 驅(qū)動文件容易移植針對所有Kinetis家族使用統(tǒng)一的API風(fēng)格不用看數(shù)據(jù)手冊所有驅(qū)動實現(xiàn)了簡易API (Functional API) 以全面覆蓋外設(shè)的功能無需了解協(xié)議針對通訊接口外設(shè) (

5、UART, SPI, I2C, CAN等) 提供了更容易上手的高階API (Transactional API)支持查詢方式和非阻塞方式,非阻塞方式通過中斷實現(xiàn)無需用戶編寫中斷服務(wù)內(nèi)容,無需用戶配置中斷提高效率為通訊接口外設(shè)提供了結(jié)合DMA獨立的驅(qū)動實現(xiàn)IP_DMA.c 和 IP_DMA.h支持多任務(wù)為通訊接口外設(shè)提供了基于原生RTOS API獨立的驅(qū)動實現(xiàn)IP_FreeRTOS.c 和 IP_FreeRTOS.hCMSIS-CORE and CMSIS-DSPMicrocontroller HardwareStacks / MiddlewareBoard SupportApplication

6、 CodeRTOSPeripheral DriversEXTERNAL USE5Kinetis SDK Kinetis SDK v2 v2 操作系統(tǒng)支持SDK包含了FreeRTOS, uC/OS-II和uC/OS-III操作系統(tǒng)的源碼和移植文件通訊接口外設(shè)針對每個RTOS有單獨的驅(qū)動實現(xiàn):fsl_dspi_freertos.c / fsl_dspi_ucosii.c / fsl_dspi_ucosiii.c針對FreeRTOS提供了豐富的例程:freertos_dspifreertos_eventfreertos_genericfreertos_hellofreertos_i2cfreerto

7、s_mutexfreertos_queuefreertos_semfreertos_swtimerfreertos_ticklesfreertos_uartCMSIS-CORE and CMSIS-DSPMicrocontroller HardwareStacks / MiddlewareBoard SupportApplication CodeRTOSPeripheral DriversEXTERNAL USE6Kinetis SDK Kinetis SDK v2 v2 全新USBUSB協(xié)議棧全新KSDK USBKSDK USB協(xié)議棧 提供了一個完整的、開源的USB設(shè)備和主機協(xié)議棧??梢詿o縫

8、運行于裸跑環(huán)境或基于操作系統(tǒng)的多任務(wù)環(huán)境,并且提供了豐富的設(shè)備類驅(qū)動和應(yīng)用示例。 總共超過7070個應(yīng)用示例 支持7種USB設(shè)備類型提供了3個復(fù)合設(shè)備的示例支持5種USB主機類型包括對于USB hub的支持支持USB 2.0全速和高速控制器高質(zhì)量協(xié)議棧,協(xié)議棧通過USB-IF認(rèn)證代碼優(yōu)化 最小僅占用 6K Flash 和 2K RAM部分設(shè)備示例提供了 “Lite” 輕量級的代碼CMSIS-CORE and CMSIS-DSPMicrocontroller HardwareStacks / MiddlewareBoard SupportApplication CodeRTOSPeriphera

9、l DriversEXTERNAL USE7Kinetis SDK v2 Kinetis SDK v2 FatFsFatFs嵌入式FATFAT文件系統(tǒng)FatFS是專為小型嵌入式系統(tǒng)設(shè)計的開源FAT文件系統(tǒng):完全兼容ANSI C標(biāo)準(zhǔn)的代碼分離的I/O接口層支持FAT12, FAT16和FAT32文件系統(tǒng)緊湊的代碼體積靈活的配置選項支持:支持多個卷和分區(qū)支持長文件名支持只讀模式配置支持裸機或者多任務(wù)環(huán)境運行SDK中提供了相應(yīng)的應(yīng)用示例:sdcard_fatfsusb_host_msd_fatfsCMSIS-CORE and CMSIS-DSPMicrocontroller HardwareStac

10、ks / MiddlewareBoard SupportApplication CodeRTOSPeripheral DriversFatFs是第三方提供的軟件, 詳情訪問 /fsw/ff/00index_e.htmlEXTERNAL USE8Kinetis SDK v2 Kinetis SDK v2 lwIPlwIP嵌入式網(wǎng)絡(luò)協(xié)議棧lwIP是針對嵌入式系統(tǒng)的輕量級、全功能的TCP/IP協(xié)議棧,支持以下子協(xié)議: 示例程序包括:lwip_httpsrvlwip_pinglwip_tcpecholwip_udpechoCMSIS-CORE and CMSIS-D

11、SPMicrocontroller HardwareStacks / MiddlewareBoard SupportApplication CodeRTOSPeripheral DriverslwIP是第三方提供的軟件, 詳情訪問 /projects/lwip/ARPIGMPIPv4DNSIPv6DHCPTCPSNMPUDPPPPICMPPPPoEEXTERNAL USE9Kinetis SDK v2 Kinetis SDK v2 BSPBSP板級支持包SDK 2.0 針對每一個示例工程都提供了相應(yīng)的BSP文件,以提供對硬件環(huán)境(時鐘、I/O資

12、源等)標(biāo)準(zhǔn)化的的配置流程board.cboard.hclock_config.cclock_config.hpin_mux.cpin_mux.hCMSIS-CORE and CMSIS-DSPMicrocontroller HardwareStacks / MiddlewareBoard SupportApplication CodeRTOSPeripheral DriversEXTERNAL USE10Kinetis SDK v2 Kinetis SDK v2 豐富的應(yīng)用層示例代碼SDK 2.0 提供了非常豐富的應(yīng)用層示例代碼,簡化了用戶對于一個新MCU平臺的上手難度demo_apps 目錄

13、下提供了數(shù)十個常見的應(yīng)用示例driver_examples 目錄下針對每一個外設(shè)都有1個或者多個示例,用戶通過學(xué)習(xí)這些示例代碼便可以快速掌握相應(yīng)API的使用方法和模塊的功能rtos_examples 中提供了多個基于FreeRTOS的多個示例以及2個uC/OS的基本示例usb_examples 中提供了各種USB設(shè)備和主機類的示例代碼CMSIS-CORE and CMSIS-DSPMicrocontroller HardwareStacks / MiddlewareBoard SupportApplication CodeRTOSPeripheral DriversEXTERNAL USE11

14、Kinetis SDK Kinetis SDK v2v2 - - 開發(fā)環(huán)境支持EXTERNAL USE12Kinetis SDK v2 Kinetis SDK v2 - - 20162016發(fā)布計劃Release 1 2016Release 1 2016年1 1月2727日支持Kinetis K & L系列中的熱點產(chǎn)品FRDM-K22F, TWR-K22F120MTWR-K21F120MAFRDM-K64F, TWR-K64F120MTWR-K65F180MTWR-K81F150M, FRDM-K82FFRDM-KL43Z, TWR-KL43Z48MFRDM-KL27ZRelease

15、2 Release 2 20162016年5 5月底支持其他 Kinetis K & L產(chǎn)品和Kinetis M系列FRDM-KL02ZFRDM-KL03ZFRDM-KL25ZFRDM-KL26ZFRDM-KL46ZTWR-K60D100MTWR-K21D50MTWR-K24F120MTWR-KL82Z72M, FRDM-KL82ZTWR-KM34Z75MRelease 3 Release 3 20162016年5 5月底Kinetis W系列Release 4 2016Release 4 2016年6 6月底Kinetis V系列EXTERNAL USE13KSDK V2 下載下載E

16、XTERNAL USE14Kinetis Expert Kinetis Expert 在線工具平臺介紹KSDK v2通過Kinetis Expert 在線工具平臺中的SDK Builder進(jìn)行構(gòu)建和下載僅包含所需要的MCU或指定開發(fā)板的內(nèi)容,不再提供單一的包形式來支持所有Kinetis家族產(chǎn)品可選擇僅包含指定的開發(fā)環(huán)境(IAR, MDK, KDS, GCC, TrueSTUDIO)下的示例代碼可選擇僅包含指定的實時操作系統(tǒng)(FreeRTOS, uC/OS-II, uC/OS-III)的源碼, 移植與范例KSDK v1.3同樣可以通過SDK Builder進(jìn)行構(gòu)建和下載。SDK v2通過Kine

17、tis Expert的SDK Builder工具進(jìn)行下載, EXTERNAL USE15使用 SDK Builder SDK Builder 入口點擊“Build an SDK”啟動SDK builder工具EXTERNAL USE16使用 SDK Builder SDK Builder 選擇型號完成登錄后, 可以根據(jù)需要用到的MCU型號或者某一款開發(fā)板來選擇所需的配置選擇以MCU型號的配置將包含支持該型號所有開發(fā)板的工程EXTERNAL USE17使用 SDK Builder SDK Builder 配置12341)選擇SDK版本2)選擇開發(fā)環(huán)境3)選擇主機操作系統(tǒng)4)選擇實時操作系統(tǒng)5)開

18、始構(gòu)建SDK包根據(jù)復(fù)雜程度和服務(wù)器的負(fù)載不同,可能需要幾分鐘時間完成5EXTERNAL USE18使用 SDK Builder SDK Builder 下載1)當(dāng)構(gòu)建完成后,在Software Vault上會出現(xiàn)一個提示圖案,點擊進(jìn)入下載頁面2)點擊 圖標(biāo)啟動下載任務(wù)當(dāng) 圖標(biāo)為灰色未激活狀態(tài)時,用戶需要進(jìn)入右上角 User Preference 下填寫完整的信息后才能繼續(xù)下載12EXTERNAL USE19使用 SDK Builder SDK Builder 新建配置如果需要下載另外一顆芯片或者另外一塊板卡對應(yīng)的SDK,則可以通過下面下拉菜單新增一個配置EXTERNAL USE20 解壓縮SD

19、K V2SDK V2包到本地目錄SDK V2以.zip的壓縮包形式下載到客戶的本地。完成下載后用戶需解壓縮后使用建議將SDK v2的壓縮包拷貝到c:/nxp目錄下,KDS和KSDK Projector Generator會首先搜索這個目錄下的文件EXTERNAL USE21KSDK V2 目錄與文件結(jié)構(gòu)目錄與文件結(jié)構(gòu)EXTERNAL USE22SDK v2SDK v2頂層目錄子目錄boards包含對應(yīng)開發(fā)板的所有例程CMSISCMSIS頭文件及DSP庫devices針對芯片的驅(qū)動源碼以和各IDE下鏈接啟動代碼docs參考文檔middleware中間件源碼rtos操作系統(tǒng)源碼tools輔助工具E

20、XTERNAL USE23boardsboards目錄下的豐富例程EXTERNAL USE24探索hello worldhello world例程目錄構(gòu)成BSPBSP文件(每個例程獨立)board.c/h板卡配置代碼clock_config.c/h時鐘初始化代碼pin_mux.c/h引腳復(fù)用代碼應(yīng)用源碼: :hello_word.cHello world應(yīng)用其他: :hello_world.bin預(yù)編譯二進(jìn)制文件readme.txt例程操作說明IAR工程文件KDS工程文件Keil MDK工程文件EXTERNAL USE25探索uartuart驅(qū)動示例工程目錄構(gòu)成示例名稱emda_transfe

21、r基于Transactional API的uart + edma組合示例interrupt基于Functional API的uart中斷示例Interrupt_ring_buffer_transfer基于Transactional API的uart環(huán)形緩沖示例Interrupt_transfer基于Transactional API的uart中斷示例polling_transfer基于Transactional API的uart查詢示例_transfer代表為基于Transactional APITransactional API的示例IAR工程文件KDS工程文件Keil MDK工程文件EXT

22、ERNAL USE26devicesdevices目錄下的驅(qū)動代碼與啟動文件針對具體器件的頭文件fsl_device_register.h全局通用的頭文件(包含下面2個文件)M64F12.hMK64 120MHz器件寄存器描述頭文件MK64F12_features.hMK64 120MHz器件特征宏描述頭文件CMSISCMSIS針對具體器件的啟動與可視化描述文件(.svd)(.svd)system_M64F12.c/hsystemInit()實現(xiàn)和聲明 (SDK v2未使用)MK64F12.svdCMSIS器件可視化描述文件ARM編譯器啟動文件與鏈接文件GCC編譯器啟動文件與鏈接文件IAR編譯

23、器啟動文件與鏈接文件所有驅(qū)動代碼包含在此目錄下EXTERNAL USE27middleware middleware 與 RTOS RTOS 源碼目錄概覽中間件dma_manager提供給應(yīng)用程序動態(tài)管理DMA資源的接口fatfs移植支持ram disk, mmc, SD(sdio or spi)和usb媒介lwipLwip源碼與移植mmcau針對M0+, M4和M7指令優(yōu)化的mmCAU加密庫sdmmc支持SD與mmc卡的驅(qū)動包裝usb全新BSD-3 License usb驅(qū)動庫源碼EXTERNAL USE28從Hello WorldHello World看SDK v2SDK v2工程文件構(gòu)成

24、僅包含當(dāng)前工程用到的驅(qū)動 代碼體積優(yōu)化的PrintfEXTERNAL USE29KSDK V2 動手實驗動手實驗EXTERNAL USE30KSDK V2 KSDK V2 實驗簡介本實驗同樣基于FRDM-K64開發(fā)板,共包含3個小實驗通過如下動手實驗,您將掌握以下基本內(nèi)容:利用Project Generator工具產(chǎn)生新的IAR工程如何使用KSDK V2的簡易functional API如何使用KSDK V2提供的高階Transactional APIEXTERNAL USE31動手實驗動手實驗 1PROJECT GENERATOR工具的使用工具的使用EXTERNAL USE32Project

25、 GeneratorProject Generator介紹Project Generator簡介Project Generator是Kinetis SDK最新的輔助工具,用來幫助用戶在SDK代碼庫中,方便地新建自己的空工程用戶可以通過快速和高級兩種方式,簡單的建立空工程支持最新的SDK V2和以前的SDK1.3版本,無縫銜接EXTERNAL USE33Project GeneratorProject Generator工具下載通過NXP官網(wǎng)KSDK的頁面,可以下載Project Generator工具:下載鏈接:http:/ USE34Project Project GeneratorGene

26、rator使用參照下圖的步驟:12選擇SDK V2代碼包的解壓縮目錄建議通過Advanced進(jìn)入高級配置EXTERNAL USE35Project Project GeneratorGenerator使用按照下圖的設(shè)置:選擇產(chǎn)生的代碼是基于開發(fā)板還是芯片選擇生成代碼的放置路徑選擇芯片型號或者開發(fā)板名稱最后點這里產(chǎn)生代碼,done!EXTERNAL USE36查看查看運行生成的代碼運行生成的代碼在剛才的路徑中,找到IAR工程并打開:打開空的工程,可以添加自己的代碼KSDK包含的API,直接調(diào)用EXTERNAL USE37瀏覽瀏覽SDK V2的的API以ADC為例,打開fsl_adc16.h/.c

27、文件,提供了大量的functional可供調(diào)用初始化:void ADC16_Init(ADC_Type *base, const adc16_config_t *config)獲取默認(rèn)配置:void ADC16_GetDefaultConfig(adc16_config_t *config);校準(zhǔn):status_t ADC16_DoAutoCalibration(ADC_Type *base);配置采樣:void ADC16_SetChannelConfig(ADC_Type *base, uint32_t channelGroup, const adc16_channel_config_t

28、*config);讀取采樣結(jié)果:static inline uint32_t ADC16_GetChannelConversionValue(ADC_Type *base, uint32_t channelGroup)優(yōu)點更簡單,用戶大多數(shù)時候可以不用關(guān)心底層的寄存器設(shè)置更靈活,每個外設(shè)的.c和.h文件各自獨立,可以直接拷貝并添加到用戶工程中更優(yōu)化,抽象級較低,沒有層層調(diào)用,代碼容量更小EXTERNAL USE38動手實驗動手實驗2簡易簡易API開發(fā)實例開發(fā)實例EXTERNAL USE39實驗簡介使用functional API開發(fā)GPIO閃燈程序使用functional API開發(fā)串口回顯程

29、序本實驗已經(jīng)提供了源代碼,可以從提供的txt文件中拷貝EXTERNAL USE40添加必要的頭文件打開實驗1生成的空工程:添加如下的Include代碼(可以從提供的txt文件中拷貝)在SDK V2中,每個模塊只對應(yīng)一個.c和.h文件,用戶需要使用哪些模塊,只需要包含對應(yīng)的.h文件,即可直接調(diào)用對應(yīng)的API,本實驗共使用了:Port: 設(shè)置管腳的pinmuxClock:設(shè)置與獲取芯片的時鐘Lptmr:定時器Gpio:GPIO操作APIUart:串口操作APIEXTERNAL USE41添加GPIOGPIO代碼在main函數(shù)中,添加如下GPIO代碼:通過FRDM-K64的原理圖,可以看到紅色LED

30、燈對應(yīng)PTB22引腳將PTB22引腳的pinmux設(shè)置為GPIO將該引腳的GPIO設(shè)置為輸出調(diào)用初始化functional API初始化GPIO輸出高低電平的示例代碼Toggle輸出的電平EXTERNAL USE42添加低功耗定時器(添加低功耗定時器(lptmr)代碼)代碼該實驗通過一個低功耗定時器來控制LED閃爍在main函數(shù)中,添加如下低功耗定時器代碼所有的外設(shè)模塊functional API,都需要定義一個簡單的配置結(jié)構(gòu)體定義lptmr配置結(jié)構(gòu)體使用一個缺省配置用缺省配置初始化lptmr開始計時設(shè)置定期,單位us,本例程為500000us使能lptmr模塊的中斷使能ARM內(nèi)核NVIC的中

31、斷,lptmr觸發(fā)NVIC產(chǎn)生中斷EXTERNAL USE43添加低功耗定時器(添加低功耗定時器(lptmr)的中斷處理函數(shù))的中斷處理函數(shù)在SDK V2中,中斷向量表定義在startup目錄下的startup_MK64F12.s文件中添加lptmr的中斷函數(shù)上一步初始化了lptmr,并且設(shè)置周期為500000us,每次計時器時間到,都會進(jìn)入lptmr的中斷在main.c中,定義中斷函數(shù),并添加如下閃燈代碼至此,便實現(xiàn)了每500000us的閃燈找到lptmr的中斷所有的中斷函數(shù)都定義在這里清除lptmr的標(biāo)志位反相紅色LED對應(yīng)的GPIOEXTERNAL USE44閃燈實驗結(jié)果查看閃燈實驗結(jié)果

32、查看至此,簡單的閃燈程序已經(jīng)完成編譯并下載程序,可以看到紅燈閃爍在IAR中通過斷點,可以看到lptmr的中斷被觸發(fā)擴展實驗嘗試修改代碼,實現(xiàn)綠燈每隔1s的閃爍添加代碼,實現(xiàn)紅綠燈交替閃爍完成后續(xù)UART實驗紅燈閃爍EXTERNAL USE45添加添加UART代碼初始化代碼初始化與lptmr一樣,uart的functional API也需要一個配置結(jié)構(gòu)體在main函數(shù)中,添加如下代碼配置結(jié)構(gòu)體定義使用默認(rèn)配置設(shè)置波特率,并使能收發(fā)獲取uart時鐘源的頻率初始化串口使能ARM內(nèi)核NVIC中斷使能uart模塊的接收寄存器滿,以及溢出中斷發(fā)送測試字符串EXTERNAL USE46添加添加UART中斷處

33、理函數(shù)中斷處理函數(shù)上面的代碼啟用了uart接收中斷,因此每次收到數(shù)據(jù),都會進(jìn)入中斷仿照lptmr的用法,在uart中斷函數(shù)中,添加回顯代碼判斷中斷的標(biāo)志位,并且確實是接收中斷讀取收到的數(shù)據(jù)將收到的數(shù)據(jù)回發(fā)EXTERNAL USE47實驗結(jié)果與總結(jié)實驗結(jié)果與總結(jié)實驗結(jié)果說明觀察開發(fā)板,可以看到紅色LED燈每隔500000us閃爍一次打開一個串口工具,調(diào)整波特率為115200,可以看到顯示測試字符串,并且回顯輸入的數(shù)據(jù)實驗總結(jié)理解SDK V2中API的調(diào)用方式掌握基本的外設(shè)使用方法(gpio,lptmr,uart)掌握如何編寫中斷處理函數(shù)擴展實驗代碼修改為綠色LED,每隔1s閃爍一次修改串口波特率

34、為19200,并回顯數(shù)據(jù)EXTERNAL USE48動手實驗動手實驗3(可選可選)高階高階TRANSACTIONAL API的使用的使用EXTERNAL USE49實驗簡介使用高階transactional API開發(fā)uart程序EXTERNAL USE50Transactional APITransactional API簡單講解和Functional API相比,高階的Transactional API抽象級別更高,能實現(xiàn)更為復(fù)雜的功能Transactional API接口簡單,使用方便,甚至中斷都無需用戶關(guān)心復(fù)雜的機制在函數(shù)內(nèi)部實現(xiàn),用戶無需關(guān)注細(xì)節(jié)SDK V2針對Transaction

35、al API都提供了callback函數(shù),可以實現(xiàn)用戶的中斷回調(diào)函數(shù)名中有Transfer的,都是Transactional API(以UART為例)functional API: void UART_WriteBlocking(UART_Type *base, const uint8_t *data, size_t length)Transactioanl API: status_t UART_TransferSendNonBlocking(UART_Type *base, uart_handle_t *handle, uart_transfer_t *xfer);EXTERNAL USE5

36、1UART模塊模塊Transactional Transactional APIAPI說明通過double weak機制,中斷直接進(jìn)入SDK提供的中斷函數(shù)中在startup_MK64F12.s文件中,定義double weak任何位置,不能定義與原中斷同名的函數(shù),以uart0收發(fā)中斷為例SDK提供回調(diào)函數(shù),用戶應(yīng)用層代碼可以寫在回調(diào)函數(shù)中原中斷函數(shù)double weak重定向的函數(shù),由SDK提供,復(fù)雜處理中斷fsl_uart.c中定義EXTERNAL USE52動手實驗(動手實驗(1)同樣在實驗1的基礎(chǔ)上,利用空工程進(jìn)行,在main函數(shù)中添加代碼添加頭文件,以及一些全局變量和宏的定義添加uar

37、t初始化代碼設(shè)置波特率初始化EXTERNAL USE53動手實驗(動手實驗(2)調(diào)用Transactional API完成數(shù)據(jù)收發(fā)創(chuàng)建handle管理收發(fā),并注冊回調(diào)函數(shù)(后文定義)判斷,如果前面的數(shù)據(jù)已經(jīng)接收完成(Rx空閑),接收發(fā)送測試數(shù)據(jù)管理狀態(tài)EXTERNAL USE54動手實驗(動手實驗(3)定義回調(diào)函數(shù)回調(diào)函數(shù)會在一個完整的數(shù)據(jù)幀(達(dá)到接收的長度)接收完成后被觸發(fā)如果沒有達(dá)到指定長度,則繼續(xù)接收回調(diào)函數(shù)中會傳遞SDK代碼管理的一些狀態(tài)變量判斷當(dāng)前接收空閑(說明整幀傳輸完成)管理狀態(tài)收到的數(shù)據(jù)放入發(fā)送buffer回顯EXTERNAL USE55實驗結(jié)果與總結(jié)實驗結(jié)果與總結(jié)實驗結(jié)果說明

38、打開一個串口工具,調(diào)整波特率為115200,輸入10個字符,可以看到回顯,如不夠10個完整幀,會持續(xù)等待接收實驗總結(jié)再次熟悉理解SDK V2中API的調(diào)用方式理解Transactional API的使用,與回調(diào)函數(shù)的用法熟悉double weak的中斷機制EXTERNAL USE56FreeRTOS實時實時操作系統(tǒng)簡介操作系統(tǒng)簡介EXTERNAL USE57FreeRTOS FreeRTOS 簡介FreeRTOS是一個可移植的、開源的小型實時操作系統(tǒng)。FreeRTOS可以免費進(jìn)行商業(yè)應(yīng)用,被廣泛應(yīng)用在嵌入式產(chǎn)品中。FreeRTOS支持多種處理器架構(gòu)。FreeRTOS的主要特點如下:完全免費,商

39、業(yè)使用沒有限制優(yōu)先級調(diào)度、相同優(yōu)先級任務(wù)的輪轉(zhuǎn)調(diào)度。同時可以設(shè)置可剝奪內(nèi)核或不可剝奪內(nèi)核支持上下文切換,沒有任務(wù)數(shù)目限制強大的執(zhí)行跟蹤功能,堆棧溢出檢測消息隊列, 二進(jìn)制信號量,計數(shù)信號量,互斥量時間管理內(nèi)存管理EXTERNAL USE58FreeRTOS FreeRTOS 移植port.c和portasm.s 包含了所有實際硬件相關(guān)的代碼 portmacro.h文件聲明了所有硬件特定功能使用 IAR編譯器 ,ARM Cortex-M4F芯片KSDK V2已經(jīng)提供了FreeRTOS的移植代碼EXTERNAL USE59FreeRTOS FreeRTOS 全局配置文件 全局配置文件FreeRTO

40、SConfig.hEXTERNAL USE60FreeRTOS FreeRTOS 創(chuàng)建任務(wù) portBASE_TYPE xTaskCreate ( pdTASK_CODE pvTaskCode, /*指向任務(wù)的實現(xiàn)函數(shù)的指針。效果上僅僅是函數(shù)名*/const portCHAR * const pcNane, /*具有描述性的任務(wù)名*/unsigned portSHORT usStackDepth, /*指定任務(wù)堆棧的大小*/void *pvParameters, /*指針用于作為一個參數(shù)傳向創(chuàng)建的任務(wù)*/unsigned portBASE_TYPE uxPriority, /*任務(wù)運行時的優(yōu)先級*/xTaskHandle *pvCreatedTask /*用于傳遞任務(wù)的句柄,可以引用從而對任務(wù)進(jìn)行其他操作*/)應(yīng)用實例:EXTERNAL USE61FreeRTOS FreeRTOS 任務(wù)控制APIAPI函數(shù) 任務(wù)相關(guān)APIAPI函數(shù)xTaskCreate創(chuàng)建任務(wù)vTaskDelete刪除自己或其它任務(wù)vTaskDelay任務(wù)延時函數(shù),任務(wù)主動放棄CPU延時一段時間vTaskDelayUntil任務(wù)延遲到指定時間, 這個和

溫馨提示

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

評論

0/150

提交評論