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