本書(shū)采用大量實(shí)例和程序逐行解說(shuō)的方式介紹了STM32單片機(jī)與C語(yǔ)言編程,主要內(nèi)容有STM32單片機(jī)入門(mén),單片機(jī)C語(yǔ)言基礎(chǔ),STM32單片機(jī)的硬件介紹,Keil軟件的使用與寄存器方式編程閃爍點(diǎn)亮LED,固件庫(kù)與庫(kù)函數(shù)方式編程閃爍點(diǎn)亮LED,按鍵控制LED和蜂鳴器的電路與編程實(shí)例,中斷功能的使用與編程實(shí)例,定時(shí)器的使用與編程實(shí)例,串口通信與編程實(shí)例,模/數(shù)轉(zhuǎn)換器(ADC)的使用與編程實(shí)例,數(shù)/模轉(zhuǎn)換器(DAC)的使用與編程實(shí)例,光敏、溫度傳感器的檢測(cè)電路與編程實(shí)例,紅外線遙控、實(shí)時(shí)時(shí)鐘(RTC)的使用與編程實(shí)例,RS485通信、CAN通信的原理與編程實(shí)例,F(xiàn)SMC、液晶顯示屏的使用與編程實(shí)例。
前言
第 1 章 STM32 單片機(jī)入門(mén).1
1.1 STM32 單片機(jī)簡(jiǎn)介1
1.1.1 什么是 ARM 1
1.1.2 什么是 STM32 單片機(jī) 2
1.1.3 STM32 單片機(jī)的型號(hào)含義 3
1.2 STM32 單片機(jī)的最小系統(tǒng)電路3
1.2.1 STM32F103C8T6 單片機(jī)介紹 3
1.2.2 STM32 單片機(jī)的最小系統(tǒng)電路 4
1.2.3 最小系統(tǒng)實(shí)驗(yàn)電路板 6
1.3 程序的編寫(xiě)與下載7
1.3.1 用 Keil MDK5 軟件編寫(xiě)和編譯程序 7
1.3.2 ST-Link 下載調(diào)試器及驅(qū)動(dòng)程序的安裝 8
1.3.3 下載調(diào)試器與 STM32 單片機(jī)的連接 10
1.3.4 連接設(shè)置與下載程序 10
1.3.5 單片機(jī)電路板通電測(cè)試 12
第 2 章 單片機(jī) C 語(yǔ)言基礎(chǔ). 13
2.1 關(guān)鍵字、常量與變量13
2.1.1 關(guān)鍵字 13
2.1.2 常量 13
2.1.3 變量 15
2.2 運(yùn)算符15
2.2.1 算術(shù)運(yùn)算符 16
2.2.2 關(guān)系運(yùn)算符 16
2.2.3 邏輯運(yùn)算符 17
2.2.4 位運(yùn)算符 17
2.2.5 復(fù)合賦值運(yùn)算符 18
2.3 數(shù)組、結(jié)構(gòu)體、枚舉和指針18
2.3.1 數(shù)組 18
2.3.2 結(jié)構(gòu)體 20
2.3.3 枚舉 22
2.3.4 指針 22
2.4 控制語(yǔ)句23
2.4.1 循環(huán)語(yǔ)句(while、do while、for 語(yǔ)句) 23
2.4.2 選擇語(yǔ)句(if、switch…case 語(yǔ)句) 25
第 3 章 STM32 單片機(jī)的硬件介紹 27
3.1 單片機(jī)內(nèi)部結(jié)構(gòu)與最小系統(tǒng)電路27
3.1.1 單片機(jī)的引腳功能與最小系統(tǒng)電路 27
3.1.2 單片機(jī)內(nèi)部結(jié)構(gòu) 27
3.2 存儲(chǔ)器的地址分配29
3.2.1 存儲(chǔ)器的劃分與地址分配 29
3.2.2 寄存器的命名 30
3.2.3 基地址與偏移地址 31
3.3 GPIO 端口電路32
3.3.1 GPIO 端口的基本電路結(jié)構(gòu) 32
3.3.2 工作在輸入模式時(shí)的電路原理 32
3.3.3 工作在輸出模式時(shí)的電路原理 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 端口輸入數(shù)據(jù)寄存器(GPIOx_IDR,x=A~G) 35
3.4.4 端口輸出數(shù)據(jù)寄存器(GPIOx_ODR,x=A~G) 36
3.4.5 端口置位 / 復(fù)位寄存器(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 時(shí)鐘、復(fù)位及相關(guān)寄存器38
3.5.1 時(shí)鐘信號(hào)的種類(lèi)與分配 38
3.5.2 時(shí)鐘控制寄存器(RCC_CR) 40
3.5.3 時(shí)鐘配置寄存器(RCC_CFGR) 41
3.5.4 APB2 外設(shè)復(fù)位寄存器(RCC_APB2RSTR) 43
3.5.5 APB1 外設(shè)復(fù)位寄存器(RCC_APB1RSTR) 44
3.5.6 AHB 外設(shè)時(shí)鐘使能寄存器(RCC_AHBENR) 45
3.5.7 APB2 外設(shè)時(shí)鐘使能寄存器(RCC_APB2ENR) 46
3.5.8 APB1 外設(shè)時(shí)鐘使能寄存器(RCC_APB1ENR) 48
3.5.9 控制 / 狀態(tài)寄存器(RCC_CSR) 49
第 4 章 Keil 軟件的使用與寄存器方式編程閃爍點(diǎn)亮 LED. 51
4.1 Keil MDK 軟件和芯片包的安裝51
4.1.1 Keil MDK5 軟件的安裝 51
4.1.2 芯片包的安裝 . 53
4.1.3 軟件的啟動(dòng) 54
4.2 創(chuàng)建項(xiàng)目工程并導(dǎo)入程序文件54
4.2.1 創(chuàng)建項(xiàng)目文件夾 54
4.2.2 查找并復(fù)制啟動(dòng)文件 55
4.2.3 新建工程 56
4.2.4 新建程序文件 57
4.2.5 將程序文件導(dǎo)入工程 . 58
4.3 用直接操作寄存器的方式編程閃爍點(diǎn)亮 LED58
4.3.1 編寫(xiě)頭文件(.h 文件) 58
4.3.2 頭文件的程序代碼說(shuō)明 59
4.3.3 主程序文件(main.c)的編寫(xiě) 61
4.3.4 主程序的程序代碼說(shuō)明 62
4.3.5 啟動(dòng)文件說(shuō)明 63
4.3.6 編譯程序 64
第 5 章 固件庫(kù)與庫(kù)函數(shù)方式編程閃爍點(diǎn)亮 LED 65
5.1 STM32 固件庫(kù)介紹65
5.1.1 固件庫(kù)的組成 65
5.1.2 固件庫(kù)中一些重要文件說(shuō)明 65
5.1.3 固件庫(kù)幫助文件的使用 67
5.2 庫(kù)函數(shù)方式編程模板的創(chuàng)建68
5.2.1 創(chuàng)建模板文件夾并復(fù)制需要的文件 68
5.2.2 創(chuàng)建工程 69
5.2.3 配置工程 72
5.2.4 編寫(xiě)主程序模板 75
5.3 庫(kù)函數(shù)方式閃爍點(diǎn)亮 LED 的工程創(chuàng)建與程序編寫(xiě) 76
5.3.1 利用庫(kù)函數(shù)方式編程模板創(chuàng)建工程 . 76
5.3.2 在工程中新建一些文件 76
5.3.3 程序的編寫(xiě)與說(shuō)明 78
5.4 位段(bit-band)訪問(wèn)方式編程閃爍點(diǎn)亮 LED83
5.4.1 位段區(qū)與位段別名區(qū) 83
5.4.2 位段區(qū)字節(jié)的位的別名地址計(jì)算 84
5.4.3 新建工程和程序文件 84
5.4.4 程序的編寫(xiě)與說(shuō)明 86
第 6 章 按鍵控制 LED 和蜂鳴器的電路與編程實(shí)例. 89
6.1 按鍵、LED、蜂鳴器及相關(guān)電路89
6.1.1 按鍵開(kāi)關(guān)產(chǎn)生的抖動(dòng)及解決方法 89
6.1.2 發(fā)光二極管(LED) 90
6.1.3 蜂鳴器 . 93
6.2 按鍵輸入控制 LED 和蜂鳴器的電路與編程95
6.2.1 電路及控制功能 95
6.2.2 按鍵輸入控制 LED 和蜂鳴器的工程創(chuàng)建 . 96
6.2.3 LED 端口配置的程序及說(shuō)明 97
6.2.4 蜂鳴器端口配置的程序及說(shuō)明 97
6.2.5 按鍵端口配置、檢測(cè)的程序及說(shuō)明 97
6.2.6 主程序文件及說(shuō)明 98
第 7 章 中斷功能的使用與編程實(shí)例100
7.1 中斷基礎(chǔ)知識(shí)100
7.1.1 什么是中斷 100
7.1.2 中斷源與中斷優(yōu)先級(jí) 100
7.2 外部中斷 / 事件控制器(EXTI)介紹104
7.2.1 外部中斷 / 事件控制器(EXTI)的組成及說(shuō)明 104
7.2.2 外部中斷 / 事件線