MSP430系列單片機C語言程序設計與開發(fā)MSP430系列是一個具有明顯技術特色的單片機品種。關于它的硬件特性及匯編語言程序設計已在《MSP430系列超低功耗16位單片機的原理與應用》及《MSP430系列 FLASH型超低功耗16位單片機》等書中作了全面介紹。《MSP430系列單片機C語言程序設計與開發(fā)》介紹IAR公司為MSP430系列單片機配備的C程序設計語言C430。書中敘述了C語言的基本概念、C430的擴展特性及C庫函數(shù);對C430的集成開發(fā)環(huán)境的使用及出錯信息作了詳盡的說明;并以MSP430F149為例,對各種應用問題及外圍模塊操作提供了典型的C程序例程,供讀者在今后的C430程序設計中參考。 《MSP430系列單片機C語言程序設計與開發(fā)》可以作為高等院校計算機、自動化及電子技術類專業(yè)的教學參考書,也可作為工程技術人員設計開發(fā)時的技術資料。MSP430系列超低功耗16位單片機的原理與應用目錄MSP430系列單片機C語言程序設計與開發(fā) 目錄 第1章 C語言基本知識1.1 標識符與關鍵字11.1.1 標識符11.1.2 關鍵字11.2 數(shù)據(jù)基本類型21.2.1 整型數(shù)據(jù)21.2.2 實型數(shù)據(jù)31.2.3 字符型數(shù)據(jù)41.2.4 各種數(shù)據(jù)轉換關系61.3 C語言的運算符71.3.1 算術運算符71.3.2 關系運算符和邏輯運算符71.3.3 賦值運算符81.3.4 逗號運算符81.3.5 ? 與 :運算符81.3.6 強制轉換運算符91.3.7 各種運算符優(yōu)先級列表91.4 程序設計的三種基本結構101.4.1 語句的概念101.4.2 順序結構111.4.3 選擇結構121.4.4 循環(huán)結構141.5 函數(shù)181.5.1 函數(shù)定義181.5.2 局部變量與全局變量191.5.3 形式參數(shù)與實際參數(shù)201.5.4 函數(shù)調用方式201.5.5 函數(shù)嵌套調用211.5.6 變量的存儲類別221.5.7 內部函數(shù)和外部函數(shù)231.6 數(shù)組231.6.1 一維數(shù)組241.6.2 多維數(shù)組241.6.3 字符數(shù)組261.7 指針271.7.1 指針與地址的概念271.7.2 指針變量的定義281.7.3 指針變量的引用281.7.4 數(shù)組的指針281.7.5 函數(shù)的指針301.7.6 指針數(shù)組311.8 結構和聯(lián)合321.8.1 結構定義321.8.2 結構類型變量的定義331.8.3 結構類型變量的初始化341.8.4 結構類型變量的引用341.8.5 聯(lián)合341.9 枚舉361.9.1 枚舉的定義361.9.2 枚舉元素的值371.9. 3 枚舉變量的使用371.10 類型定義381.10.1 類型定義的形式381.10.2 類型定義的使用381.11 位運算391.11.1 位運算符391.11.2 位域401.12 預處理功能411.12.1 簡單宏定義和帶參數(shù)宏定義411.12.2 文件包含431.12.3 條件編譯命令44第2章 C430--MSP430系列的C語言2.1 MSP430系列的C語言452.1.1 C430概述452.1.2 C430程序設計工作流程462.1.3 開始462.1.4 C430程序生成472.2 C430的數(shù)據(jù)表達482.2.1 數(shù)據(jù)類型482.2.2 編碼效率502.3 C430的配置512.3.1 引言512.3. 2 存儲器分配522.3.3 堆棧體積522.3.4 輸入輸出522.3.5 寄存器的訪問542.3.6 堆體積542.3.7 初始化54第3章 C430的開發(fā)調試環(huán)境3.1 引言563.1.1 Workbench特性563.1.2 Workbench的內嵌編輯器特性563.1.3 C編譯器特性573.1. 4 匯編器特性573.1.5 連接器特性583.1.6 庫管理器特性583.1.7 C?SPY調試器特性593.2 Workbench概述593.2.1 項目管理模式593.2.2 選項設置603.2.3 建立項目603.2.4 測試代碼613.2.5 樣本應用程序613.3 Workbench的操作623.3.1 開始633.3.2 編譯項目683.3.3 連接項目693.3.4 調試項目713.3.5 使用Make命令733.4 Workbench的功能匯總753.4.1 Workbench的窗口753.4.2 Workbench的菜單功能813.5 Workbench的內嵌編輯器993.5.1 內嵌編輯器操作993.5.2 編輯鍵說明993.6 C?SPY概述1013.6.1 C?SPY的C語言級和匯編語言級調試1013.6.2 程序的執(zhí)行1023.7 C?SPY的操作1033.7.1 程序生成1033.7.2 編譯與連接1033.7.3 C?SPY運行1033.7.4 C語言級調試1043.7.5 匯編級調試1113.8 C?SPY的功能匯總1133.8.1 C?SPY的窗口1133.8.2 C?SPY的菜單命令功能1203.9 C?SPY的表達式與宏1323.9.1 匯編語言表達式1323.9.2 C語言表達式1333.9.3 C?SPY宏1353.9.4 C?SPY的設置宏1373.9.5 C?SPY的系統(tǒng)宏137 第4章 C430程序設計實例4.1 程序設計與調試環(huán)境1434.1.1 程序設計調試集成環(huán)境1434.1.2 設備連接1444.1.3 ProF149實驗系統(tǒng)1444.2 數(shù)值計算1454.2.1 C語言表達式1454.2.2 利用MPY實現(xiàn)運算1464.3 循環(huán)結構1474.4 選擇結構1484.5 SFR訪問1494.6 RAM訪問1504.7 FLASH訪問1514.8 WDT操作1534.8. 1 WDT使程序自動復位1534.8.2 程序對WATCHDOG計數(shù)溢出的控制1544.8.3 WDT的定時器功能1554.9 Timer操作1554.9.1 用Timer產(chǎn)生時鐘信號1554.9.2 用Timer檢測脈沖寬度1564.10 UART操作1574.10.1 點對點通信1574.10.2 點對多點通信1604.11 SPI操作1634.12 比較器操作1654.13 ADC12操作1674.13.1 單通道單次轉換1674.13.2 序列通道多次轉換1684.14 時鐘模塊操作1704.15 中斷服務程序1714.16 省電工作模式1754.17 調用匯編語言子程序1764.17.1 程序舉例1764.17.2 生成C程序調用的匯編子程序177第5章 C430的擴展特性5.1 C430的語言擴展概述1785.1.1 擴展關鍵字1785.1.2 #pragma編譯命令1785.1.3 預定義符號1795.1.4 本征函數(shù)1795.1.5 其他擴展特性1795.2 C430的關鍵字擴展1795.2.1 interrupt1805.2.2 monitor1805.2.3 no_init1815.2.4 sfrb1815.2.5 sfrw1825.3 C430的 #pragma編譯命令1825.3.1 bitfields=default1825.3.2 bitfields=reversed1825.3.3 codeseg1835.3.4 function=default1835.3.5 function=interrupt1845.3.6 function=monitor1845.3.7 language=default1845.3.8 language=extended1845.3.9 memory=constseg1855.3.10 memory=dataseg1855.3.11 memory=default1855.3.12 memory=no_init1865.3.13 warnings=default1865.3.14 warnings=off1865.3.15 warnings=on1865.4 C430的預定義符號1865.4.1 DATE1875.4.2 FILE1875.4.3 IAR_SYSTEMS_ICC1875.4.4 LINE1875.4.5 STDC1875.4.6 TID1875.4.7 TIME1885.4.8 VER1885.5 C430的本征函數(shù)1885.5.1 _args$1885.5.2 _argt$1895.5.3 _BIC_SR1895.5.4 _BIS_SR1905.5.5 _DINT1905.5.6 _EINT1905.5.7 _NOP1905.5.8 _OPC1905.6 C430的匯編語言接口1915.6.1 創(chuàng)建匯編子程序框架1915.6.2 調用規(guī)則1915.6.3 C程序調用匯編子程序1935.7 C430的段定義1935.7.1 存儲器分布與段定義1945.7.2 CCSTR段1945.7.3 CDATA0段1945.7.4 CODE段1955.7.5 CONST1955.7.6 CSTACK1955.7.7 CSTR1955.7.8 ECSTR1955.7.9 IDATA01965.7.10 INTVEC1965.7.11 NO_INIT1965.7.12 UDATA0196第6章 C430的庫函數(shù)6.1 引言1976.1.1 庫模塊文件1976.1.2 頭文件1976.1.3 庫定義匯總1976.2C 庫函數(shù)參考2046.2.1 C庫函數(shù)的說明格式2046.2.2 C庫函數(shù)說明204第7章 C430編譯器的診斷消息7.1 編譯診斷消息的類型2307.2 編譯出錯消息2317.3 編譯警告消息243附錄 AMSP430系列FLASH型芯片資料248附錄 BProF149實驗系統(tǒng)251附錄 CMSP430x14x.H文件253附錄 DIAR MSP430 C語言產(chǎn)品介紹275
上傳時間: 2014-05-05
上傳用戶:253189838
EZ-USB FX系列單片機USB外圍設備設計與應用:PART 1 USB的基本概念第1章 USB的基本特性1.1 USB簡介21.2 USB的發(fā)展歷程31.2.1 USB 1.131.2.2 USB 2.041.2.3 USB與IEEE 1394的比較41.3 USB基本架構與總線架構61.4 USB的總線結構81.5 USB數(shù)據(jù)流的模式與管線的概念91.6 USB硬件規(guī)范101.6.1 USB的硬件特性111.6.2 USB接口的電氣特性121.6.3USB的電源管理141.7 USB的編碼方式141.8 結論161.9 問題與討論16第2章 USB通信協(xié)議2.1 USB通信協(xié)議172.2 USB封包中的數(shù)據(jù)域類型182.2.1 數(shù)據(jù)域位的格式182.3 封包格式192.4 USB傳輸?shù)念愋?32.4.1 控制傳輸242.4.2 中斷傳輸292.4.3 批量傳輸292.4.4 等時傳輸292.5 USB數(shù)據(jù)交換格式302.6 USB描述符342.7 USB設備請求422.8 USB設備群組442.9 結論462.10 問題與討論46第3章 設備列舉3.1注冊表編輯器473.2設備列舉的步驟493.3設備列舉步驟的實現(xiàn)--使用CATC分析工具513.4結論613.5問題與討論61第4章 USB芯片與EZUSB4.1USB芯片的簡介624.2USB接口芯片644.2.1Philips接口芯片644.2.2National Semiconductor接口芯片664.3內含USB單元的微處理器684.3.1Motorola694.3.2Microchip694.3.3SIEMENS704.3.4Cypress714.4USB芯片總攬介紹734.5USB芯片的選擇與評估744.6問題與討論80第5章 設備與驅動程序5.1階層式的驅動程序815.2主機的驅動程序835.3驅動程序的選擇865.4結論865.5問題與討論87第6章 HID群組6.1HID簡介886.2HID群組的傳輸速率886.3HID描述符906.3.1報告描述符936.3.2主要 main 項目類型966.3.3整體 global 項目卷標976.3.4區(qū)域 local 項目卷標986.3.5簡易的報告描述符996.3.6Descriptor Tool 描述符工具 1006.3.7兼容測試程序1016.4HID設備的基本請求1026.5Windows通信程序1036.6問題與討論106PART 2 硬件技術篇第7章 EZUSB FX簡介7.1簡介1097.2EZUSB FX硬件框圖1097.3封包與PID碼1117.4主機是個主控者1137.4.1從主機接收數(shù)據(jù)1137.4.2傳送數(shù)據(jù)至主機1137.5USB方向1137.6幀1147.7EZUSB FX傳輸類型1147.7.1批量傳輸1147.7.2中斷傳輸1147.7.3等時傳輸1157.7.4控制傳輸1157.8設備列舉1167.9USB核心1167.10EZUSB FX單片機1177.11重新設備列舉1177.12EZUSB FX端點1187.12.1EZUSB FX批量端點1187.12.2EZUSB FX控制端點01187.12.3EZUSB FX中斷端點1197.12.4EZUSB FX等時端點1197.13快速傳送模式1197.14中斷1207.15重置與電源管理1207.16EZUSB 2100系列1207.17FX系列--從FIFO1227.18FX系列--GPIF 通用型可程序化的接口 1227.19AN2122/26各種特性的摘要1227.20修訂ID1237.21引腳描述123第8章 EZUSB FX CPU8.1簡介1308.28051增強模式1308.3EZUSB FX所增強的部分1318.4EZUSB FX寄存器接口1318.5EZUSB FX內部RAM1318.6I/O端口1328.7中斷1328.8電源控制1338.9特殊功能寄存器 SFR 1348.10內部總線1358.11重置136第9章 EZUSB FX內存9.1簡介1379.28051內存1389.3擴充的EZUSB FX內存1399.4CS#與OE#信號1409.5EZUSB FX ROM版本141第10章 EZUSB FX輸入/輸出端口10.1簡介14310.2I/O端口14310.3EZUSB輸入/輸出端口寄存器14610.3.1端口配置寄存器14710.3.2I/O端口寄存器14710.4EZUSB FX輸入/輸出端口寄存器14910.5EZUSB FX端口配置表15110.6I2C控制器15610.78051 I2C控制器15610.8控制位15810.8.1START位15810.8.2STOP位15810.8.3LASTRD位15810.9狀態(tài)位15910.9.1DONE位15910.9.2ACK位15910.9.3BERR位15910.9.4ID1, ID015910.10送出 WRITE I2C數(shù)據(jù)16010.11接收 READ I2C數(shù)據(jù)16010.12I2C激活加載器16010.13SFR尋址 FX 16210.14端口A~E的SFR控制165第11章 EZUSB FX設備列舉與重新設備列舉11.1簡介16711.2預設的USB設備16911.3USB核心對于EP0設備請求的響應17011.4固件下載17111.5設備列舉模式17211.6沒有存在EEPROM17311.7存在著EEPROM, 第一個字節(jié)是0xB0 0xB4, FX系列11.8存在著EEPROM, 第一個字節(jié)是0xB2 0xB6, FX系列11.9配置字節(jié)0,FX系列17711.10重新設備列舉 ReNumerationTM 17811.11多重重新設備列舉 ReNumerationTM 17911.12預設描述符179第12章 EZUSB FX批量傳輸12.1簡介18812.2批量輸入傳輸18912.3中斷傳輸19112.4EZUSB FX批量IN的例子19112.5批量OUT傳輸19212.6端點對19412.7IN端點對的狀態(tài)19412.8OUT端點對的狀態(tài)19512.9使用批量緩沖區(qū)內存19512.10Data Toggle控制19612.11輪詢的批量傳輸?shù)姆独?9712.12設備列舉說明19912.13批量端點中斷19912.14中斷批量傳輸?shù)姆独?0112.15設備列舉說明20512.16自動指針器205第13章 EZUSB控制端點013.1簡介20913.2控制端點EP021013.3USB請求21213.3.1取得狀態(tài) Get_Status 21413.3.2設置特性(Set_Feature)21713.3.3清除特性(Clear_Feature)21813.3.4取得描述符(Get_Descriptor)21913.3.5設置描述符(Set Descriptor)22313.3.6設置配置(Set_Configuration)22513.3.7取得配置(Get_Configuration)22513.3.8設置接口(Set_Interface)22513.3.9取得接口(Get_Interface)22613.3.10設置地址(Set_Address)22713.3.11同步幀22713.3.12固件加載228第14章 EZUSB FX等時傳輸14.1簡介22914.2等時IN傳輸23014.2.1初始化設置23014.2.2IN數(shù)據(jù)傳輸23014.3等時OUT傳輸23114.3.1初始化設置23114.3.2數(shù)據(jù)傳輸23214.4設置等時FIFO的大小23214.5等時傳輸速度23414.5.1EZUSB 2100系列23414.5.2EZUSB FX系列23514.6快速傳輸 僅存于2100系列 23614.6.1快速寫入23614.6.2快速讀取23714.7快速傳輸?shù)臅r序 僅存于2100系列 23714.7.1快速寫入波形23814.7.2快速讀取波形23914.8快速傳輸速度(僅存于2100系列)23914.9其余的等時寄存器24014.9.1除能等時寄存器24014.9.20字節(jié)計數(shù)位24114.10以無數(shù)據(jù)來響應等時IN令牌24214.11使用等時FIFO242第15章 EZUSB FX中斷15.1簡介24315.2USB核心中斷24415.3喚醒中斷24415.4USB中斷信號源24515.5SUTOK與SUDAV中斷24815.6SOF中斷24915.7中止 suspend 中斷24915.8USB重置中斷24915.9批量端點中斷25015.10USB自動向量25015.11USB自動向量譯碼25115.12I2C中斷25215.13IN批量NAK中斷 僅存于AN2122/26與FX系列 25315.14I2C STOP反相中斷 僅存于AN2122/26與FX系列 25415.15從FIFO中斷 INT4 255第16章 EZUSB FX重置16.1簡介25716.2EZUSB FX打開電源重置 POR 25716.38051重置的釋放25916.3.1RAM的下載26016.3.2下載EEPROM26016.3.3外部ROM26016.48051重置所產(chǎn)生的影響26016.5USB總線重置26116.6EZUSB脫離26216.7各種重置狀態(tài)的總結263第17章 EZUSB FX電源管理17.1簡介26517.2中止 suspend 26617.3回復 resume 26717.4遠程喚醒 remote wakeup 269第18章 EZUSB FX系統(tǒng)18.1簡介27118.2DMA寄存器描述27218.2.1來源. 目的. 傳輸長度地址寄存器27218.2.2DMA起始與狀態(tài)寄存器27518.2.3DMA同步突發(fā)使能寄存器27518.2.4虛擬寄存器27818.3RD/FRD與WR/FWR DMA閃控的選擇27818.4DMA閃控波形與延伸位的交互影響27918.4.1DMA外部寫入27918.4.2DMA外部讀取280第19章 EZUSB FX寄存器19.1簡介28219.2批量數(shù)據(jù)緩沖區(qū)寄存器28319.3等時數(shù)據(jù)FIFO寄存器28419.4等時字節(jié)計數(shù)寄存器28519.5CPU寄存器28719.6I/O端口配置寄存器28819.7I/O端口A~C輸入/輸出寄存器28919.8230 Kbaud UART操作--AN2122/26寄存器29119.9等時控制/狀態(tài)寄存器29119.10I2C寄存器29219.11中斷29419.12端點0控制與狀態(tài)寄存器29919.13端點1~7的控制與狀態(tài)寄存器30019.14整體USB寄存器30519.15快速傳輸30919.16SETUP數(shù)據(jù)31119.17等時FIFO的容量大小31119.18通用I/F中斷使能31219.19通用中斷請求31219.20輸入/輸出端口寄存器D與E31319.20.1端口D輸出31319.20.2輸入端口D腳位31319.20.3端口D輸出使能31319.20.4端口E輸出31319.20.5輸入端口E腳位31419.20.6端口E輸出使能31419.21端口設置31419.22接口配置31419.23端口A與端口C切換配置31619.23.1端口A切換配置#231619.23.2端口C切換配置#231719.24DMA寄存器31919.24.1來源. 目的. 傳輸長度地址寄存器31919.24.2DMA起始與狀態(tài)寄存器32019.24.3DMA同步突發(fā)使能寄存器32019.24.4選擇8051 A/D總線作為外部FIFO321PART 3 固件技術篇第20章 EZUSB FX固件架構與函數(shù)庫20.1固件架構總覽32320.2固件架構的建立32520.3固件架構的副函數(shù)鉤子32520.3.1工作分配器32620.3.2設備請求 device request 32620.3.3USB中斷服務例程32920.4固件架構整體變量33220.5描述符表33320.5.1設備描述符33320.5.2配置描述符33420.5.3接口描述符33420.5.4端點描述符33520.5.5字符串描述符33520.5.6群組描述符33520.6EZUSB FX固件的函數(shù)庫33620.6.1包含文件 *.H 33620.6.2子程序33620.6.3整體變量33820.7固件架構的原始程序代碼338第21章 EZUSB FX固件范例程序21.1范例程序的簡介34621.2外圍I/O測試程序34721.3端點對, EP_PAIR范例35221.4批量測試, BulkTest范例36221.5等時傳輸, ISOstrm范例36821.6問題與討論373PART 4 實驗篇第22章 EZUSB FX仿真器22?1簡介37522?2所需的工具37622?3EZUSB FX框圖37722.4EZUSB最終版本的系統(tǒng)框圖37822?5第一次下載程序37822.6EZUSB FX開發(fā)系統(tǒng)框圖37922.7設置開發(fā)環(huán)境38022.8EZUSB FX開發(fā)工具組的內容38122.9EZUSB FX開發(fā)工具組軟件38222.9.1初步安裝程序38222.9.2確認主機 個人計算機 是否支持USB38222.10安裝EZUSB控制平臺. 驅動程序以及文件38322.11EZUSB FX開發(fā)電路板38522.11.1簡介38522.11.2開發(fā)電路板的瀏覽38522.11.3所使用的8051資源38622.11.4詳細電路38622.11.5LED的顯示38722.11.6Jumper38722.11.7連接器39122.11.8內存映象圖39222.11.9PLD信號39422.11.10PLD源文件文件39522.11.11雛形板的擴充連接器P1~P639722.11.12Philips PCF8574 I/O擴充IC40022.12DMA USB FX I/O LAB開發(fā)工具介紹40122.12.1USBFX簡介40122.12.2USBFX及外圍整體環(huán)境介紹40322?12?3USBFX與PC連接軟件介紹40422.12.4USBFX硬件功能介紹404第23章 LED顯示器輸出實驗23.1硬件設計與基本概念40923.2固件設計41023.3.1固件架構文件FW.C41123.3.2描述符文件DESCR.A5141223.3.3外圍接口文件PERIPH.C41723.4固件程序代碼的編譯與鏈接42123.5Windows程序, VB設計42323.6INF文件的編寫設計42423.7結論42623.8問題與討論427第24章 七段顯示器與鍵盤的輸入/輸出實驗24.1硬件設計與基本概念42824.2固件設計43124.2.1七段顯示器43124.2.24×4鍵盤掃描43324.3固件程序代碼的編譯與鏈接43424.4Windows程序, VB設計43624.5問題與討論437第25章 LCD文字型液晶顯示器輸出實驗25.1硬件設計與基本概念43825.1.1液晶顯示器LCD43825.2固件設計45225.3固件程序代碼的編譯與鏈接45625.4Windows程序, VB設計45725.5問題與討論458第26章 LED點陣輸出實驗26.1硬件設計與基本概念45926.2固件設計46326.3固件程序代碼的編譯與鏈接46326.4Windows程序, VB設計46526.5問題與討論465第27章 步進電機輸出實驗27.1硬件設計與基本概念46627.1.11相激磁46727.1.22相激磁46727.1.31-2相激磁46827?1?4PMM8713介紹46927.2固件設計47327.3固件程序代碼的編譯與鏈接47427.4Windows程序, VB設計47627.5問題與討論477第28章 I2C接口輸入/輸出實驗28.1硬件設計與基本概念47828.2固件設計48128.3固件程序代碼的編譯與鏈接48328.4Windows程序, VB設計48428.5問題與討論485第29章 A/D轉換器與D/A轉換器的輸入/輸出實驗29.1硬件設計與基本概念48629.1.1A/D轉換器48629.1.2D/A轉換器49029.2固件設計49329.2.1A/D轉換器的固件設計49329.2.2D/A轉換器的固件設計49629.3固件程序代碼的編譯與鏈接49729.4Windows程序, VB設計49829.5問題與討論499第30章 LCG繪圖型液晶顯示器輸出實驗30.1硬件設計與基本概念50030.1.1繪圖型LCD50030.1.2繪圖型LCD控制指令集50330.1.3繪圖型LCD讀取與寫入時序圖50530.2固件設計50630.2.1LCG驅動程序50630.2.2USB固件碼51330.3固件程序代碼的編譯與鏈接51630.4Windows程序, VB設計51730.5問題與討論518附錄A Cypress控制平臺的操作A.1EZUSB控制平臺總覽519A.2主畫面520A.3熱插拔新的USB設備521A.4各種工具欄的使用524A.5故障排除526A.6控制平臺的進階操作527A.7測試Unary Op工具欄上的按鈕功能528A.8測試制造商請求的工具欄 2100 系列的開發(fā)電路板 529A.9測試等時傳輸工具欄532A.10測試批量傳輸工具欄533A.11測試重置管線工具欄535A.12測試設置接口工具欄537A.13測試制造商請求工具欄 FX系列開發(fā)電路板A.14執(zhí)行Get Device Descriptor 操作來驗證開發(fā)板的功能是否正確539A.15從EZUSB控制平臺中, 加載dev_io的范例并且加以執(zhí)行540A.16從Keil偵錯應用程序中, 加載dev_io范例程序代碼, 然后再加以執(zhí)行542A.17將dev_io 目標文件移開, 且使用Keil IDE 集成開發(fā)環(huán)境 來重建545A.18在偵錯器下執(zhí)行dev_io目標文件, 并且使用具有偵錯能力的IDE547A.19在EZUSB控制平臺下, 執(zhí)行ep_pair目標文件A.20如何修改fw范例, 并在開發(fā)電路板上產(chǎn)生等時傳輸550附錄BEZUSB 2100系列及EZUSB FX系列引腳表B.1EZUSB 2100系列引腳表555B?2EZUSB FX系列引腳圖表561附錄C EZUSB FX寄存器總覽附錄D EEPROM燒錄方式
上傳時間: 2013-11-21
上傳用戶:努力努力再努力
SPMC75低功耗操作:本應用例介紹如何設置使SPMC75F2413A進入節(jié)電模式。1.2 模式簡介SPMC75F2413A有標準模式和兩種節(jié)電模式(等待模式和就緒模式),相應功能如下: 標準模式(Normal)芯片在標準模式下運行耗電最大,所有的外設都可用。 等待模式(Wait)等待模式下,只有CPU掉電停止工作以降低功耗。其它外設保持著先前的狀態(tài)并且功能可用。一旦喚醒,CPU將繼續(xù)工作,執(zhí)行接下去的指令。 就緒模式(Standby)就緒模式下所有的模塊都變?yōu)闊o效,此時功耗達到最小。喚醒后,CPU復位并回到標準運行模式。其它外設可以通過軟件分別設置關閉。就緒模式下所有功能都會關閉,只有系統(tǒng)時鐘仍在工作。如果按鍵喚醒功能為有效,這兩種模式都可以通過按鍵喚醒。具體喚醒源的分類及喚醒功能的介紹請參考《SPMC75F2413A編程指南》。【注意】如果MCP定時器3或定時器4已經(jīng)處于PWM輸出模式時,芯片不會進入等待或就緒模式。同樣在仿真模式下也無法進入等待或就緒模式。
上傳時間: 2013-11-20
上傳用戶:ming52900
時鐘和低功耗模式片內集成有PLL(鎖相環(huán))電路。外接的基準晶體+PLL(鎖相環(huán))電路共同組成系統(tǒng)時鐘電路。有關引腳:XTAL1/CLKIN:外接的基準晶體到片內振蕩器輸入引腳;如使用外部振蕩器,外部振蕩器的輸出必須接該腳。XTAL2:片內PLL振蕩器輸出引腳;CLKOUT/IOPE0:該腳可作為時鐘輸出或通用IO腳;可用來輸出CPU時鐘或看門狗定時器時鐘;由系統(tǒng)控制狀態(tài)寄存器(SCSR1)中的位14決定。
上傳時間: 2013-10-24
上傳用戶:1159797854
《現(xiàn)代微機原理與接口技術》實驗指導書 TPC-H實驗臺C語言版 1.實驗臺結構1)I / O 地址譯碼電路如上圖1所示地址空間280H~2BFH共分8條譯碼輸出線:Y0~Y7 其地址分別是280H~287H、288H~28FH、290H~297H、298H~29FH、2A0H~2A7H、2A8H~2AFH、2B0H~2B7H、2B8H~2BFH,8根譯碼輸出線在實驗臺I/O地址處分別由自鎖緊插孔引出供實驗選用(見圖2)。 2) 總線插孔采用“自鎖緊”插座在標有“總線”區(qū)引出數(shù)據(jù)總線D7~D0;地址總線A9~A0,讀、寫信號IOR、IOW;中斷請求信號IRQ ;DMA請求信號DRQ1;DMA響應信號DACK1 及AEN信號,供學生搭試各種接口實驗電路使用。3) 時鐘電路如圖-3所示可以輸出1MHZ 2MHZ兩種信號供A/D轉換器定時器/計數(shù)器串行接口實驗使用。圖34) 邏輯電平開關電路如圖-4所示實驗臺右下方設有8個開關K7~K0,開關撥到“1”位置時開關斷開,輸出高電平。向下打到“0”位置時開關接通,輸出低電平。電路中串接了保護電阻使接口電路不直接同+5V 、GND相連,可有效地防止因誤操作誤編程損壞集成電路現(xiàn)象。圖 4 圖 55) L E D 顯示電路如圖-5所示實驗臺上設有8個發(fā)光二極管及相關驅動電路(輸入端L7~L0),當輸入信號為“1” 時發(fā)光,為“0”時滅6) 七段數(shù)碼管顯示電路如圖-6所示實驗臺上設有兩個共陰極七段數(shù)碼管及驅動電路,段碼為同相驅動器,位碼為反相驅動器。從段碼與位碼的驅動器輸入端(段碼輸入端a、b、c、d、e、f、g、dp,位碼輸入端s1、 s2)輸入不同的代碼即可顯示不同數(shù)字或符號。
上傳時間: 2013-11-22
上傳用戶:sssnaxie
本章介紹dsPIC30F器件系列的看門狗定時器(WDT)和低功耗模式。dsPIC DSC 器件有兩種低功耗模式,可以通過執(zhí)行PWRSAV指令進入:• 休眠模式:CPU、系統(tǒng)時鐘源和任何依靠系統(tǒng)時鐘源工作的外設都被禁止。這是器件的最低功耗模式。• 空閑模式:CPU 被禁止,但是系統(tǒng)時鐘源繼續(xù)工作。外設繼續(xù)工作,但可以有選擇地禁止。WDT在使能時使用內部LPRC 時鐘源工作,而且如果WDT沒有被軟件清零,它可以通過復位器件來檢測系統(tǒng)軟件的異常情況。可以使用WDT后分頻器選擇不同的WDT超時周期。WDT也可用于將器件從休眠或空閑模式喚醒。
上傳時間: 2014-02-01
上傳用戶:金苑科技
提出了一種改進的LSM-ALSM子空間模式識別方法,將LSM的旋轉策略引入ALSM,使子空間之間互不關聯(lián)的情況得到改善,提高了ALSM對相似樣本的區(qū)分能力。討論中以性能函數(shù)代替經(jīng)驗函數(shù)來確定拒識規(guī)則的參數(shù),實現(xiàn)了識別率、誤識率與拒識率之間的最佳平衡;通過對有限字符集的實驗結果表明,LSM-ALSM算法有效地改善了分類器的識別率和可靠性。關 鍵 詞 學習子空間; 性能函數(shù); 散布矩陣; 最小描述長度在子空間模式識別方法中,一個線性子空間代表一個模式類別,該子空間由反映類別本質的一組特征矢量張成,分類器根據(jù)輸入樣本在各子空間上的投影長度將其歸為相應的類別。典型的子空間算法有以下三種[1, 2]:CLAFIC(Class-feature Information Compression)算法以相關矩陣的部分特征向量來構造子空間,實現(xiàn)了特征信息的壓縮,但對樣本的利用為一次性,不能根據(jù)分類結果進行調整和學習,對樣本信息的利用不充分;學習子空間方法(Leaning Subspace Method, LSM)通過旋轉子空間來拉大樣本所屬類別與最近鄰類別的距離,以此提高分類能力,但對樣本的訓練順序敏感,同一樣本訓練的順序不同對子空間構造的影響就不同;平均學習子空間算法(Averaged Learning Subspace Method, ALSM)是在迭代訓練過程中,用錯誤分類的樣本去調整散布矩陣,訓練結果與樣本輸入順序無關,所有樣本平均參與訓練,其不足之處是各模式的子空間之間相互獨立。針對以上問題,本文提出一種改進的子空間模式識別方法。子空間模式識別的基本原理1.1 子空間的分類規(guī)則子空間模式識別方法的每一類別由一個子空間表示,子空間分類器的基本分類規(guī)則是按矢量在各子空間上的投影長度大小,將樣本歸類到最大長度所對應的類別,在類x()iω的子空間上投影長度的平方為()211,2,,()argmax()jMTkkjpg===Σx (1)式中 函數(shù)稱為分類函數(shù);為子空間基矢量。兩類的分類情況如圖1所示。
上傳時間: 2013-12-25
上傳用戶:熊少鋒
九.輸入/輸出保護為了支持多任務,80386不僅要有效地實現(xiàn)任務隔離,而且還要有效地控制各任務的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護。 這里下載本文源代碼。 <一>輸入/輸出保護80386采用I/O特權級IPOL和I/O許可位圖的方法來控制輸入/輸出,實現(xiàn)輸入/輸出保護。 1.I/O敏感指令輸入輸出特權級(I/O Privilege Level)規(guī)定了可以執(zhí)行所有與I/O相關的指令和訪問I/O空間中所有地址的最外層特權級。IOPL的值在如下圖所示的標志寄存器中。 標 志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O許可位圖規(guī)定了I/O空間中的哪些地址可以由在任何特權級執(zhí)行的程序所訪問。I/O許可位圖在任務狀態(tài)段TSS中。 I/O敏感指令 指令 功能 保護方式下的執(zhí)行條件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 設置EFLAGS中的IF位 CPL<=IOPL IN 從I/O地址讀出數(shù)據(jù) CPL<=IOPL或I/O位圖許可 INS 從I/O地址讀出字符串 CPL<=IOPL或I/O位圖許可 OUT 向I/O地址寫數(shù)據(jù) CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱為I/O敏感指令,由于這些指令與I/O有關,并且只有在滿足所列條件時才可以執(zhí)行,所以把它們稱為I/O敏感指令。從表中可見,當前特權級不在I/O特權級外層時,可以正常執(zhí)行所列的全部I/O敏感指令;當特權級在I/O特權級外層時,執(zhí)行CLI和STI指令將引起通用保護異常,而其它四條指令是否能夠被執(zhí)行要根據(jù)訪問的I/O地址及I/O許可位圖情況而定(在下面論述),如果條件不滿足而執(zhí)行,那么將引起出錯碼為0的通用保護異常。 由于每個任務使用各自的EFLAGS值和擁有自己的TSS,所以每個任務可以有不同的IOPL,并且可以定義不同的I/O許可位圖。注意,這些I/O敏感指令在實模式下總是可執(zhí)行的。 2.I/O許可位圖如果只用IOPL限制I/O指令的執(zhí)行是很不方便的,不能滿足實際要求需要。因為這樣做會使得在特權級3執(zhí)行的應用程序要么可訪問所有I/O地址,要么不可訪問所有I/O地址。實際需要與此剛好相反,只允許任務甲的應用程序訪問部分I/O地址,只允許任務乙的應用程序訪問另一部分I/O地址,以避免任務甲和任務乙在訪問I/O地址時發(fā)生沖突,從而避免任務甲和任務乙使用使用獨享設備時發(fā)生沖突。 因此,在IOPL的基礎上又采用了I/O許可位圖。I/O許可位圖由二進制位串組成。位串中的每一位依次對應一個I/O地址,位串的第0位對應I/O地址0,位串的第n位對應I/O地址n。如果位串中的第位為0,那么對應的I/O地址m可以由在任何特權級執(zhí)行的程序訪問;否則對應的I/O地址m只能由在IOPL特權級或更內層特權級執(zhí)行的程序訪問。如果在I/O外層特權級執(zhí)行的程序訪問位串中位值為1的位所對應的I/O地址,那么將引起通用保護異常。 I/O地址空間按字節(jié)進行編址。一條I/O指令最多可涉及四個I/O地址。在需要根據(jù)I/O位圖決定是否可訪問I/O地址的情況下,當一條I/O指令涉及多個I/O地址時,只有這多個I/O地址所對應的I/O許可位圖中的位都為0時,該I/O指令才能被正常執(zhí)行,如果對應位中任一位為1,就會引起通用保護異常。 80386支持的I/O地址空間大小是64K,所以構成I/O許可位圖的二進制位串最大長度是64K個位,即位圖的有效部分最大為8K字節(jié)。一個任務實際需要使用的I/O許可位圖大小通常要遠小于這個數(shù)目。 當前任務使用的I/O許可位圖存儲在當前任務TSS中低端的64K字節(jié)內。I/O許可位圖總以字節(jié)為單位存儲,所以位串所含的位數(shù)總被認為是8的倍數(shù)。從前文中所述的TSS格式可見,TSS內偏移66H的字確定I/O許可位圖的開始偏移。由于I/O許可位圖最長可達8K字節(jié),所以開始偏移應小于56K,但必須大于等于104,因為TSS中前104字節(jié)為TSS的固定格式,用于保存任務的狀態(tài)。 1.I/O訪問許可檢查細節(jié)保護模式下處理器在執(zhí)行I/O指令時進行許可檢查的細節(jié)如下所示。 (1)若CPL<=IOPL,則直接轉步驟(8);(2)取得I/O位圖開始偏移;(3)計算I/O地址對應位所在字節(jié)在I/O許可位圖內的偏移;(4)計算位偏移以形成屏蔽碼值,即計算I/O地址對應位在字節(jié)中的第幾位;(5)把字節(jié)偏移加上位圖開始偏移,再加1,所得值與TSS界限比較,若越界,則產(chǎn)生出錯碼為0的通用保護故障;(6)若不越界,則從位圖中讀對應字節(jié)及下一個字節(jié);(7)把讀出的兩個字節(jié)與屏蔽碼進行與運算,若結果不為0表示檢查未通過,則產(chǎn)生出錯碼為0的通用保護故障;(8)進行I/O訪問。設某一任務的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;對應I/O端口00H—3FH DB 10000000B ;對應I/O端口40H—47H DB 01100000B ;對用I/O端口48H—4FH DB 8182 DUP(0ffH) ;對應I/O端口50H—0FFFFH DB 0FFH ;位圖結束字節(jié)TSSLen = $TSSSEG ENDS 再假設IOPL=1,CPL=3。那么如下I/O指令有些能正常執(zhí)行,有些會引起通用保護異常: in al,21h ;(1)正常執(zhí)行 in al,47h ;(2)引起異常 out 20h,al ;(3)正常實行 out 4eh,al ;(4)引起異常 in al,20h ;(5)正常執(zhí)行 out 20h,eax ;(6)正常執(zhí)行 out 4ch,ax ;(7)引起異常 in ax,46h ;(8)引起異常 in eax,42h ;(9)正常執(zhí)行 由上述I/O許可檢查的細節(jié)可見,不論是否必要,當進行許可位檢查時,80386總是從I/O許可位圖中讀取兩個字節(jié)。目的是為了盡快地執(zhí)行I/O許可檢查。一方面,常常要讀取I/O許可位圖的兩個字節(jié)。例如,上面的第(8)條指令要對I/O位圖中的兩個位進行檢查,其低位是某個字節(jié)的最高位,高位是下一個字節(jié)的最低位。可見即使只要檢查兩個位,也可能需要讀取兩個字節(jié)。另一方面,最多檢查四個連續(xù)的位,即最多也只需讀取兩個字節(jié)。所以每次要讀取兩個字節(jié)。這也是在判別是否越界時再加1的原因。為此,為了避免在讀取I/O許可位圖的最高字節(jié)時產(chǎn)生越界,必須在I/O許可位圖的最后填加一個全1的字節(jié),即0FFH。此全1的字節(jié)應填加在最后一個位圖字節(jié)之后,TSS界限范圍之前,即讓填加的全1字節(jié)在TSS界限之內。 I/O許可位圖開始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當TSS的界限大于I/O許可位圖開始偏移加8K時,I/O許可位圖的有效部分就有8K字節(jié),I/O許可檢查全部根據(jù)全部根據(jù)該位圖進行。當TSS的界限不大于I/O許可位圖開始偏移加8K時,I/O許可位圖有效部分就不到8K字節(jié),于是對較小I/O地址訪問的許可檢查根據(jù)位圖進行,而對較大I/O地址訪問的許可檢查總被認為不可訪問而引起通用保護故障。因為這時會發(fā)生字節(jié)越界而引起通用保護異常,所以在這種情況下,可認為不足的I/O許可位圖的高端部分全為1。利用這個特點,可大大節(jié)約TSS中I/O許可位圖占用的存儲單元,也就大大減小了TSS段的長度。 <二>重要標志保護輸入輸出的保護與存儲在標志寄存器EFLAGS中的IOPL密切相關,顯然不能允許隨便地改變IOPL,否則就不能有效地實現(xiàn)輸入輸出保護。類似地,對EFLAGS中的IF位也必須加以保護,否則CLI和STI作為敏感指令對待是無意義的。此外,EFLAGS中的VM位決定著處理器是否按虛擬8086方式工作。 80386對EFLAGS中的這三個字段的處理比較特殊,只有在較高特權級執(zhí)行的程序才能執(zhí)行IRET、POPF、CLI和STI等指令改變它們。下表列出了不同特權級下對這三個字段的處理情況。 不同特權級對標志寄存器特殊字段的處理 特權級 VM標志字段 IOPL標志字段 IF標志字段 CPL=0 可變(初POPF指令外) 可變 可變 0 不變 不變 可變 CPL>IOPL 不變 不變 不變 從表中可見,只有在特權級0執(zhí)行的程序才可以修改IOPL位及VM位;只能由相對于IOPL同級或更內層特權級執(zhí)行的程序才可以修改IF位。與CLI和STI指令不同,在特權級不滿足上述條件的情況下,當執(zhí)行POPF指令和IRET指令時,如果試圖修改這些字段中的任何一個字段,并不引起異常,但試圖要修改的字段也未被修改,也不給出任何特別的信息。此外,指令POPF總不能改變VM位,而PUSHF指令所壓入的標志中的VM位總為0。 <三>演示輸入輸出保護的實例(實例九)下面給出一個用于演示輸入輸出保護的實例。演示內容包括:I/O許可位圖的作用、I/O敏感指令引起的異常和特權指令引起的異常;使用段間調用指令CALL通過任務門調用任務,實現(xiàn)任務嵌套。 1.演示步驟實例演示的內容比較豐富,具體演示步驟如下:(1)在實模式下做必要準備后,切換到保護模式;(2)進入保護模式的臨時代碼段后,把演示任務的TSS段描述符裝入TR,并設置演示任務的堆棧;(3)進入演示代碼段,演示代碼段的特權級是0;(4)通過任務門調用測試任務1。測試任務1能夠順利進行;(5)通過任務門調用測試任務2。測試任務2演示由于違反I/O許可位圖規(guī)定而導致通用保護異常;(6)通過任務門調用測試任務3。測試任務3演示I/O敏感指令如何引起通用保護異常;(7)通過任務門調用測試任務4。測試任務4演示特權指令如何引起通用保護異常;(8)從演示代碼轉臨時代碼,準備返回實模式;(9)返回實模式,并作結束處理。
上傳時間: 2013-12-11
上傳用戶:nunnzhy
include "macrodefine.h"#include "lpc2294.h" //ADS1210初始化子程序void AD_Init(void){ Delayus(2); SPI1_Communation(0x64); SPI1_Communation(0x72); //單極性,SDOUT獨立,先MSB,REF使用內部 SPI1_Communation(0x20); //自校準模式,增益1,通道0 SPI1_Communation(0x87); //TURBO=16, SPI1_Communation(0xa0); //數(shù)據(jù)更新率100}//讀取ADS1210轉換結果子程序uint32 Read_AD_Data(void){ uint8 i=0; uint8 Data_Temp[3]; uint32 Result_HEX=0; Delayus(1); SPI1_Communation(0xc0); for(i=0;i<3;i++) { Data_Temp[i] =SPI1_Communation(0xff); }
上傳時間: 2013-10-10
上傳用戶:suicone
更新說明: 1。界面采用新的字體,不會再有那種難看的黑色粗體字,比以前的要漂亮多了。 2。加入全面的提示幫助,盡量減少普通用戶的各種疑惑。 3。修正生成文件的擴展名的一些BUG,不會總是加上FON的擴展名了。 4。修正生成字模數(shù)據(jù)的一些格式BUG,現(xiàn)在生成的C51格式字模數(shù)據(jù)基本上可以直接粘貼到源程序中使用而不需要修改了 5。加入新的字模數(shù)據(jù)格式調整項,允許用戶更自由的定制自己需要的數(shù)據(jù)格式 6。最重要的更新:全面支持保存當前設置功能,用戶設置的字模格式,主窗口狀態(tài)和字庫生成窗口選項信息均可保存,下一次打開窗口時不用重新設置(由于要全面更改程序使用的變量結構,所以這部分化了很多時間)。 7。修正了新建圖象時會自動跳到圖形模式的BUG 8。增加輸出緊湊格式數(shù)據(jù)選項,可以生成不包含空白行的字模數(shù)據(jù)。 9。完善了每行數(shù)據(jù)顯示個數(shù)的功能,可以任意設置每行顯示的數(shù)據(jù)個數(shù),并同時可以設置每行索引數(shù)據(jù)顯示個數(shù)。 10。修正了取模說明的一些錯誤,并改動了格式。 11。現(xiàn)在當用戶選擇10進制輸出時,會自動去掉生成字模數(shù)據(jù)前的“0x",或后面的“H”,選擇16進制時則會自動加上。 12。對各個窗體重新設計以全面適應最大化的需要,如果您覺得當前窗口不夠大,可以最大化使用。 13。增加生成英文點陣字庫功能,可自動生成ASCII碼從0-127的任意點陣字庫,使用方法同生成國標點陣字庫功能。 14。再次優(yōu)化代碼,去掉各種調試信息,使程序速度再快一些。 15。還有一些細微的調整我記不清了…… 需要注意的地方: 在測試的過程中我發(fā)現(xiàn)了一個問題:在WIN98或WINME下當用戶需要生成特大點陣的字模時(例如320*320,1024*768的漢字字模),此時由于數(shù)據(jù)量非常龐大,而WIN98/WINME會有64K的數(shù)據(jù)容量限制,所以在主窗口中是無法得到全部的字模數(shù)據(jù)的,這時您需要使用字庫生成功能,通過形成一個數(shù)據(jù)文件才能得到完整的字模數(shù)據(jù)。 另外生成特大字模時如果出現(xiàn)“內存不足”的提示,請把液晶仿真面板的像素點改小一些,這樣可以節(jié)省內存。
上傳時間: 2013-10-17
上傳用戶:fengzimili