單片機三劍客:STM32單片機與C語言編程

蔡杏山

商品描述

《單片機三劍客:STM32 單片機與C 語言編程》介紹了STM32 單片機入門,單片機C語言基礎,STM32 單片機的硬件介紹,
Keil 軟件的使用與寄存器方式編程閃爍點亮LED,固件庫與庫函數方式編程閃爍點亮LED,按鍵控制LED 和蜂鳴器的電路與編程實例,
中斷功能的使用與編程實例,定時器的使用與編程實例,串口通信與編程實例,模/ 數轉換器(ADC) 的使用與編程實例,
數/ 模轉換器(DAC) 的使用與編程實例,光敏、溫度傳感器的檢測電路及編程實例,紅外線遙控與實時時鐘(RTC) 的使用與編程實例,
RS485 通信與CAN 通信的原理與編程實例,FSMC 與液晶顯示屏的使用與編程實例。

目錄大綱

前言
第 1 章 STM32 單片機入門.1
1.1 STM32 單晶片簡介1
1.1.1 什麼是 ARM 1
1.1.2 什麼是 STM32 單晶片 2
1.1.3 STM32 單晶片的型號意義 3
1.2 STM32 單晶片的最小系統電路3
1.2.1 STM32F103C8T6 單晶片介紹 3
1.2.2 STM32 單晶片的最小系統電路 4
1.2.3 最小系統實驗電路板 6
1.3 程式的編寫與下載7
1.3.1 用 Keil MDK5 軟體編寫和編譯程式 7
1.3.2 ST-Link 下載調試器及驅動程式的安裝 8
1.3.3 下載偵錯器與 STM32 單晶片的連接 10
1.3.4 連線設定與下載程式 10
1.3.5 單晶片電路板通電測試 12
第 2 章 單晶片 C 語言基礎. 13
2.1 關鍵字、常數與變數13
2.1.1 關鍵字 13
2.1.2 常量 13
2.1.3 變數 15
2.2 運算符15
2.2.1 算術運算子 16
2.2.2 關係運算子 16
2.2.3 邏輯運算子 17
2.2.4 位元運算子 17
2.2.5 複合賦值運算子 18
2.3 數組、結構體、枚舉和指針18
2.3.1 數組 18
2.3.2 結構體 20
2.3.3 枚舉 22
2.3.4 指針 22
2.4 控制語句23
2.4.1 迴圈語句(while、do while、for 語句) 23
2.4.2 選擇語句(if、switch…case 語句) 25
第 3 章 STM32 單晶片的硬體介紹 27
3.1 單晶片內部結構與最小系統電路27
3.1.1 單晶片的接腳功能與最小系統電路 27
3.1.2 單晶片內部結構 27
3.2 記憶體的位址分配29
3.2.1 記憶體的分割與位址分配 29
3.2.2 暫存器的命名 30
3.2.3 基底位址與偏移位址 31
3.3 GPIO 連接埠電路32
3.3.1 GPIO 連接埠的基本電路結構 32
3.3.2 工作在輸入模式時的電路原理 32
3.3.3 工作在輸出模式時的電路原理 33
3.4 GPIO 連接埠寄存器34
3.4.1 連接埠配置低 8 位元暫存器(GPIOx_CRL,x=A~G) 34
3.4.2 連接埠配置高 8 位元暫存器(GPIOx_CRH,x=A~G) 34
3.4.3 連接埠輸入資料暫存器(GPIOx_IDR,x=A~G) 35
3.4.4 連接埠輸出資料暫存器(GPIOx_ODR,x=A~G) 36
3.4.5 埠置位 / 重設暫存器(GPIOx_BSRR,x=A~G) 36
3.4.6 埠清 0 暫存器(GPIOx_BRR,x=A~G) 36
3.4.7 連接埠配置鎖定暫存器(GPIOx_LCKR,x=A~G) 37
3.5 時脈、重設及相關暫存器38
3.5.1 時脈訊號的種類與分配 38
3.5.2 時脈控制暫存器(RCC_CR) 40
3.5.3 時脈配置暫存器(RCC_CFGR) 41
3.5.4 APB2 外設重設暫存器(RCC_APB2RSTR) 43
3.5.5 APB1 外設重設暫存器(RCC_APB1RSTR) 44
3.5.6 AHB 外設時脈啟用暫存器(RCC_AHBENR) 45
3.5.7 APB2 週邊時脈啟用暫存器(RCC_APB2ENR) 46
3.5.8 APB1 週邊時脈啟用暫存器(RCC_APB1ENR) 48
3.5.9 控制 / 狀態暫存器(RCC_CSR) 49
第 4 章 Keil 軟體的使用與暫存器方式程式閃爍點亮 LED. 51
4.1 Keil MDK 軟體和晶片包的安裝51
4.1.1 Keil MDK5 軟體的安裝 51
4.1.2 晶片包的安裝 . 53
4.1.3 軟體的啟動 54
4.2 建立專案工程並導入程式檔案54
4.2.1 建立專案資料夾 54
4.2.2 尋找並複製啟動檔 55
4.2.3 新建工程 56
4.2.4 新建程式檔案 57
4.2.5 將程式檔案導入工程 . 58
4.3 用直接操作暫存器的方式編程閃爍點亮 LED58
4.3.1 編寫頭檔(.h 檔) 58
4.3.2 頭檔的程式碼說明 59
4.3.3 主程式檔案(main.c)的編寫 61
4.3.4 主程式的程式碼說明 62
4.3.5 啟動文件說明 63
4.3.6 編譯程式 64
第 5 章 韌體庫與函式庫函數方式程式設計閃爍點亮 LED 65
5.1 STM32 韌體庫介紹65
5.1.1 韌體庫的組成 65
5.1.2 韌體庫中一些重要文件說明 65
5.1.3 韌體庫幫助文件的使用 67
5.2 庫函數方式程式設計範本的建立68
5.2.1 建立範本資料夾並複製所需的檔案 68
5.2.2 創建工程 69
5.2.3 配置工程 72
5.2.4 編寫主程式模板 75
5.3 函式庫函數方式閃爍點亮 LED 的工程建立與程式編寫 76
5.3.1 利用函式庫函數方式程式設計範本建立工程 . 76
5.3.2 在工程中新建一些文件 76
5.3.3 程式的編寫與說明 78
5.4 位段(bit-band)訪問方式編程閃爍點亮 LED83
5.4.1 位元段區與位元段別名區 83
5.4.2 位元段區位元組的位元的別名位址計算 84
5.4.3 新建工程和程序文件 84
5.4.4 程式的編寫與說明 86
第 6 章 按鍵控制 LED 與蜂鳴器的電路與程式設計實例. 89
6.1 按鍵、LED、蜂鳴器及相關電路89
6.1.1 按鍵開關產生的抖動及解決方法 89
6.1.2 發光二極體(LED) 90
6.1.3 蜂鳴器 . 93
6.2 按鍵輸入控制 LED 與蜂鳴器的電路與程式設計95
6.2.1 電路及控制功能 95
6.2.2 按鍵輸入控制 LED 和蜂鳴器的工程建立 . 96
6.2.3 LED 連接埠配置的程序及說明 97
6.2.4 蜂鳴器連接埠配置的程序及說明 97
6.2.5 按鍵連接埠配置、偵測的程序及說明 97
6.2.6 主程式文件及說明 98
第 7 章 中斷功能的使用與程式設計實例100
7.1 中斷基礎知識100
7.1.1 什麼是中斷 100
7.1.2 中斷源與中斷優先權 100
7.2 外部中斷 / 事件控制器(EXTI)介紹104
7.2.1 外部中斷 / 事件控制器(EXTI)的組成與說明 104
7.2.2 外部中斷 / 事件線