編輯推薦
1、《ARM Cortex-M3嵌入式開發與實踐——基於STM32F103》按照“認知—應用—提高”的思路,全麵介紹STM32F103微控製器內部架構及其常用典型硬件電路。
2、針對片上外設,基於Keil MDK闡述寄存器和庫函數兩種類型工程程序設計方法。
3、基於嵌入式實時操作係統μC/OS-Ⅱ和庫函數類型工程,探討麵嚮任務程序設計方法。
4、本書配套有教學課件(PPT)和源代碼。
內容簡介
本書基於ARM Cortex M3內核微控製器STM32F103和嵌入式實時操作係統μC/OS�並潁�詳細講述嵌入式係統的硬件設計與軟件開發技術,主要內容包括嵌入式係統概述、STM32F103微控製器、STM32F103學習平颱、LED燈控製與Keil MDK工程框架、按鍵與中斷處理、定時器、串口通信、存儲器管理、LCD屏與溫/濕度傳感器、μC/OS Ⅱ係統與移植、μC/OS Ⅱ任務管理、信號量與互斥信號量、消息郵箱與消息隊列等。本書的特色在於理論與應用緊密結閤,實例豐富,對於基於STM32F1係列微控製器及嵌入式實時操作係統μC/OS Ⅱ的教學和工程應用,都具有一定的指導和參考價值。
本書可作為普通高等院校物聯網、電子工程、通信工程、自動化、智能儀器、計算機工程和嵌入式控製等相關專業的高年級本科生教材,也可作為嵌入式係統愛好者和工程開發技術人員的參考用書。
內頁插圖
目錄
第1篇STM32F103硬件係統與Keil MDK工程
第1章嵌入式係統概述
1.1嵌入式係統範例
1.2嵌入式係統概念
1.2.1嵌入式係統與ARM的關係
1.2.2嵌入式係統與嵌入式操作係統的關係
1.2.3嵌入式係統研發特點
1.3ARM發展曆程及應用領域
1.3.1ARM發展史及命名規則
1.3.2ARM微處理器係列
1.3.3ARM微處理器應用領域
1.4嵌入式操作係統
1.4.1Windows CE
1.4.2VxWorks
1.4.3嵌入式Linux
1.4.4Android係統
1.5μC/OS�並蠐毽藽/OS�並�
1.5.1μC/OS發展曆程
1.5.2μC/OS�並蛺氐�
1.5.3μC/OS�並筇氐�
1.5.4μC/OS應用領域
1.6本章小結
習題
第2章STM32F103微控製器
2.1STM32F103概述
2.2STM32F103ZET6引腳定義
2.3STM32F103架構
2.4STM32F103存儲器
2.5STM32F103片內外設
2.6STM32F103異常與中斷
2.7本章小結
習題
第3章STM32F103學習平颱
ARM Cortex�睲3嵌入式開發與實踐——基於STM32F103
3.1STM32F103核心電路
3.2電源電路與按鍵電路
3.3LED與蜂鳴器驅動電路
3.4串口通信電路
3.5Flash與EEPROM電路
3.6溫/濕度傳感器電路
3.7LCD屏接口電路
3.8JTAG與復位電路
3.9SRAM電路
3.10本章小結
習題
第4章LED燈控製與Keil MDK工程框架
4.1STM32F103通用目的輸入/輸齣口
4.1.1GPIO寄存器
4.1.2AFIO寄存器
4.2STM32F103庫函數用法
4.3Keil MDK工程框架
4.4LED燈閃爍實例
4.4.1寄存器類型工程實例
4.4.2庫函數類型工程實例
4.5本章小結
習題
第5章按鍵與中斷處理
5.1NVIC中斷工作原理
5.2GPIO外部輸入中斷
5.3用戶按鍵中斷實例
5.3.1寄存器類型工程實例
5.3.2庫函數類型工程實例
5.4本章小結
習題
第6章定時器
6.1係統節拍定時器
6.1.1係統節拍定時器工作原理
6.1.2係統節拍定時器實例
6.2看門狗定時器
6.2.1窗口看門狗定時器工作原理
6.2.2窗口看門狗定時器寄存器類型實例
6.2.3窗口看門狗定時器庫函數類型實例
6.3實時時鍾
6.3.1實時時鍾工作原理
6.3.2實時時鍾寄存器類型實例
6.3.3實時時鍾庫函數類型實例
6.4通用定時器
6.4.1通用定時器工作原理
6.4.2通用定時器寄存器類型實例
6.4.3通用定時器庫函數類型實例
6.5本章小結
習題
第7章串口通信
7.1串口通信工作原理
7.2STM32F103串口
7.3串口通信寄存器類型實例
7.4串口通信庫函數類型實例
7.5本章小結
習題
第8章存儲器管理
8.1SRAM存儲器
8.1.1訪問SRAM存儲器寄存器類型實例
8.1.2訪問SRAM存儲器庫函數類型實例
8.2EEPROM存儲器
8.2.1訪問EEPROM寄存器類型實例
8.2.2訪問EEPROM庫函數類型實例
8.3Flash存儲器
8.3.1STM32F103同步串行口
8.3.2W25Q128訪問控製
8.3.3訪問Flash存儲器寄存器類型工程實例
8.3.4訪問Flash存儲器庫函數類型工程實例
8.4本章小結
習題
第9章LCD屏與溫/濕度傳感器
9.1LCD屏顯示原理
9.2溫/濕度傳感器
9.3LCD顯示實例
9.3.1寄存器類型實例
9.3.2庫函數類型實例
9.4本章小結
習題
第2篇嵌入式實時操作係統μC/OS�並�
第10章μC/OS�並螄低秤胍浦�
10.1μC/OS�並螄低騁浦�
10.2μC/OS�並螄低辰峁褂肱渲�
10.3μC/OS�並螄低橙撾�
10.3.1空閑任務
10.3.2統計任務
10.3.3定時器任務
10.4本章小結
習題
第11章μC/OS�並蛉撾窆芾�
11.1μC/OS�並蠐沒�任務
11.2μC/OS�並蚨噯撾窆こ淌道�
11.3統計任務實例
11.4係統定時器
11.5本章小結
習題
第12章信號量與互斥信號量
12.1μC/OS�並蛐藕帕�
12.2μC/OS�並蚧コ廡藕帕�
12.3信號量與互斥信號量實例
12.4本章小結
習題
第13章消息郵箱與消息隊列
13.1μC/OS�並螄�息郵箱
13.2μC/OS�並螄�息隊列
13.3消息郵箱與消息隊列實例
13.4本章小結
習題
參考文獻
精彩書摘
第5章
按鍵與中斷處理
本章將介紹嵌套嚮量中斷控製器NVIC的工作原理,闡述STM32F103ZET6微控製器外部輸入中斷的工作原理,然後,以用戶按鍵為例,詳細解釋NVIC中斷的寄存器類型和庫函數類型的程序設計方法。
本章的學習目標:
�r 瞭解NVIC中斷響應方法;
�r 熟悉GPIO中斷響應方法;
�r 熟練應用寄存器或庫函數進行GPIO中斷程序設計。
5.1NVIC中斷工作原理
嵌套嚮量中斷控製器NVIC相關的中斷管理工作主要有開放中斷、關閉中斷、設置中斷請求標誌、讀中斷請求標誌、清除中斷請求標誌和配置中斷優先級等。嵌套嚮量中斷控製器NVIC的寄存器有ISER0、ISER1、ICER0、ICER1、ISPR0、ISPR1、ICPR0、ICPR1、IABR0、IABR1、IPR0~IPR14和STIR,如錶5��1所示。
錶5��1NVIC寄存器
序號
地址
寄存器
名稱
描述
1
0xE000E100
ISER0
0xE000E104
ISER1中斷開放寄存器
ISER0[0]~ISER0[31]、ISER1[0]~ISER1[27]依次對應中斷號為0~59的中斷,各位寫0無效,寫1開放中斷2
0xE000E180
ICER0
0xE000E184
ICER1
中斷關閉寄存器
ICER0[0]~ICER0[31]、ICER1[0]~ICER1[27]依次對應中斷號為0~59的中斷,各位寫0無效,寫1關閉中斷3
0xE000E200
ISPR0
0xE000E204
ISPR1
中斷設置請求狀態寄存器
ISPR0[0]~ISPR0[31]、ISPR1[0]~ISPR1[27]依次對應中斷號為0~59的中斷,各位寫0無效,寫1請求中斷
續錶
序號
地址
寄存器
名稱
描述
4
0xE000E280
ICPR0
0xE000E284
ICPR1
中斷清除請求狀態寄存器
ICPR0[0]~ICPR0[31]、ICPR1[0]~ICPR1[27]依次對應中斷號為0~59的中斷,各位寫0無效,寫1清中斷標誌
5
0xE000E300
IABR0
0xE000E304
IABR1
中斷活躍位寄存器(隻讀)
IABR0[0]~IABR0[31]、IABR1[0]~IABR1[27]依次對應中斷號為0~59的中斷,各位讀齣1,相應中斷活躍
6
0xE000E400~0xE000E438
IPR0~IPR14
中斷優先級寄存器
共有16個優先級,優先級號為0~15,優先級號0錶示優先級*高,優先級號15錶示優先級*低
7
0xE000EF00
STIR
軟件觸發中斷寄存器
第[8:0]位域有效,寫入0~59中的某一中斷號,則觸發相應的中斷
下麵以ISER0和ISER1為例,介紹開放中斷的方法。
根據錶5��1,ISER0[0]~ISER0[31]對應著中斷號為0~31的NVIC中斷,而ISER1[0]~ISER1[27]則對應著中斷號為32~59的NVIC中斷。由錶2��5可知,外部中斷2的中斷號為8,而USART2中斷的中斷號為38,開放這兩個中斷的語句依次為
ISER0= (1uL<<8);
ISER1 = (1uL<<6);
設中斷號為IRQn,則這兩個語句也可以寫為如下統一的語句形式:
ISER0 = 1uL<< (IRQn & 0x1F);
ISER1 = 1uL<< (IRQn & 0x1F);
上述開放中斷的方法被用在CMSIS庫文件中。
在CMSIS庫頭文件core_cm3.h中定義瞭NVIC中斷的相關操作,這裏重點介紹開放中斷、關閉中斷、設置中斷請求標誌、讀中斷請求標誌、清除中斷請求標誌、設置中斷優先級和獲取中斷優先級的函數,如程序段5��1所示。
程序段5��1NVIC中斷相關的CMSIS庫函數(摘自core_cm3.h文件)
1typedef struct
2{
3__IO uint32_t ISER[8U]; // 偏移地址:0x000(可讀/可寫)中斷設置使能寄存器
4uint32_t RESERVED0[24U];
5__IO uint32_t ICER[8U]; // 偏移地址:0x080(可讀/可寫)中斷清除使能寄存器
6uint32_t RESERVED1[24U];
7__IO uint32_t ISPR[8U]; // 偏移地址:0x100(可讀/可寫)中斷設置請求寄存器
8uint32_t RESERVED2[24U];
9__IO uint32_t ICPR[8U]; // 偏移地址:0x180(可讀/可寫)中斷清除請求寄存器
10uint32_t RESERVED3[24U];
11__IO uint32_t IABR[8U]; // 偏移地址:0x200(可讀/可寫)中斷活躍標誌位寄存器
12uint32_t RESERVED4[56U];
13__IO uint8_t IP[240U]; // 偏移地址:0x300(可讀/可寫)中斷優先級寄存器(8位)
14uint32_t RESERVED5[644U];
15__O uint32_t STIR; // 偏移地址:0xE00(隻寫)軟件觸發中斷寄存器
16}NVIC_Type;
17
18#define SCS_BASE (0xE000E000UL)
19#define NVIC_BASE (SCS_BASE + 0x0100UL)
20#define NVIC ((NVIC_Type *)NVIC_BASE)
21
第1~16行自定義結構體類型NVIC_Type,各成員的位置與錶5��1中各個寄存器的位置對應,再結閤第18~20行可知,NVIC為指嚮首地址0xE000E100的結構體指針,這樣(結閤錶5��1),NVIC��>ISER[0]指嚮的地址即為ISER0寄存器的地址,NVIC��>ISER[1]指嚮的地址即為ISER1寄存器的地址,依次類推,NVIC��>STIR指嚮的地址即為STIR寄存器的地址。
22__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)// 開中斷
23{
24NVIC��>ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
25}
26
第22~25行為開放NVIC中斷函數NVIC_EnableIRQ,形參為IRQn_Type類型的變量,該自定義類型定義在stm32f10x.h文件中,如程序段5��2所示。第24行根據IRQn的值設置ISER[0]或ISER[1]相應的位,即開放IRQn對應的NVIC中斷。
27__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)// 關中斷
28{
29NVIC��>ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
30}
31
第27~30行為關閉NVIC中斷函數NVIC_DisableIRQ,形參為IRQn_Type類型的變量。第29行根據IRQn的值嚮ICER[0]或ICER[1]相應的位寫入1,關閉IRQn對應的NVIC中斷。
32__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)// 中斷請求
33{
34NVIC��>ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
……
前言/序言
自1971年*塊單片機誕生至今,嵌入式係統的發展經曆瞭初期階段和蓬勃發展期,現已進入瞭成熟期。在嵌入式係統發展初期,各種EDA工具還不完善,芯片的製作工藝和成本頗高,嵌入式程序設計語言以匯編語言為主,該時期隻有電子工程專業技術人員纔能從事嵌入式係統設計與開發工作。到瞭20世紀80年代,隨著MCS��51係列單片機的齣現以及C51程序設計語言的成熟,單片機應用係統成為嵌入式係統的代名詞,MCS��51單片機迅速在智能儀錶和自動控製等相關領域得到普及。同時期,各種DSP芯片、FPGA芯片和SoC芯片也如雨後春筍般湧現齣來,應用領域從*初的自動控製應用擴展到各種各樣的智能應用係統。隨後1997年,ARM公司推齣ARM7微控製器,之後推齣Cortex係列微控製器和微處理器,成為嵌入式係統設計的首選芯片,標誌著嵌入式係統進入蓬勃發展期。
全球的半導體廠商在芯片製造上“百花齊放,百傢爭鳴”,是嵌入式係統蓬勃發展階段的突齣寫照。這段時期,嵌入式係統工程師同時兼做硬件工程師和軟件工程師,需要涉獵各種各樣的芯片應用知識,並開發各具特色的應用程序。直到21世紀初,開源嵌入式實時操作係統齣現,嵌入式係統工程師纔真正分為嵌入式係統硬件工程師和嵌入式係統軟件工程師,硬件工程師負責硬件電路闆設計、芯片外設訪問驅動函數開發和嵌入式實時操作係統移植等,軟件工程師負責係統資源管理與調度、圖形用戶交互界麵設計和應用程序設計等,這標誌著嵌入式係統已經發展到成熟期,從幾十個工程師到成百上韆的工程師,通過細緻分工協力閤作進行同一項嵌入式係統研發。
本書內容分為兩篇,第1篇主要麵嚮硬件工程師和物聯網與電子設計類本科生,第2篇偏嚮於硬件工程師,同時也兼顧軟件工程師。本書由作者近幾年來在江西財經大學軟件與通信工程學院的“嵌入式係統應用”和“嵌入式係統原理”課程教學的講義改編而成的,按章節順序進行教學活動和課程實驗。
第1篇包括9章,是全書的硬件基礎和芯片級彆程序設計部分。第1章介紹嵌入式係統的發展曆程和應用領域;第2章介紹ARM Cortex�睲3內核微控製器芯片STM32F103的內部結構、引腳配置、存儲器、片內外設、異常與NVIC中斷等;第3章介紹ALIENTEK戰艦STM32F1學習闆的硬件原理,重點介紹本書中使用的電路模塊,如STM32F103核心電路、電源電路與按鍵電路、LED與蜂鳴器電路模塊、串口模塊、Flash與EEPROM電路模塊、溫/濕度傳感器模塊、LCD屏模塊和SRAM模塊等,這部分內容為後麵程序設計的硬件電路基礎;第4章討論STM32F103的GPIO訪問方法以及LED燈控製技術,並完整地介紹基於Keil MDK創建工程的方法,後麵的工程均基於該工程框架;第5章深入分析NVIC中斷的工作原理,重點介紹GPIO口外部輸入中斷的處理方法,並給齣按鍵響應實例;第6章闡述STM32F103內部通用定時器、看門狗定時器和係統節拍定時器的應用與實例,其中,係統節拍定時器主要用於為嵌入式實時操作係統提供時鍾節拍(一般設為100Hz);第7章介紹串口通信,一般藉助中斷方式從上位機接收串口數據,通過函數調用方式嚮上位機發送串口數據;第8章介紹STM32F103訪問Flash芯片W25Q128和EEPROM芯片24C02的方法;第9章介紹STM32F103驅動TFT LCD屏的方法,介紹LCD屏顯示字符和漢字的方法,並闡述溫/濕度傳感器DHT11的應用方法,展示LCD屏顯示環境溫/濕度值的應用實例。
第2篇為嵌入式實時操作係統級彆的程序設計部分,介紹嵌入式實時操作係統μC/OS�並蛟諼⒖刂破鱏TM32F103上的移植和工程設計方法,包括4章,依次介紹係統組成與移植文件、任務管理與工程框架、信號量與互斥信號量、消息郵箱與消息隊列。這篇內容中沒有對嵌入式實時操作係統μC/OS�並虻哪誆抗ぷ髟�理進行剖析,感興趣的讀者可參考文獻[6]、[8]。
ARM Cortex�睲3嵌入式開發與實踐——基於STM32F103
作為教材,需要體現知識的完整性和可擴展性。通過本書的教學活動,展示給學生和讀者一個從事嵌入式係統
ARM Cortex-M3嵌入式開發與實踐 基於STM32F103/電子設計與嵌入式開發實踐叢書 下載 mobi epub pdf txt 電子書 格式
ARM Cortex-M3嵌入式開發與實踐 基於STM32F103/電子設計與嵌入式開發實踐叢書 下載 mobi pdf epub txt 電子書 格式 2024
ARM Cortex-M3嵌入式開發與實踐 基於STM32F103/電子設計與嵌入式開發實踐叢書 mobi epub pdf txt 電子書 格式下載 2024