本書以STM32系列32位Flash MCU為例,以“一切從簡單開始”為宗旨,以直接操作寄存器為設(shè)計方法,介紹了ARM Cortex-M3系統(tǒng)的設(shè)計與實現(xiàn)。
全書共10章:第1章簡單介紹STM32 MCU和SysTick的結(jié)構(gòu),第2章以一個簡單的嵌入式系統(tǒng)設(shè)計為例詳細介紹SysTick和GPIO的應(yīng)用設(shè)計,第3、4、7章分別介紹USART、SPI和I2C等串行接口的結(jié)構(gòu)和設(shè)計實例,第5、6章分別介紹TIM和ADC的結(jié)構(gòu)和設(shè)計實例,第8、9章分別介紹NVIC和DMA的結(jié)構(gòu)和設(shè)計實例,第10章以實時鐘系統(tǒng)設(shè)計為例介紹STM32 MCU系統(tǒng)的設(shè)計與實現(xiàn)。
北方工業(yè)大學(xué)
第1章 STM32 MCU簡介 1
1.1 STM32 MCU結(jié)構(gòu) 1
1.2 STM32 MCU存儲器映象 3
1.3 STM32 MCU系統(tǒng)時鐘樹 4
1.4 Cortex-M3簡介 9
第2章 通用并行接口GPIO 12
2.1 GPIO結(jié)構(gòu)及寄存器說明 12
2.2 GPIO設(shè)計實例 14
2.2.1 直接操作寄存器軟件設(shè)計 14
2.2.2 使用庫函數(shù)范例程序(V2.0.1) 29
2.2.3 用GPIO控制LCD 37
第3章 通用同步/異步收發(fā)器接口USART 44
3.1 UART簡介 44
3.2 USART結(jié)構(gòu)及寄存器說明 46
3.3 USART設(shè)計實例 50 第1章 STM32 MCU簡介 1
1.1 STM32 MCU結(jié)構(gòu) 1
1.2 STM32 MCU存儲器映象 3
1.3 STM32 MCU系統(tǒng)時鐘樹 4
1.4 Cortex-M3簡介 9
第2章 通用并行接口GPIO 12
2.1 GPIO結(jié)構(gòu)及寄存器說明 12
2.2 GPIO設(shè)計實例 14
2.2.1 直接操作寄存器軟件設(shè)計 14
2.2.2 使用庫函數(shù)范例程序(V2.0.1) 29
2.2.3 用GPIO控制LCD 37
第3章 通用同步/異步收發(fā)器接口USART 44
3.1 UART簡介 44
3.2 USART結(jié)構(gòu)及寄存器說明 46
3.3 USART設(shè)計實例 50
3.3.1 USART基本功能程序設(shè)計 50
3.3.2 與計算機通信程序設(shè)計 51
3.3.3 用printf()實現(xiàn)通信程序設(shè)計 56
第4章 串行設(shè)備接口SPI 58
4.1 SPI結(jié)構(gòu)及寄存器說明 58
4.2 SPI設(shè)計實例 61
4.2.1 SPI基本功能程序設(shè)計 62
4.2.2 SPI環(huán)回程序設(shè)計 63
4.2.3 用SPI控制LCD 65
第5章 定時器TIM 68
5.1 TIM結(jié)構(gòu)及寄存器說明 68
5.2 TIM設(shè)計實例 75
5.2.1 1s定時程序設(shè)計 75
5.2.2 矩形波輸出程序設(shè)計 78
5.2.3 矩形波測量程序設(shè)計 79
第6章 模/數(shù)轉(zhuǎn)換器ADC 82
6.1 ADC結(jié)構(gòu)及寄存器說明 82
6.2 ADC設(shè)計實例 88
6.2.1 用ADC1規(guī)則通道實現(xiàn)外部輸入模擬信號的模數(shù)轉(zhuǎn)換 89
6.2.2 用ADC1注入通道實現(xiàn)內(nèi)部溫度傳感器的溫度測量 91
第7章 內(nèi)部集成電路總線接口I2C 94
7.1 I2C結(jié)構(gòu)及寄存器說明 94
7.2 I2C設(shè)計實例 98
7.2.1 24C32A簡介 98
7.2.2 24C32A程序設(shè)計 99
7.2.3 24C32A程序應(yīng)用 101
第8章 嵌套向量中斷控制器NVIC 104
8.1 NVIC簡介 104
8.2 EXTI中斷 108
8.3 USART中斷 111
8.4 TIM中斷 112
8.5 ADC中斷 113
第9章 直接存儲器存取DMA 115
9.1 DMA簡介 115
9.2 USART的DMA操作 118
9.3 TIM的DMA操作 119
9.4 ADC的DMA操作 120
第10章 實時鐘系統(tǒng)設(shè)計 122
10.1 系統(tǒng)結(jié)構(gòu) 122
10.2 程序設(shè)計 124
10.2.1 實時鐘程序設(shè)計 124
10.2.2 按鍵和顯示程序設(shè)計 126
10.2.3 系統(tǒng)程序設(shè)計 132
10.3 程序?qū)崿F(xiàn) 133
附錄A 開發(fā)板簡介 136
附錄B 調(diào)試器簡介 144
附錄C ASCII碼表 146
附錄D C語言運算符 147
附錄E 實驗指導(dǎo) 148
實驗1 設(shè)計入門 148
實驗2 LCD實驗 149
實驗3 USART實驗 150
實驗4 SPI實驗 152
實驗5 TIM實驗 154
實驗6 ADC實驗 156
實驗7 I2C實驗 158
實驗8 中斷實驗 159
實驗9 DMA實驗 160
實驗10 實時鐘實驗 161
參考文獻 162
前 言
ARM Cortex-M3處理器樹立了全球微控制器的標準,40多個ARM合作伙伴已獲得這些處理器的使用許可,其中包括STMicroelectronics、NXP Semiconductors、Texas Instruments和Toshiba等領(lǐng)先供應(yīng)商。通過采用標準處理器,ARM合作伙伴可制造出具有統(tǒng)一架構(gòu)的設(shè)備,同時能夠?qū)W⒂诟髯圆町惢脑O(shè)計,幫助開發(fā)人員滿足不同的嵌入式應(yīng)用需要。
STM32系列32位Flash MCU是STMicroelectronics開發(fā)的基于ARM Cortex-M3系列的MCU,包括一系列32位產(chǎn)品,具有高性能、實時功能、數(shù)字信號處理、低功耗與低電壓操作特性,同時還保持了集成度高和易于開發(fā)的特點。
本書以STM32系列32位Flash MCU為例,以“一切從簡單開始”為宗旨,以直接操作寄存器為設(shè)計方法,介紹ARM Cortex-M3系統(tǒng)的設(shè)計與實現(xiàn)。
全書分為10章,從一個簡單的嵌入式系統(tǒng)設(shè)計開始,依次介紹SysTick和GPIO,USART、SPI和I2C等串行接口,TIM和ADC等片內(nèi)設(shè)備,以及NVIC和DMA的結(jié)構(gòu)和設(shè)計實例,最后以實時鐘系統(tǒng)設(shè)計為例介紹STM32 MCU系統(tǒng)的設(shè)計與實現(xiàn)。
第1章簡單介紹STM32 MCU和SysTick的結(jié)構(gòu),第2章在簡單介紹GPIO結(jié)構(gòu)的基礎(chǔ)上,以一個簡單的嵌入式系統(tǒng)設(shè)計為例詳細介紹SysTick和GPIO的應(yīng)用設(shè)計。簡單系統(tǒng)以自制簡單實驗系統(tǒng)為硬件平臺,軟件設(shè)計采用直接操作寄存器和使用庫函數(shù)兩種方法,在直接操作寄存器軟件設(shè)計中詳細地介紹了用Keil新建工程、新建添加C語言源文件、生成目標程序文件、調(diào)試和運行目標程序的方法和步驟,在使用庫函數(shù)軟件設(shè)計中對兩種方法進行了比較。最后介紹了用GPIO控制LCD的程序設(shè)計和實現(xiàn)方法。
第3、4、7章分別介紹USART、SPI和I2C等串行接口的結(jié)構(gòu)和設(shè)計實例。USART是最常用的串行接口,設(shè)計實例實現(xiàn)了MCU與計算機的串行通信。SPI的編程操作和USART相似,設(shè)計實例實現(xiàn)了SPI的環(huán)回和用SPI控制LCD。I2C的編程操作相對復(fù)雜一些,設(shè)計實例實現(xiàn)了通過I2C讀寫2線串行EEPROM。
第5、6章分別介紹TIM和ADC的結(jié)構(gòu)和設(shè)計實例,TIM設(shè)計實例實現(xiàn)了1s定時程序設(shè)計、矩形波輸出程序設(shè)計和矩形波測量程序設(shè)計等,ADC設(shè)計實例用ADC規(guī)則通道實現(xiàn)了外部輸入模擬信號的模數(shù)轉(zhuǎn)換和用ADC注入通道實現(xiàn)內(nèi)部溫度傳感器的溫度測量等。
第8、9章分別介紹NVIC和DMA的結(jié)構(gòu)和設(shè)計實例。中斷和DMA是高效的數(shù)據(jù)傳送控制方式,對前面介紹的接口和設(shè)備數(shù)據(jù)傳送查詢方式稍做修改即可實現(xiàn)中斷功能,再結(jié)合DMA可以實現(xiàn)數(shù)據(jù)的批量傳送。
第10章以實時鐘系統(tǒng)設(shè)計為例介紹STM32 MCU系統(tǒng)的設(shè)計與實現(xiàn),包括系統(tǒng)結(jié)構(gòu)、程序設(shè)計和程序?qū)崿F(xiàn)等。
本書所有設(shè)計程序均為原創(chuàng),并在自制硬件和Keil 4.12環(huán)境下測試通過。
由于作者水平所限,書中難免會有不妥之處,敬請廣大讀者批評指正。作者聯(lián)系方式:E-mail:cortex_m3@126.com。
編者
2013年10月