嵌入式系統(tǒng)實(shí)例解析課程重點(diǎn)及考試用到的程序.pdf_第1頁
嵌入式系統(tǒng)實(shí)例解析課程重點(diǎn)及考試用到的程序.pdf_第2頁
嵌入式系統(tǒng)實(shí)例解析課程重點(diǎn)及考試用到的程序.pdf_第3頁
嵌入式系統(tǒng)實(shí)例解析課程重點(diǎn)及考試用到的程序.pdf_第4頁
嵌入式系統(tǒng)實(shí)例解析課程重點(diǎn)及考試用到的程序.pdf_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

2013 7 3 1 嵌入式系統(tǒng)的概念 目前 對(duì)嵌入式系統(tǒng)的定義多種多樣 但沒有一種 定義是全面的 下面給出兩種比較合理的定義 從技術(shù)的角度定義 以應(yīng)用為中心 以計(jì)算機(jī)技術(shù) 為基礎(chǔ) 軟件硬件可剪裁 適應(yīng)應(yīng)用系統(tǒng)對(duì)功能 可靠 性成本體積功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng) 性 成本 體積 功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng) 從系統(tǒng)的角度定義 嵌入式系統(tǒng)的設(shè)計(jì)完成復(fù)雜功 能的硬件和軟件 并使其緊密耦合在一起的計(jì)算機(jī)系統(tǒng) 術(shù)語嵌入式反映了這些系統(tǒng)通常是更大系統(tǒng)中的一個(gè)完 整的部分 稱為嵌入的系統(tǒng) 嵌入的系統(tǒng)中可以共存多 個(gè)嵌入式系統(tǒng) 1 2 嵌入式處理器 分類 嵌入式處理器可以分為以下幾類 1 嵌入式微處理器 2 嵌入式微控制器 2 嵌入式微控制器 3 嵌入式DSP處理器 4 嵌入式片上系統(tǒng) SOC 概述 3種嵌入式操作系統(tǒng) 監(jiān)操 適用于計(jì)算中心等較大 的計(jì)算機(jī)系統(tǒng) 多道批處理系統(tǒng) 監(jiān) 控 程 序 操 作 系 統(tǒng) 分時(shí)操作系統(tǒng) 實(shí)時(shí)操作系統(tǒng) 適用于多個(gè)用戶共享系 統(tǒng)資源 適用于嵌入式設(shè)備和有 實(shí)時(shí)性要求的系統(tǒng)中 時(shí)間先后 基本概念 前后臺(tái)系統(tǒng) 循環(huán)中調(diào)用相應(yīng) 的函數(shù)完成相應(yīng)的操 作這部分可以看成 中斷服務(wù)程序處理異 步事件 這部分可以 作 這部分可以看成 后臺(tái)行為 后臺(tái)也可 以叫做任務(wù)級(jí) 這種 系統(tǒng)在處理的及時(shí)性 上比實(shí)際可以做到的 要差 看成前臺(tái)行為 前臺(tái) 也叫中斷級(jí) 時(shí)間相 關(guān)性很強(qiáng)的關(guān)鍵操作 一定是靠中斷服務(wù)程 序來保證的 實(shí)時(shí)操作系統(tǒng)是一段在嵌入式系統(tǒng)啟動(dòng)后首 先執(zhí)行的背景程序 用戶的應(yīng)用程序是運(yùn)行于 RTOS之上的各個(gè)任務(wù) RTOS根據(jù)各個(gè)任務(wù)的 要求 進(jìn)行資源 包括存儲(chǔ)器 外設(shè)等 管理 消息管理任務(wù)調(diào)度異常處理等工作消息管理 任務(wù)調(diào)度 異常處理等工作 多任務(wù)系統(tǒng)中 內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù) 或 者說為每個(gè)任務(wù)分配CPU時(shí)間 并且負(fù)責(zé)任務(wù)之 間的通信 內(nèi)核提供的基本服務(wù)是任務(wù)切換 內(nèi)核提供必不可少的系統(tǒng)服務(wù) 如信號(hào)量 消息隊(duì)列 延時(shí)等 基本概念 非占先式內(nèi)核 非占先式內(nèi)核要求每個(gè)任務(wù)自我放棄CPU的所有 權(quán) 非占先式調(diào)度法也稱合作型多任務(wù) 各個(gè)任務(wù) 彼此合作共享一個(gè)CPU 異步事件還是由中斷服務(wù)彼合作共享個(gè)異步事件還是由中斷服務(wù) 來處理 中斷服務(wù)可以使一個(gè)高優(yōu)先級(jí)的任務(wù)由掛 起狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài) 但中斷服務(wù)以后控制權(quán)還 是回到原來被中斷了的那個(gè)任務(wù) 直到該任務(wù)主動(dòng) 放棄CPU的使用權(quán)時(shí) 那個(gè)高優(yōu)先級(jí)的任務(wù)才能獲 得CPU的使用權(quán) 2013 7 3 2 基本概念 占先式內(nèi)核 當(dāng)系統(tǒng)響應(yīng)時(shí)間很重要時(shí) 要使用占先式內(nèi)核 因此絕大多數(shù)商業(yè)上銷售的實(shí)時(shí)內(nèi)核都是占先式內(nèi) 核 最高優(yōu)先級(jí)的任務(wù)一旦就緒 總能得到CPU的核最高優(yōu)先級(jí)的任務(wù)就緒 總能得到的 控制權(quán) 當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先級(jí)高 的任務(wù)進(jìn)入了就緒狀態(tài) 當(dāng)前任務(wù)的CPU使用權(quán)就 被剝奪了 或者說被掛起了 那個(gè)高優(yōu)先級(jí)的任務(wù) 立刻得到了CPU的控制權(quán) 如果是中斷服務(wù)子程序 使一個(gè)高優(yōu)先級(jí)的任務(wù)進(jìn)入了就緒態(tài) 中斷完成時(shí) 中斷的任務(wù)就被掛起 優(yōu)先級(jí)高的那個(gè)任務(wù)開始運(yùn) 行 基本概念 中斷 中斷是一種硬件機(jī)制 用于通知CPU有個(gè)異步 事件發(fā)生了 中斷一旦被識(shí)別 CPU保存部分 或 全部 上下文即部分或全部寄存器的值 跳轉(zhuǎn)到專全部 下文即部分或全部寄存的值 轉(zhuǎn)到專 門的子程序 稱為中斷服務(wù)子程序 ISR 中斷服 務(wù)子程序做事件處理 處理完成后 程序回到 1 在前后臺(tái)系統(tǒng)中 程序回到后臺(tái)程序 2 對(duì)非占先式內(nèi)核而言 程序回到被中斷了的任 務(wù) 3 對(duì)占先式內(nèi)核而言 讓進(jìn)入就緒態(tài)的優(yōu)先級(jí)最 高的任務(wù)開始運(yùn)行 基本概念 中斷 基本概念 時(shí)鐘節(jié)拍 時(shí)鐘節(jié)拍是特定的周期性中斷 這個(gè)中斷可以 看作是系統(tǒng)心臟的脈動(dòng) 中斷之間的時(shí)間間隔取決 于不同應(yīng)用 一般在10ms到200ms之間 時(shí)鐘的節(jié)于同應(yīng)用 般在到間時(shí)鐘的節(jié) 拍式中斷使得內(nèi)核可以將任務(wù)延時(shí)若干個(gè)整數(shù)時(shí)鐘 節(jié)拍 以及當(dāng)任務(wù)等待事件發(fā)生時(shí) 提供等待超時(shí) 的依據(jù) 時(shí)鐘節(jié)拍率越快 系統(tǒng)的額外開銷就越大 實(shí)時(shí)操作系統(tǒng)的優(yōu)缺點(diǎn) 優(yōu)點(diǎn) 在嵌入式實(shí)時(shí)操作系統(tǒng)環(huán)境下開發(fā)實(shí)時(shí)應(yīng)用程 序 使程序的設(shè)計(jì)和擴(kuò)展變得容易 不需要大的改動(dòng) 就可以增加新的功能 通過將應(yīng)用程序分割成若干獨(dú)就可增新的能通過將應(yīng)用程序分割成若干獨(dú) 立的 而且對(duì)實(shí)任務(wù)模塊 使應(yīng)用程序的設(shè)計(jì)過程大 為簡(jiǎn)化時(shí)性要求苛刻的時(shí)間都得到了快速 可靠的處 理 通過有效的系統(tǒng)服務(wù) 嵌入式實(shí)時(shí)操作系統(tǒng)使得 系統(tǒng)資源得到更好的利用 缺點(diǎn) 但是 使用嵌入式實(shí)時(shí)操作系統(tǒng)還需要額外的 ROM RAM開銷 2 5 的CPU額外負(fù)荷 以及內(nèi)核 的費(fèi)用 概述 LPC2000系列芯片內(nèi)部均具有PLL電路 振蕩器產(chǎn) 生的時(shí)鐘Fosc通過PLL升頻 可以獲得更高的系統(tǒng)時(shí)鐘 Fcclk Fcclk 輸入范圍 10 25MHz 將FOSC提升到 10 60MHz PLL 晶體 振蕩器 VPB 分頻器 FCCLK FPCLK fOSC FOSC CPU內(nèi)核 芯片外設(shè) 2013 7 3 3 PLL的鎖定過程 CCO的輸出頻率受到 相位頻率檢測(cè) 部件的控制 輸出所需頻率的過程不是一蹴而就的 而是一個(gè)拉鋸反 復(fù)的過程 復(fù)的過程 時(shí)間 t 輸出頻率 f 預(yù)期頻率 鎖定 CCO的輸出頻率在高低 起伏一段時(shí)間后漸漸穩(wěn) 定在了預(yù)期的頻率值 輸出頻率穩(wěn)定后即 鎖定 成功 PLL頻率計(jì)算 鎖定之后這兩個(gè)頻率相等 FOSC FCCO 2 p M 相位頻率 檢測(cè) 流控 振蕩器 CCO 2P 分頻 M分頻 PLL FOSC FCCO FCCO 2 p FCCO 2 p M 1 2 3 OSCCCO 連接PLL之后 FCCLK FCCO 2 p Fcco 2 p 信號(hào)經(jīng)過 M分頻 部件 得到Fcco 2 p M 的頻率 Fcco經(jīng)過 2P分頻 部件后得到Fcco 2 p 的頻率 Fcclk為PLL最終的輸出頻率 也是處理器的時(shí)鐘頻率 Fcco為PLL電流控制振蕩器的輸出頻率 Fosc為晶體振蕩器的輸出頻率 即PLL的輸入頻率 PLL頻率計(jì)算 可以得出以下幾個(gè)等式 Fosc Fcco 2 p M Fcco Fosc 2 p M Fcclk Fcco 2 p Fcco Fcclk 2 p Fcclk Fcco 2 p Fcco Fcclk 2 p 最后得出PLL的輸出頻率 當(dāng)PLL激活并連接時(shí) 為 Fcclk M Fosc或Fcclk Fcco 2 P CCO輸出頻率為 Fcco Fcclk 2 P 或Fcco Fosc M 2 P PLL設(shè)置舉例 系統(tǒng)要求Fosc 10MHz Fcclk 60MHz 根據(jù)這些要求 1 確定Fcclk 60MHz 2 選擇Fosc 10MHz 3 計(jì)算M Fcclk Fosc 60MHz 10MHz 6 M 1 5 所以寫入PLLCFG 4 0 00101 4 計(jì)算P Fcco Fcclk 2 其中Fcco為156 320 MHz 當(dāng)Fcco 156MHz時(shí) P 156MHz 2 60MHz 1 3 當(dāng)Fcco 320MHz時(shí) P 2 67 P取整數(shù)2 所以寫入PLLCFG 6 5 01 注意 The value written to the PSEL bits in PLLCFG is 00 forP 1 01 for P 2 10 for P 4 11 for P 8 應(yīng)用示例 要求將P0 8 P0 9設(shè)置為TxD1 RxD1 通過查閱PINSE0寄存器設(shè)置表 得到P0 9和P0 8 PINSEL0 0 x05 16 的控制位為PINSEL0 19 16 當(dāng)該域設(shè)置為 0101 0 x05 時(shí)選擇 RxD1和 TxD1 為了不影響別的管腳連接設(shè)置 通常選擇下面的 設(shè)置方法 PINSEL0 PINSEL0 2013 7 3 4 使用GPIO注意要點(diǎn) 引腳設(shè)置為輸出方式時(shí) 輸出狀態(tài)由IOxSET和 IOxCLR中最后操作的寄存器決定 IOxCLR中最后操作的寄存器決定 大部分GPIO輸出為推挽方式 個(gè)別引腳為開漏輸 出 正常拉出 灌入電流均為4mA 短時(shí)間極限 值40mA 復(fù)位后默認(rèn)所有GPIO為輸入模式 define DataBus 0 xFF 使用IOxSET和IOxCLR實(shí)現(xiàn) GPIO應(yīng)用示例 輸出多位數(shù)據(jù)至IO口 在需要將多位數(shù)據(jù)同時(shí)輸出到某幾個(gè)IO口線時(shí) 通常使用 IOxSET和IOxCLR來實(shí)現(xiàn) 在某些情況下也可以使用IOxPIN寄存 器實(shí)現(xiàn) 后者可以在多個(gè)IO口上直接輸出0和1電平 本例將8位無符號(hào)整形變量Data的值輸出到P0 0 P0 7 PINSEL0 IO0DIR DataBus IO0CLR DataBus IO0SET DataBus 1 設(shè)置引腳連接模塊 P0 0 7為GPIO 2 設(shè)置P0 0口方向 設(shè)置為輸出 3 清零8位IO口的輸出狀態(tài) 4 Data變量中為1的位將輸出高電平 0 x 0 x00Data 數(shù)據(jù)輸出線 define DataBus 0 xFF GPIO應(yīng)用示例 輸出多位數(shù)據(jù)至IO口 在需要將多位數(shù)據(jù)同時(shí)輸出到某幾個(gè)IO口線時(shí) 通常使用 IOxSET和IOxCLR來實(shí)現(xiàn) 在某些情況下也可以使用IOxPIN寄存 器實(shí)現(xiàn) 后者可以在多個(gè)IO口上直接輸出0和1電平 本例將8位無符號(hào)整數(shù)變量Data的值輸出到P0 0 P0 7 使用IOxPIN實(shí)現(xiàn) PINSEL0 IO0DIR DataBus IO0PIN IO0PIN 1 設(shè)置引腳連接模塊 P0 0為GPIO 2 設(shè)置P0 0口方向 設(shè)置為輸出 3 寫IO0PIN 輸出數(shù)據(jù) 0 x Data 數(shù)據(jù)輸出線 0 x 0 x00Data 與前者對(duì)比 概述 LPC2000系列ARM具有4路外部中斷 可以設(shè)置為2種類型 邊沿觸發(fā) 邊沿觸發(fā) 上升沿觸發(fā) 下降沿觸發(fā) 電平觸發(fā) 高電平觸發(fā) 低電平觸發(fā) 邊沿觸發(fā)中斷 下降沿觸發(fā)類型中斷的請(qǐng)求和清除時(shí)序 T2時(shí)刻 CPU執(zhí)行完成中斷控制器的中斷服務(wù)程序 清除中斷中斷信號(hào)回復(fù)到高電平 T1時(shí)刻 中斷信號(hào)有下降沿產(chǎn)生 中斷控制器向CPU 發(fā)出中斷請(qǐng)求 2 1 中斷信號(hào)下降沿觸發(fā) T1T2 清除中斷 中斷信號(hào)回復(fù)到高電平 電平觸發(fā)中斷 低電平觸發(fā)類型中斷的請(qǐng)求和清除時(shí)序 中斷信號(hào)低電平觸發(fā) T1T3T2 2013 7 3 5 T2時(shí)刻 中斷控制器確認(rèn)中斷信號(hào)是低電平后 將向 求 T1時(shí)刻 中斷信號(hào)開始由高電平轉(zhuǎn)為低電平 T3時(shí)刻 CPU執(zhí)行完成中斷控制器的中斷服務(wù)程序 清除中斷 中斷信號(hào)回復(fù)到高電平 CUP發(fā)出中斷請(qǐng)求 名稱描述訪問復(fù)位值地址 EXTINT外部中斷標(biāo)志寄存器R W00 xE01FC140 EXTWAKE外部中斷喚醒寄存器R W00 xE01FC144 EXTMODE外部中斷方式寄存器R W00 xE01FC148 EXTPOLAR外部中斷極性寄存器R W00 xE01FC14C 中斷寄存器匯總 中斷信號(hào)波形與設(shè)置方式 相應(yīng)位設(shè)置值 設(shè)置說明 相應(yīng)位設(shè)置值 信號(hào)波形 極性控制寄存器 EXTPOLAR 方式控制寄存器 EXTMODE 低電平觸發(fā)0 低 0 電平 高電平觸發(fā)1 高 0 電平 下降沿觸發(fā)0 下降 1 邊沿 上升沿觸發(fā)1 上升 1 邊沿 外部中斷引腳設(shè)置 LPC2000系列芯片允許多個(gè)引腳同時(shí)作為一個(gè)外部中 斷的輸入引腳 根據(jù)其方式位和極性位的不同 外部中 斷邏輯處理如下 低電平觸發(fā)方式 作為EINT功能的全部引腳的狀態(tài)相 與后作為輸入信號(hào) 高電平觸發(fā)方式 作為EINT功能的全部引腳的狀態(tài)相 或后作為輸入信號(hào) 邊沿觸發(fā)方式 只使用GPIO端口號(hào)最低的那個(gè)引腳 并且與極性設(shè)置無關(guān) 在實(shí)際應(yīng)用中的注意點(diǎn) 如果要產(chǎn)生外部中斷 除了引腳連接模塊的設(shè)置 還部中斷引腳 需設(shè)置VIC模塊 否則外部中斷只能反映在EXTINT寄 存器中 要使器件進(jìn)入掉電模式并通過外部中斷喚醒 軟件應(yīng) 該正確設(shè)置引腳的外部中斷功能 再進(jìn)入掉電模式 4 7 外部中斷輸入 外部中斷應(yīng)用示例 初始化EINT0為電平中斷 PINSEL1 PINSEL1 EXTMODE EXTMODE 初始化EINT0為下降沿中斷 清除所有外部中斷標(biāo)志 EXTMODE EXTMODE EXTINT 0 x0F PINSEL1 PINSEL1 EXTMODE EXTMODE 0 x01 EXTPOLAR EXTPOLAR 捕獲寄存器0 CR0 捕獲寄存器1 CR1 捕獲寄存器2 CR2 捕獲寄存器3 CR3 捕獲控制寄存器 CCR 捕獲功能 匹配功能 匹配控制寄存器 MCR MAT 3 0 CAP 3 0 中斷標(biāo)志寄存器 IR 比 較 器 定時(shí)器計(jì)數(shù)值 匹配寄存器0 MR0 匹配寄存器1 MR1 匹配寄存器2 MR2 匹配寄存器3 MR3 外部匹配寄存器 EMR 4 8定時(shí)器結(jié)構(gòu)圖 預(yù)分頻器 PR PC 定時(shí)器 計(jì)數(shù)器 TC PCLK 使能 0 x0000 0000 定時(shí)器控制寄存器 TCR 復(fù)位 外部匹配寄存器 EMR 2013 7 3 6 Fpclk 分頻器寄存器描述 名稱描述訪問復(fù)位值 PR預(yù)分頻控制寄存器 用于設(shè)定預(yù)分頻值 為32位寄存器 讀寫0 PC 預(yù)分頻計(jì)數(shù)器 為32位計(jì)數(shù)器 計(jì)數(shù)頻率為PCLK 當(dāng)計(jì) 數(shù)值等于預(yù)分頻計(jì)數(shù)器的值時(shí) TC計(jì)數(shù)器加1 讀寫0 TC 定時(shí)器計(jì)數(shù)器 為32位計(jì)數(shù)器 計(jì)數(shù)頻率為PCLK經(jīng)過預(yù) 分頻計(jì)數(shù)器后頻率值 讀寫0 定時(shí)器的計(jì)數(shù)頻率定時(shí)器的計(jì)數(shù)頻率 1PR Fpclk 定時(shí)器控制寄 存器TCR用于控制 定時(shí)器計(jì)數(shù)器的操 作 預(yù)分頻器 PR PC 定時(shí)器 計(jì)數(shù)器 TC 使能 0 x0000 0000 定時(shí)器控制寄存器 TCR 復(fù)位 控制寄存器 TCR 作 TCR功能描述復(fù)位值 0計(jì)數(shù)器使能 1 定時(shí)器計(jì)數(shù)器和預(yù)分頻計(jì)數(shù)器使能計(jì)數(shù) 0 定時(shí)器計(jì)數(shù)器和預(yù)分頻計(jì)數(shù)器停止計(jì)數(shù) 0 1計(jì)數(shù)器復(fù)位 為1時(shí)定時(shí)器計(jì)數(shù)器和預(yù)分頻計(jì)數(shù)器在PCLK的下一個(gè) 上升沿同步復(fù)位 0 PCLK 中斷標(biāo)志寄存器 IR 捕獲功能匹配功能 中斷寄存器包含4個(gè)位用 于匹配中斷 另外4個(gè)位用于 捕獲中斷 如果有中斷產(chǎn)生 IR中的對(duì)應(yīng)位會(huì)置位 向?qū)?應(yīng)的IR位寫入1會(huì)復(fù)位中斷 中斷標(biāo)志寄存器 IR 應(yīng)的IR位寫入1會(huì)復(fù)位中斷 寫入0無效 位功能描述位功能描述 0MR0中斷匹配0中斷4CR0中斷捕獲0中斷 1MR1中斷匹配1中斷5CR1中斷捕獲1中斷 2MR2中斷匹配2中斷6CR2中斷捕獲2中斷 3MR3中斷匹配3中斷7CR3中斷捕獲3中斷 定時(shí)器中斷 定時(shí)器與VIC的關(guān) 系 4 8 定時(shí)器0 1 TIMER0 TIMER1分別位于VIC的通道4和通道5 中斷使能 寄存器VICIntEnable的Bit4和Bit5分別用來控制通道4和通道5的 使能 通道4定時(shí)器0 向量IRQ通道0 向量IRQ通道15 非向量IRQ通道 VICIntSelect 4 VICIntEnable 4 IRQ FIQ 通道5定時(shí)器1 VICIntSelect 5 VICIntEnable 5 IRQ FIQ VICVectAddr0 VICVectCntl0 VICVectAddr15 VICVectCntl15 VICDefVectAddr IRQ 通道 分配 使能 定時(shí)器中斷 匹配中斷 LPC2000系列ARM定時(shí)器計(jì)數(shù)溢出時(shí)不會(huì)產(chǎn)生中斷 但是時(shí)可產(chǎn)生中斷每個(gè)定時(shí)器都具有4個(gè)寄但是匹配時(shí)可以產(chǎn)生中斷 每個(gè)定時(shí)器都具有4個(gè)匹配寄 存器 MR0 MR3 可以用來存放匹配值 當(dāng)計(jì)數(shù)值 匹配值時(shí) 產(chǎn)生匹配中斷 定時(shí)器中斷 匹配中斷 匹配控制寄存器控制著匹配中斷的使能 以定時(shí)器0匹配通道0為例 當(dāng)T0TC T0MR0時(shí) 若T0MCR 0 0 則匹配中斷禁止 當(dāng)T0TC T0MR0時(shí) 若T0MCR 0 1 則匹配中斷使能 T0MCR 0 1 定時(shí)器0計(jì)數(shù)值TC 定時(shí)器0匹配值MR0T0IR 0 匹配中斷標(biāo)志 2013 7 3 7 使用定時(shí)器的注意要點(diǎn) 定時(shí)計(jì)數(shù)器 TC 本身不能產(chǎn)生中 斷 只有與匹配寄存器發(fā)生匹配后 計(jì)算定時(shí)器的 計(jì)數(shù)頻率 設(shè)置匹配值及 工作模式 操作流程 斷有與寄存發(fā) 才能引起中斷事件 在定時(shí)器匹配發(fā)生后 可以不停 止定時(shí)器工作 而動(dòng)態(tài)修改匹配寄 存器的值 定時(shí)器計(jì)數(shù)時(shí)鐘頻率 Fpclk PR 1 工作模式 設(shè)置捕獲方式 設(shè)置定時(shí)器中斷 VIC 啟動(dòng)定時(shí)器 TCR Void Time0Init void T0TC 0 T0PR 0 T0MCR 0 x03 T0MR0 Fpclk 10 T0TCR 0 x01 定時(shí)器0初始化C代碼 定時(shí)器設(shè)置為0 設(shè)置預(yù)分頻值 設(shè)置匹配模式 復(fù)位并中斷 設(shè)置匹配值 0 1S 啟動(dòng)定時(shí)器0 LPC2000 定時(shí)器操作示例 用定時(shí)器測(cè)量脈沖寬度 C代碼 P0 0t V time T0TC 0 T0PR 0 while IO0PIN T0TCR 0 x01 while IO0PIN T0TCR 0 x00 time T0TC 定時(shí)器設(shè)置為0 設(shè)置預(yù)分頻值 等待引腳電平變低 啟動(dòng)定時(shí)器0 等待引腳電平變高 關(guān)閉定時(shí)器0 讀取定時(shí)器值 即為脈寬 引發(fā)SPI中斷的事件 數(shù)據(jù)傳輸完成 發(fā)生模式錯(cuò)誤 作為主機(jī)時(shí) SPCCR寄存器控制 SCK的頻率 寄存器的值為一位SCK時(shí) 鐘所占用的PCLK周期數(shù)該寄存器的鐘所占用的PCLK周期數(shù) 該寄存器的 值必須為偶數(shù) 并且必須不小于8 如 果寄存器的值不符合以上條件 可能 會(huì)導(dǎo)致產(chǎn)生不可預(yù)測(cè)的動(dòng)作 SPI速率 Fpclk SPCCR SPI應(yīng)用示例 作為主機(jī) 操作流程 設(shè)置SPI時(shí)鐘速率 SPCCR 設(shè)置為SPI主機(jī) SPCR 選擇從機(jī) 設(shè)置為SPI從機(jī) SPCR 將要發(fā)送的數(shù)據(jù) 放入SPDR 作為從機(jī)操作流程 選擇從機(jī) 發(fā)送一字節(jié)數(shù)據(jù) 啟動(dòng)SPI數(shù)據(jù)傳輸 等待數(shù)據(jù)發(fā)送結(jié)束 SPIF 讀出從機(jī)發(fā)送的 數(shù)據(jù)或釋放從機(jī) 放入SPDR 等待數(shù)據(jù)發(fā)送結(jié)束 SPIF 從SPDR中讀出接 收的數(shù)據(jù) 特性 LPC2000系列微控制器具有兩個(gè)功能強(qiáng)大的 UART 其特性如下 16字節(jié)接收FIFO和16字節(jié)發(fā)送FIFO 寄存器位置符合16C550工業(yè)標(biāo)準(zhǔn) 接收FIFO觸發(fā)點(diǎn)可設(shè)置為1 4 8或14字節(jié) 內(nèi)置波特率發(fā)生器 UART1含有標(biāo)準(zhǔn)調(diào)制解調(diào)器接口信號(hào) 2013 7 3 8 UART中斷 UART中斷 LPC2000系列ARM UART中斷分為 四類 接收中斷 接收中斷 發(fā)送中斷 THRE 接收狀態(tài)中斷 RLS Modem中斷 Modem 接收超時(shí)中斷 CTI 接收數(shù)據(jù)可用中斷 RDA 注意 只有UART1具有Modem中斷 AD轉(zhuǎn)換器的時(shí)鐘不能大于4 5MHz 看門狗簡(jiǎn)介 在嵌入式應(yīng)用中 CPU必須可靠工作 即使因?yàn)?某種原因進(jìn)入了個(gè)錯(cuò)誤狀態(tài)系統(tǒng)也應(yīng)該可以自動(dòng)某種原因進(jìn)入了一個(gè)錯(cuò)誤狀態(tài) 系統(tǒng)也應(yīng)該可以自動(dòng) 恢復(fù) 看門狗的用途就是使微控制器在進(jìn)入錯(cuò)誤狀態(tài) 后的一定時(shí)間內(nèi)復(fù)位 其原理是在系統(tǒng)正常工作時(shí) 用戶程序每隔一段 時(shí)間執(zhí)行喂狗動(dòng)作 一些寄存器的特定操作 如果 系統(tǒng)出錯(cuò) 喂狗間隔超過看門狗溢出時(shí)間 那么看門 狗將會(huì)產(chǎn)生復(fù)位信號(hào) 使微控制器復(fù)位 特性 LPC2000系列微控制器都集成有看門狗部件 其 特性為 帶內(nèi)部預(yù)分頻器的可編程32位定時(shí)器 如果沒有周期性重裝 喂狗 動(dòng)作 則產(chǎn)生片 內(nèi)復(fù)位 具有調(diào)試模式 看門狗軟件使能后 必須由復(fù)位來禁止 錯(cuò)誤的喂狗動(dòng)作 將立即引起復(fù)位 寄存器描述 看門狗常數(shù)寄存器 4分頻 喂狗寄存器 WDFEED PCLK 看門狗常數(shù)寄存器 WDTC 計(jì)數(shù)器 WDTV 正確喂狗 錯(cuò)誤喂狗 溢出 該寄存器決定看門狗超時(shí)值 當(dāng)喂狗時(shí)序產(chǎn)生時(shí) 該寄存器 的內(nèi)容重新裝入看門狗定時(shí)器 該寄存器的復(fù)位值為0 xFF 即使 寫入更小的值 也會(huì)裝入0 xFF 溢出最小時(shí)間 tpclk 0 xFF 4 溢出最大時(shí)間 tpclk 0 xFFFFFFFF 4 中斷信號(hào) 復(fù)位信號(hào) 看門狗模式寄存器 WDMOD 溢出 WDT的中斷標(biāo)志位無法通過軟件清零 只能通過 硬件復(fù)位清零 因此 當(dāng)發(fā)生WDT中斷時(shí) 只能通過 禁止WDT中斷的方式返回 即 VICIntEnable 0 0 WDT定時(shí)器為遞減計(jì)數(shù) 向下 溢出時(shí)產(chǎn)生中斷和 或 復(fù)位 使能看門狗后 必需要要執(zhí)行一 操作流程 次正確的喂狗操作才能啟動(dòng)看門狗 看門狗沒有獨(dú)立的振蕩器 其使 用PCLK作為時(shí)鐘 所以CPU不能 進(jìn)入掉電模式 否則看門狗將停止 工作 看門狗溢出時(shí)間 N tpclk 4 設(shè)置看門狗定 時(shí)重裝值 設(shè)置看門狗工 作模式 一次喂狗操作 啟動(dòng)看門狗 使用示例 設(shè)置看門狗定 時(shí)重裝值 設(shè)置看門狗工 作模式 操作流程 設(shè)置看門狗定 時(shí)重裝值 設(shè)置看門狗工 作模式 操作流程 Void WDTInit void 看門狗初始化 WDTC 0 x10000 WDMOD 0 x03 WdtFeed C代碼 作模式 一次喂狗操作 啟動(dòng)看門狗 作模式 一次喂狗操作 啟動(dòng)看門狗 Void WdtFeed void 喂狗程序 WDFEED 0 xAA WDFEED 0 x55 2013 7 3 9 框圖 時(shí)鐘系統(tǒng)調(diào)試測(cè)試接口 可選 但是 在樣品階段 通常都會(huì)設(shè) 計(jì)這部分電 路 嵌入式控制器 復(fù)位及其 配置系統(tǒng) 存儲(chǔ)器系統(tǒng) 供電系統(tǒng) 電源 可選 因?yàn)樵S多面向 嵌入式領(lǐng)域的微控制 器內(nèi)部集成了程序和 數(shù)據(jù)存儲(chǔ)器 開關(guān)電源 效率較高 可以減少 發(fā)熱量 因而在功率較大時(shí)可以減 小電源模塊的體積 模擬電源 電路簡(jiǎn)單 輸出電壓 紋波較小 并且干擾較開關(guān)電源小 得多 LPC2000系列微控制器 有3個(gè)典型芯片的最小系統(tǒng) LPC2114最小系統(tǒng) LPC2210最小系統(tǒng) LPC2214最小系統(tǒng) 靜態(tài)隨機(jī)存儲(chǔ)器 SRAM 基 本單元是鎖存器 使用多個(gè)晶體 管通常是四個(gè)六個(gè)或者八個(gè) 動(dòng)態(tài)隨機(jī)存儲(chǔ)器 DRAM 的內(nèi)存單元是由晶體管和 目前 RAM大體上可以分為SRAM和DRAM SRAM的存儲(chǔ)單元由觸發(fā)器構(gòu)成 沒有刷新部分 外圍 電路比較簡(jiǎn)單 DRAM的存儲(chǔ)單元是由電容和晶體管構(gòu)成的 需要定時(shí) 刷新 外圍電路比較復(fù)雜 管 通常是四個(gè) 六個(gè)或者八個(gè) 存取速度快 容量小 外圍電路 簡(jiǎn)單 價(jià)格貴 的內(nèi)存單元是由體管和 電容搭配組成的 需要定 時(shí)刷新電容上的電荷 1 Descriptions GPIO 輸出實(shí)驗(yàn) 控制蜂鳴器鳴叫 include config h define BEEP 1 0 dly for i 0 i 5000 i int main void PINSEL0 0 x00000000 設(shè)置管腳連接 GPIO IO0DIR BEEP 設(shè)置 BEEP 控制口為輸出 while 1 IO0SET BEEP BEEP 停止蜂鳴 DelayNS 40 IO0CLR BEEP BEEP 蜂鳴 DelayNS 40 return 0 2 Descriptions 檢測(cè)按鍵 KEY1 KEY1 按下 蜂鳴器蜂鳴 松開后停止蜂鳴 include config h const uint32 BEEP 1 7 P0 7 控制蜂鳴器 const uint32 KEY1 1 16 P0 16 連接 KEY1 int main void PINSEL0 0 x00000000 所有管腳連接 GPIO PINSEL1 0 x00000000 IO0DIR BEEP 蜂鳴器控制口輸出 其余輸入 while 1 if IO0PIN 如果 KEY1 按下 蜂鳴器鳴叫 else IO0SET BEEP 松開則停止蜂鳴 return 0 3 Descriptions IOPIN 使用演示程序 讓 8 個(gè) LED 交替閃爍 include config h define LEDS8 0 xFF 18 P1 25 18 控制 LED8 LED1 1 int main void uint32 i PINSEL2 PINSEL2 P1 25 16 連接 GPIO IO1DIR LEDS8 LED 燈控制口輸出 while 1 IO1PIN 0 xAA 18 點(diǎn)亮 LED1 LED3 LED5 LED7 其余熄滅 for i 0 i 0 x1FFF0 i IO1PIN 0 x55 18 點(diǎn)亮 LED2 LED4 LED6 LED8 其余熄滅 for i 0 i 0 x1FFF0 i return 0 2 while 1 for i 0 i 8 i 流水燈花樣顯示 IO1SET 1 18 i DelayNS 10 IO1CLR 1 18 i DelayNS 10 4 Descriptions GPIO 輸出 LED 流水燈實(shí)驗(yàn) 數(shù)組實(shí)現(xiàn)流水燈花樣 const uint32 LEDS8 0 xFF 18 P1 25

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論