本書以STM32系列32位Flash MCU為例,以“一切從簡單開始”為宗旨,以直接操作寄存器為設計方法,介紹了ARM Cortex-M3系統的設計與實現。
全書共10章:第1章簡單介紹STM32 MCU和SysTick的結構,第2章以一個簡單的嵌入式系統設計為例詳細介紹SysTick和GPIO的應用設計,第3、4、7章分別介紹USART、SPI和I2C等串行接口的結構和設計實例,第5、6章分別介紹TIM和ADC的結構和設計實例,第8、9章分別介紹NVIC和DMA的結構和設計實例,第10章以實時鐘系統設計為例介紹STM32 MCU系統的設計與實現。
北方工業大學
第1章 STM32 MCU簡介 1
1.1 STM32 MCU結構 1
1.2 STM32 MCU存儲器映象 3
1.3 STM32 MCU系統時鐘樹 4
1.4 Cortex-M3簡介 9
第2章 通用并行接口GPIO 12
2.1 GPIO結構及寄存器說明 12
2.2 GPIO設計實例 14
2.2.1 直接操作寄存器軟件設計 14
2.2.2 使用庫函數范例程序(V2.0.1) 29
2.2.3 用GPIO控制LCD 37
第3章 通用同步/異步收發器接口USART 44
3.1 UART簡介 44
3.2 USART結構及寄存器說明 46
3.3 USART設計實例 50 第1章 STM32 MCU簡介 1
1.1 STM32 MCU結構 1
1.2 STM32 MCU存儲器映象 3
1.3 STM32 MCU系統時鐘樹 4
1.4 Cortex-M3簡介 9
第2章 通用并行接口GPIO 12
2.1 GPIO結構及寄存器說明 12
2.2 GPIO設計實例 14
2.2.1 直接操作寄存器軟件設計 14
2.2.2 使用庫函數范例程序(V2.0.1) 29
2.2.3 用GPIO控制LCD 37
第3章 通用同步/異步收發器接口USART 44
3.1 UART簡介 44
3.2 USART結構及寄存器說明 46
3.3 USART設計實例 50
3.3.1 USART基本功能程序設計 50
3.3.2 與計算機通信程序設計 51
3.3.3 用printf()實現通信程序設計 56
第4章 串行設備接口SPI 58
4.1 SPI結構及寄存器說明 58
4.2 SPI設計實例 61
4.2.1 SPI基本功能程序設計 62
4.2.2 SPI環回程序設計 63
4.2.3 用SPI控制LCD 65
第5章 定時器TIM 68
5.1 TIM結構及寄存器說明 68
5.2 TIM設計實例 75
5.2.1 1s定時程序設計 75
5.2.2 矩形波輸出程序設計 78
5.2.3 矩形波測量程序設計 79
第6章 模/數轉換器ADC 82
6.1 ADC結構及寄存器說明 82
6.2 ADC設計實例 88
6.2.1 用ADC1規則通道實現外部輸入模擬信號的模數轉換 89
6.2.2 用ADC1注入通道實現內部溫度傳感器的溫度測量 91
第7章 內部集成電路總線接口I2C 94
7.1 I2C結構及寄存器說明 94
7.2 I2C設計實例 98
7.2.1 24C32A簡介 98
7.2.2 24C32A程序設計 99
7.2.3 24C32A程序應用 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章 實時鐘系統設計 122
10.1 系統結構 122
10.2 程序設計 124
10.2.1 實時鐘程序設計 124
10.2.2 按鍵和顯示程序設計 126
10.2.3 系統程序設計 132
10.3 程序實現 133
附錄A 開發板簡介 136
附錄B 調試器簡介 144
附錄C ASCII碼表 146
附錄D C語言運算符 147
附錄E 實驗指導 148
實驗1 設計入門 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等領先供應商。通過采用標準處理器,ARM合作伙伴可制造出具有統一架構的設備,同時能夠專注于各自差異化的設計,幫助開發人員滿足不同的嵌入式應用需要。
STM32系列32位Flash MCU是STMicroelectronics開發的基于ARM Cortex-M3系列的MCU,包括一系列32位產品,具有高性能、實時功能、數字信號處理、低功耗與低電壓操作特性,同時還保持了集成度高和易于開發的特點。
本書以STM32系列32位Flash MCU為例,以“一切從簡單開始”為宗旨,以直接操作寄存器為設計方法,介紹ARM Cortex-M3系統的設計與實現。
全書分為10章,從一個簡單的嵌入式系統設計開始,依次介紹SysTick和GPIO,USART、SPI和I2C等串行接口,TIM和ADC等片內設備,以及NVIC和DMA的結構和設計實例,最后以實時鐘系統設計為例介紹STM32 MCU系統的設計與實現。
第1章簡單介紹STM32 MCU和SysTick的結構,第2章在簡單介紹GPIO結構的基礎上,以一個簡單的嵌入式系統設計為例詳細介紹SysTick和GPIO的應用設計。簡單系統以自制簡單實驗系統為硬件平臺,軟件設計采用直接操作寄存器和使用庫函數兩種方法,在直接操作寄存器軟件設計中詳細地介紹了用Keil新建工程、新建添加C語言源文件、生成目標程序文件、調試和運行目標程序的方法和步驟,在使用庫函數軟件設計中對兩種方法進行了比較。最后介紹了用GPIO控制LCD的程序設計和實現方法。
第3、4、7章分別介紹USART、SPI和I2C等串行接口的結構和設計實例。USART是最常用的串行接口,設計實例實現了MCU與計算機的串行通信。SPI的編程操作和USART相似,設計實例實現了SPI的環回和用SPI控制LCD。I2C的編程操作相對復雜一些,設計實例實現了通過I2C讀寫2線串行EEPROM。
第5、6章分別介紹TIM和ADC的結構和設計實例,TIM設計實例實現了1s定時程序設計、矩形波輸出程序設計和矩形波測量程序設計等,ADC設計實例用ADC規則通道實現了外部輸入模擬信號的模數轉換和用ADC注入通道實現內部溫度傳感器的溫度測量等。
第8、9章分別介紹NVIC和DMA的結構和設計實例。中斷和DMA是高效的數據傳送控制方式,對前面介紹的接口和設備數據傳送查詢方式稍做修改即可實現中斷功能,再結合DMA可以實現數據的批量傳送。
第10章以實時鐘系統設計為例介紹STM32 MCU系統的設計與實現,包括系統結構、程序設計和程序實現等。
本書所有設計程序均為原創,并在自制硬件和Keil 4.12環境下測試通過。
由于作者水平所限,書中難免會有不妥之處,敬請廣大讀者批評指正。作者聯系方式:E-mail:cortex_m3@126.com。
編者
2013年10月