第1部分
第1章 走進arm微處理器 3
1.1 arm體係結構的源頭——arm公司 3
1.2 arm處理器的發展曆程 4
1.3 arm體係結構 5
1.3.1 arm cortex處理器技術特點 6
1.3.2 arm cortex係列處理器比較 7
1.4 arm v7新增指令 12
1.4.1 位操作指令 13
1.4.2 比特反轉指令 13
1.4.3 16-bit常數操作 13
1.4.4 調轉錶指令 14
1.4.5 it指令 14
1.4.6 檢查是否為零並跳轉指令(cbz) 14
第2章 cortex-m3處理器體係結構 16
2.1 cortex-m3綜述 16
2.2 cortex-m3編程模式 17
2.2.1 cortex-m3的工作模式和工作狀態 18
2.2.2 特權訪問和用戶訪問 18
2.2.3 cortex-m3的寄存器組織 18
.2.2.4 cortex-m3的數據類型 19
2.2.5 cortex-m3的存儲器格式 20
2.3 cortex-m3的存儲器管理 21
2.3.1 存儲器映射 21
2.3.2 bit-banding機製 23
2.4 cortex-m3的異常處理 24
2.4.1 異常優先級 26
2.4.2 異常處理的堆棧使用 27
2.4.3 cortex-m3特有的異常處理機製 29
2.4.4 異常退齣 30
2.4.5 復位異常 31
2.4.6 中止(abort)異常 34
2.5 cortex-m3的電源管理 37
2.5.1 sleeping 37
2.5.2 sleepdeep 38
2.6 嵌套嚮量中斷控製器nvic 38
2.7 存儲器保護單位mpu 41
2.8 cortex-m3開發平颱——stm32v100評估闆介紹 43
第3章 arm開發環境realview mdk平颱搭建 46
3.1 常用arm開發工具 46
3.1.1 免費平颱gnu 47
3.1.2 realview developmentsuite開發工具 48
3.1.3 arm硬件仿真器multi-ice與multi-trace 49
3.1.4 multi 2000 50
3.1.5 hitool for arm 50
3.1.6 realview mdk 50
3.2 realview mdk概述 51
3.3 realview mdk的使用 54
3.3.1 創建工程 54
3.3.2 編譯、鏈接工程 57
3.3.3 程序調試 59
3.3.4 工程選項設置 60
3.4 仿真工具——ulink2 61
3.5 realview mdk工程實例 62
第4章 基於realview開發環境的嵌入式軟件開發 66
4.1 realview編譯器的缺省行為 66
4.1.1 semihosting 66
4.1.2 c庫結構 69
4.1.3 默認存儲器映射 70
4.1.4 鏈接程序放置規則 71
4.1.5 應用程序啓動 71
4.2 調整c庫使其適應目標硬件 73
4.2.1 c庫函數重定嚮 73
4.2.2 從最終代碼映像中去掉semihosting 74
4.3 映像文件存儲器映射調整 74
4.3.1 關於分散加載 74
4.3.2 scatter文件語法 78
4.3.3 scatter文件典型用法 85
4.3.4 等效的簡單映像分散載入描述 91
4.4 復位和初始化 95
4.4.1 初始化序列 95
4.4.2 嚮量錶 96
4.4.3 rom/ram重映射 97
4.4.4 與局部存儲器設置有關的考慮事項 100
4.4.5 棧指針初始化 100
4.4.6 硬件初始化 102
第5章 stm32f103處理器內部資源c編程與實例 104
5.1 i/o控製模塊c編程與實例 104
5.1.1 實例內容與目標 104
5.1.2 i/o控製模塊操作原理 104
5.1.3 i/o控製實例操作步驟 109
5.1.4 i/o控製實例參考程序及說明 109
5.2 中斷控製模塊c編程與實例 112
5.2.1 實例內容與目標 112
5.2.2 中斷模塊nvic的操作原理 113
5.2.3 中斷控製實例操作步驟 115
5.2.4 中斷控製實例參考程序及說明 116
5.3 a/d轉換和dma編程實例 119
5.3.1 實例內容與目標 119
5.3.2 a/d轉換控製器與dma控製器操作原理 119
5.3.3 a/d轉換和dma編程實例操作步驟 126
5.3.4 a/d轉換和dma編程實例參考程序及說明 126
5.4 實時鍾rtc編程實例 133
5.4.1 實例內容與目標 133
5.4.2 stm32f103實時鍾操作原理 134
5.4.3 實時鍾rtc編程實例操作步驟 135
5.4.4 實時鍾rtc編程實例參考程序及說明 136
5.5 串行外設接口spi編程實例 139
5.5.1 實例內容與目標 139
5.5.2 spi接口操作原理 139
5.5.3 spi接口實例操作步驟 144
5.5.4 spi接口實例參考程序及說明 144
5.6 can總綫編程實例 149
5.6.1 實例內容與目標 149
5.6.2 can總綫操作原理 149
5.6.3 can總綫編程實例操作步驟 156
5.6.4 can總綫實例參考程序及說明 157
5.7 窗口看門狗wwdg實例 163
5.7.1 實例內容與目標 163
5.7.2 wwdg操作原理 164
5.7.3 看門狗實例操作步驟 166
5.7.4 看門狗實例參考程序及說明 166
5.8 uart編程實例 169
5.8.1 實例內容與目標 169
5.8.2 uart編程原理 169
5.8.3 串口編程實例操作步驟 180
5.8.4 串口編程實例參考程序及說明 180
第2部分
第6章 μc/os-ⅱ操作係統基礎及其移植開發初步 189
6.1 實時操作係統基本原理與技術 189
6.1.1 實時操作係統基本特徵 189
6.1.2 實時操作係統的關鍵技術指標 190
6.1.3 實時操作係統基本術語 191
6.2 μc/os-ⅱ應用程序開發 192
6.2.1 μc/os-ⅱ的變量類型 192
6.2.2 應用程序的基本結構 193
6.2.3 μc/os-ⅱ api介紹 194
6.2.4 μc/os-ⅱ多任務實現機製 195
6.3 μc/os-ⅱ在stm32f103處理器上的移植 196
6.3.1 移植條件 196
6.3.2 移植步驟 197
第7章 μc/os-ⅱ的內核機製 203
7.1 μc/os-ⅱ的內核結構 203
7.1.1 臨界段 203
7.1.2 任務 204
7.1.3 任務狀態 205
7.1.4 任務調度 206
7.1.5 中斷處理 208
7.1.6 μc/os-ⅱ初始化 209
7.1.7 μc/os-ⅱ啓動 209
7.2 μc/os-ⅱ的任務管理 211
7.2.1 任務建立 211
7.2.2 任務堆棧 214
7.2.3 堆棧檢驗 214
7.2.4 改變任務優先級 217
7.2.5 掛起任務 220
7.2.6 恢復任務 222
7.2.7 刪除任務 224
7.2.8 請求刪除任務 227
7.3 μc/os-ⅱ的時間管理 229
7.3.1 任務延時 230
7.3.2 時/分/秒延時函數 231
7.3.3 恢復延時任務 233
7.3.4 係統時間 235
7.4 任務之間通信與同步 236
7.4.1 事件控製塊ecb 237
7.4.2 初始化任務控製塊 240
7.4.3 使任務進入就緒態 240
7.4.4 使任務進入等待某事件發生狀態 243
7.4.5 由於等待超時而將任務置為就緒態 243
7.4.6 信號量 244
7.4.7 郵箱 252
7.4.8 消息隊列 261
7.5 內存管理 274
7.5.1 內存控製塊 274
7.5.2 建立內存分區 275
7.5.3 分配內存塊 278
7.5.4 釋放內存塊 279
7.5.5 等待內存塊 280
第8章 基於μc/os-ⅱ的程序設計實例 283
8.1 實例介紹 283
8.2 實例分析 283
8.2.1 實例任務劃分 283
8.2.2 實例任務設計與優先級分配 284
8.3 任務實現詳解 285
8.3.1 鍵盤任務 286
8.3.2 顯示任務 293
8.3.3 使用延時函數的采樣任務 296
8.3.4 使用時鍾節拍鈎子函數的采樣任務 297
8.3.5 使用定時中斷的采樣任務 299
8.3.6 使用高優先級中斷的采樣任務 301
8.3.7 串口發送任務 302
參考文獻 304
· · · · · · (
收起)