STM32固件庫使用手冊(cè)的中文翻譯.pdf_第1頁
STM32固件庫使用手冊(cè)的中文翻譯.pdf_第2頁
STM32固件庫使用手冊(cè)的中文翻譯.pdf_第3頁
STM32固件庫使用手冊(cè)的中文翻譯.pdf_第4頁
STM32固件庫使用手冊(cè)的中文翻譯.pdf_第5頁
已閱讀5頁,還剩62頁未讀 繼續(xù)免費(fèi)閱讀

STM32固件庫使用手冊(cè)的中文翻譯.pdf.pdf 免費(fèi)下載

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) UM0427 用戶手冊(cè)用戶手冊(cè) 32位基于位基于ARM微控制器微控制器STM32F101xx與與STM32F103xx 固件函數(shù)庫固件函數(shù)庫 介紹介紹 本手冊(cè)介紹了32位基于ARM微控制器STM32F101xx與STM32F103xx的固件函數(shù)庫 該函數(shù)庫是一個(gè)固件函數(shù)包 它由程序 數(shù)據(jù)結(jié)構(gòu)和宏組成 包括了微控制器所有外設(shè)的 性能特征 該函數(shù)庫還包括每一個(gè)外設(shè)的驅(qū)動(dòng)描述和應(yīng)用實(shí)例 通過使用本固件函數(shù)庫 無需深入掌握細(xì)節(jié) 用戶也可以輕松應(yīng)用每一個(gè)外設(shè) 因此 使用本固態(tài)函數(shù)庫可以大大 減少用戶的程序編寫時(shí)間 進(jìn)而降低開發(fā)成本 每個(gè)外設(shè)驅(qū)動(dòng)都由一組函數(shù)組成 這組函數(shù)覆蓋了該外設(shè)所有功能 每個(gè)器件的開發(fā)都由 一個(gè)通用API application programming interface 應(yīng)用編程界面 驅(qū)動(dòng) API對(duì)該驅(qū)動(dòng)程序的 結(jié)構(gòu) 函數(shù)和參數(shù)名稱都進(jìn)行了標(biāo)準(zhǔn)化 所有的驅(qū)動(dòng)源代碼都符合 Strict ANSI C 標(biāo)準(zhǔn) 項(xiàng)目于范例文件符合擴(kuò)充ANSI C標(biāo)準(zhǔn) 我們已經(jīng)把驅(qū)動(dòng)源代碼文檔化 他們同時(shí)兼容MISRA C 2004標(biāo)準(zhǔn) 根據(jù)需要 我們可以 提供兼容矩陣 由于整個(gè)固態(tài)函數(shù)庫按照 Strict ANSI C 標(biāo)準(zhǔn)編寫 它不受不同開發(fā)環(huán) 境的影響 僅對(duì)話啟動(dòng)文件取決于開發(fā)環(huán)境 該固態(tài)函數(shù)庫通過校驗(yàn)所有庫函數(shù)的輸入值來實(shí)現(xiàn)實(shí)時(shí)錯(cuò)誤檢測(cè) 該動(dòng)態(tài)校驗(yàn)提高了軟件的 魯棒性 實(shí)時(shí)檢測(cè)適合于用戶應(yīng)用程序的開發(fā)和調(diào)試 但這會(huì)增加了成本 可以在最終應(yīng)用 程序代碼中移去 以優(yōu)化代碼大小和執(zhí)行速度 想要了解更多細(xì)節(jié) 請(qǐng)參閱Section 2 5 因?yàn)樵摴碳焓峭ㄓ玫?并且包括了所有外設(shè)的功能 所以應(yīng)用程序代碼的大小和執(zhí)行速度 可能不是最優(yōu)的 對(duì)大多數(shù)應(yīng)用程序來說 用戶可以直接使用之 對(duì)于那些在代碼大小和執(zhí) 行速度方面有嚴(yán)格要求的應(yīng)用程序 該固件庫驅(qū)動(dòng)程序可以作為如何設(shè)置外設(shè)的一份參考資 料 根據(jù)實(shí)際需求對(duì)其進(jìn)行調(diào)整 此份固件庫用戶手冊(cè)的整體架構(gòu)如下 定義 文檔約定和固態(tài)函數(shù)庫規(guī)則 固態(tài)函數(shù)庫概述 包的內(nèi)容 庫的架構(gòu) 安裝指南 庫使用實(shí)例 固件庫具體描述 設(shè)置架構(gòu)和每個(gè)外設(shè)的函數(shù) STM32F101xx和STM32F103xx在整個(gè)文檔中被寫作STM32F101x 文檔和庫規(guī)范 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 1 文檔和庫規(guī)范文檔和庫規(guī)范 本用戶手冊(cè)和固態(tài)函數(shù)庫按照以下章節(jié)所描述的規(guī)范編寫 1 1縮寫縮寫 Table 1 本文檔所有縮寫定義本文檔所有縮寫定義 縮寫縮寫外設(shè)外設(shè) 單元單元 ADC模數(shù)轉(zhuǎn)換器 BKP備份寄存器 CAN控制器局域網(wǎng)模塊 DMA直接內(nèi)存存取控制器 EXTI外部中斷事件控制器 FLASH閃存存儲(chǔ)器 GPIO通用輸入輸出 I2C內(nèi)部集成電路 IWDG獨(dú)立看門狗 NVIC嵌套中斷向量列表控制器 PWR電源 功耗控制 RCC復(fù)位與時(shí)鐘控制器 RTC實(shí)時(shí)時(shí)鐘 SPI串行外設(shè)接口 SysTick系統(tǒng)嘀嗒定時(shí)器 TIM通用定時(shí)器 TIM1高級(jí)控制定時(shí)器 USART通用同步異步接收發(fā)射端 WWDG窗口看門狗 1 2命名規(guī)則命名規(guī)則 固態(tài)函數(shù)庫遵從以下命名規(guī)則 PPP表示任一外設(shè)縮寫 例如 ADC 更多縮寫相關(guān)信息參閱章節(jié)1 1 縮寫 系統(tǒng) 源程序文件和頭文件命名都以 stm32f10 x 作為開頭 例如 stm32f10 x conf h 常量?jī)H被應(yīng)用于一個(gè)文件的 定義于該文件中 被應(yīng)用于多個(gè)文件的 在對(duì)應(yīng)頭文件中定 義 所有常量都由英文字母大寫書寫 寄存器作為常量處理 他們的命名都由英文字母大寫書寫 在大多數(shù)情況下 他們采用與 縮寫規(guī)范與本用戶手冊(cè)一致 外設(shè)函數(shù)的命名以該外設(shè)的縮寫加下劃線為開頭 每個(gè)單詞的第一個(gè)字母都由英文字母大 文檔和庫規(guī)范 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 寫書寫 例如 SPI SendData 在函數(shù)名中 只允許存在一個(gè)下劃線 用以分隔外設(shè)縮寫 和函數(shù)名的其它部分 名為PPP Init的函數(shù) 其功能是根據(jù)PPP InitTypeDef中指定的參數(shù) 初始化外設(shè)PPP 例 如TIM Init 名為PPP DeInit的函數(shù) 其功能為復(fù)位外設(shè)PPP的所有寄存器至缺省值 例如TIM DeInit 名為PPP StructInit的函數(shù) 其功能為通過設(shè)置PPP InitTypeDef 結(jié)構(gòu)中的各種參數(shù)來定義 外設(shè)的功能 例如 USART StructInit 名為PPP Cmd的函數(shù) 其功能為使能或者失能外設(shè)PPP 例如 SPI Cmd 名為PPP ITConfig的函數(shù) 其功能為使能或者失能來自外設(shè)PPP某中斷源 例如 RCC ITConfig 名為PPP DMAConfig的函數(shù) 其功能為使能或者失能外設(shè)PPP的DMA接口 例如 TIM1 DMAConfig 用以配置外設(shè)功能的函數(shù) 總是以字符串 Config 結(jié)尾 例如GPIO PinRemapConfig 名為PPP GetFlagStatus的函數(shù) 其功能為檢查外設(shè)PPP某標(biāo)志位被設(shè)置與否 例如 I2C GetFlagStatus 名為PPP ClearFlag的函數(shù) 其功能為清除外設(shè)PPP標(biāo)志位 例如 I2C ClearFlag 名為PPP GetITStatus的函數(shù) 其功能為判斷來自外設(shè)PPP的中斷發(fā)生與否 例如 I2C GetITStatus 名為PPP ClearITPendingBit的函數(shù) 其功能為清除外設(shè)PPP中斷待處理標(biāo)志位 例如 I2C ClearITPendingBit 1 3編碼規(guī)則編碼規(guī)則 本章節(jié)描述了固態(tài)函書庫的編碼規(guī)則 1 3 1變量變量 固態(tài)函數(shù)庫定義了24個(gè)變量類型 他們的類型和大小是固定的 在文件stm32f10 x type h 中我們定義了這些變量 typedef signed long s32 typedef signed short s16 文檔和庫規(guī)范 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) typedef signed char s8 typedef signed long const sc32 Read Only typedef signed short const sc16 Read Only typedef signed char const sc8 Read Only typedef volatile signed long vs32 typedef volatile signed short vs16 typedef volatile signed char vs8 typedef volatile signed long const vsc32 Read Only typedef volatile signed short const vsc16 Read Only typedef volatile signed char const vsc8 Read Only typedef unsigned long u32 typedef unsigned short u16 typedef unsigned char u8 typedef unsigned long const uc32 Read Only typedef unsigned short const uc16 Read Only typedef unsigned char const uc8 Read Only typedef volatile unsigned long vu32 typedef volatile unsigned short vu16 typedef volatile unsigned char vu8 typedef volatile unsigned long const vuc32 Read Only typedef volatile unsigned short const vuc16 Read Only typedef volatile unsigned char const vuc8 Read Only 1 3 2布爾型布爾型 在文件stm32f10 x type h中 布爾形變量被定義如下 Typedefenum FALSE 0 TRUE FALSE bool 1 3 3 標(biāo)志位狀態(tài)類型標(biāo)志位狀態(tài)類型 在文件stm32f10 x type h中 我們定義標(biāo)志位類型 FlagStatus type 的2個(gè)可能值為 設(shè)置 與 重置 SET or RESET typedefenum RESET 0 SET RESET FlagStatus 文檔和庫規(guī)范 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 1 3 4 功能狀態(tài)類型功能狀態(tài)類型 在文件stm32f10 x type h中 我們定義功能狀態(tài)類型 FunctionalState type 的2個(gè)可能值 為 使能 與 失能 ENABLE or DISABLE typedefenum DISABLE 0 ENABLE DISABLE FunctionalState 1 3 5 錯(cuò)誤狀態(tài)類型錯(cuò)誤狀態(tài)類型 在文件stm32f10 x type h中 我們錯(cuò)誤狀態(tài)類型類型 ErrorStatus type 的2個(gè)可能值為 成 功 與 出錯(cuò) SUCCESS or ERROR Typedefenum ERROR 0 SUCCESS ERROR ErrorStatus 1 3 6 外設(shè)外設(shè) 用戶可以通過指向各個(gè)外設(shè)的指針訪問各外設(shè)的控制寄存器 這些指針?biāo)赶虻臄?shù)據(jù)結(jié)構(gòu) 與各個(gè)外設(shè)的控制寄存器布局一一對(duì)應(yīng) 外設(shè)控制寄存器結(jié)構(gòu)外設(shè)控制寄存器結(jié)構(gòu) 文件stm32f10 x map h包含了所有外設(shè)控制寄存器的結(jié)構(gòu) 下例為SPI寄存器結(jié)構(gòu)的聲明 Serial Peripheral Interface typedefstruct vu16 CR1 u16 RESERVED0 vu16 CR2 u16 RESERVED1 vu16 SR u16 RESERVED2 vu16 DR u16 RESERVED3 vu16 CRCPR u16 RESERVED4 vu16 RXCRCR u16 RESERVED5 文檔和庫規(guī)范 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) vu16 TXCRCR u16 RESERVED6 SPI TypeDef 寄存器命名遵循上節(jié)的寄存器縮寫命名規(guī)則 RESERVEDi i為一個(gè)整數(shù)索引值 表示被 保留區(qū)域 外設(shè)聲明外設(shè)聲明 文件stm32f10 x map h包含了所有外設(shè)的聲明 下例為SPI外設(shè)的聲明 ifndef EXT Define EXT extern endif define PERIPH BASE u32 0 x40000000 define APB1PERIPH BASE PERIPH BASE define APB2PERIPH BASE PERIPH BASE 0 x10000 SPI2 Base Address definition define SPI2 BASE APB1PERIPH BASE 0 x3800 SPI2 peripheral declaration ifndefDEBUG ifdef SPI2 define SPI2 SPI TypeDef SPI2 BASE endif SPI2 else DEBUG ifdef SPI2 EXT SPI TypeDef SPI2 endif SPI2 endif DEBUG 如果用戶希望使用外設(shè)SPI 那么必須在文件stm32f10 x conf h中定義 SPI標(biāo)簽 通過定義標(biāo)簽 SPIn 用戶可以訪問外設(shè)SPIn的寄存器 例如 用戶必須在文件 stm32f10 x conf h中 定義 標(biāo)簽 SPI2 否則 是不 能訪 問SPI2 的 寄存 器的 在 文件 stm32f10 x conf h中 用戶可以按照下例定義標(biāo)簽 SPI 和 SPIn define SPI define SPI1 define SPI2 每個(gè)外設(shè)都有若干寄存器專門分配給標(biāo)志位 我們按照相應(yīng)的結(jié)構(gòu)定義這些寄存器 標(biāo)志 位的命名 同樣遵循上節(jié)的外設(shè)縮寫規(guī)范 以 PPP FLAG 開始 對(duì)于不同的外設(shè) 標(biāo)志 文檔和庫規(guī)范 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 位都被定義在相應(yīng)的文件stm32f10 x ppp h中 用戶想要進(jìn)入除錯(cuò) DEBUG 模式的話 必須在文件stm32f10 x conf h中定義標(biāo)簽DEBUG 這樣會(huì)在SRAM的外設(shè)結(jié)構(gòu)部分創(chuàng)建一個(gè)指針 因此我們可以簡(jiǎn)化除錯(cuò)過程 并且通過轉(zhuǎn) 儲(chǔ)外設(shè)獲得來獲得所有寄存器的狀態(tài) 在所有情況下 SPI2都是一個(gè)指向外設(shè)SPI2首地址 的指針 變量DEBUG可以仿照下例定義 define DEBUG 1 可以初始化DEBUG模式與文件stm32f10 x lib c中如下 ifdef DEBUG void debug void ifdef SPI2 SPI2 SPI TypeDef SPI2 BASE endif SPI2 endif DEBUG Note 1 當(dāng)用戶選擇DEBUG模式 宏assert param被擴(kuò)展 同時(shí)運(yùn)行時(shí)間檢查功能也在固 態(tài)函數(shù)庫代碼中被激活 2 進(jìn)入DEBUG模式會(huì)增大代碼的尺寸 降低代碼的運(yùn)行效率 因此 我們強(qiáng)烈建 議僅僅在除錯(cuò)的時(shí)候使用相應(yīng)代碼 在最終的應(yīng)用程序中 刪除它們 固件函數(shù)庫 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 2 固件函數(shù)庫固件函數(shù)庫 2 1壓縮包描述壓縮包描述 STM32F10 x固件函數(shù)庫被壓縮在一個(gè)zip文件中 解壓該文件會(huì)產(chǎn)生一個(gè)文件夾 STM32F10 xFWLib FWLib 包含如下所示的子文件夾 Figure 1 固件函數(shù)庫文件夾結(jié)構(gòu)固件函數(shù)庫文件夾結(jié)構(gòu) 2 1 1文件夾文件夾ExamplesExamples 文件夾Examples 對(duì)應(yīng)每一個(gè)STM32外設(shè) 都包含一個(gè)子文件夾 這些子文件夾包含了整 套文件 組成典型的例子 來示范如何使用對(duì)應(yīng)外設(shè) 這些文件有 readme txt 每個(gè)例子的簡(jiǎn)單描述和使用說明 stm32f10 x conf h 該頭文件設(shè)置了所有使用到的外設(shè) 由不同的 DEFINE 語句組成 stm32f10 x it c 該源文件包含了所有的中斷處理程序 如果未使用中斷 則所有的函數(shù)體 都為空 stm32f10 x it h 該頭文件包含了所有的中斷處理程序的原形 main c 例程代碼 注 所有的例程的使用 都不受不同軟件開發(fā)環(huán)境的影響 固件函數(shù)庫 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 2 1 2文件夾文件夾Library 文件夾Library包含組成固件函數(shù)庫核心的所有子文件夾和文件 子文件夾inc包含了固件函數(shù)庫所需的頭文件 用戶無需修改該文件夾 stm32f10 x type h 所有其他文件使用的通用數(shù)據(jù)類型和枚舉 stm32f10 x map h 外設(shè)存儲(chǔ)器映像和寄存器數(shù)據(jù)結(jié)構(gòu) stm32f10 x lib h 主頭文件夾 包含了其他頭文件 stm32f10 x ppp h 每個(gè)外設(shè)對(duì)應(yīng)一個(gè)頭文件 包含了該外設(shè)使用的函數(shù)原形 數(shù)據(jù) 結(jié)構(gòu)和枚舉 cortexm3 macro h 文件cortexm3 macro s對(duì)應(yīng)的頭文件 子文件夾src包含了固件函數(shù)庫所需的源文件 用戶無需修改該文件夾 stm32f10 x ppp c 每個(gè)外設(shè)對(duì)應(yīng)一個(gè)源文件 包含了該外設(shè)使用的函數(shù)體 stm32f10 x lib c 初始化所有外設(shè)的指針 注 所有代碼都按照Strict ANSI C標(biāo)準(zhǔn)書寫 都不受不同軟件開發(fā)環(huán)境的影響 2 1 3文件夾文件夾Project 文件夾Project包含了一個(gè)標(biāo)準(zhǔn)的程序項(xiàng)目模板 包括庫文件的編譯和所有用戶可修改的文 件 可用以建立新的工程 stm32f10 x conf h 項(xiàng)目配置頭文件 默認(rèn)為設(shè)置了所有的外設(shè) stm32f10 x it c 該源文件包含了所有的中斷處理程序 所有的函數(shù)體默認(rèn)為空 stm32f10 x it h 該頭文件包含了所有的中斷處理程序的原形 main c 主函數(shù)體 文件夾EWARM RVMDK RIDE 用于不同開發(fā)環(huán)境使用 詳情查詢各文件夾下的文件 readme txt 2 2固件函數(shù)庫文件描述固件函數(shù)庫文件描述 Table 2列舉和描述了固件函數(shù)庫使用的所有文件 固件函數(shù)庫的體系和文件相互包括的聯(lián)系表示在Figure 2中 每一個(gè)外設(shè)都有一個(gè)對(duì)應(yīng)的 源文件 stm32f10 x ppp c和一個(gè)對(duì)應(yīng)的頭文件 stm32f10 x ppp h 文件stm32f10 x ppp c包含了使用外設(shè)PPP所需的所有固件函數(shù) 提供所有外設(shè)一個(gè)存儲(chǔ)器 映像文件stm32f10 x map h 它包含了所有寄存器的聲明 既可以用于Debug模式也可以用 于release模式 頭文件stm32f10 x lib h包含了所有外設(shè)頭文件的頭文件 它是唯一一個(gè)用戶需要包括在自 己應(yīng)用中的文件 起到應(yīng)用和庫之間界面的作用 文件stm32f10 x conf h是唯一一個(gè)需要由用戶修改的文件 它作為應(yīng)用和庫之間的界面 指定了一系列參數(shù) 固件函數(shù)庫 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) Table 2 固件函數(shù)庫文件描述固件函數(shù)庫文件描述 文件名文件名描述描述 stm32f10 x conf h參數(shù)設(shè)置文件 起到應(yīng)用和庫之間界面的作用 用戶必須在運(yùn)行自己的程序前修改該文件 用戶可以利用模板使能或者失能外設(shè) 也可以修改外部晶振的參數(shù) 也可以是用該文件在編譯前使能 Debug 或者 release 模式 main c主函數(shù)體示例 stm32f10 x it h頭文件 包含所有中斷處理函數(shù)原形 stm32f10 x it c外設(shè)中斷函數(shù)文件 用戶可以加入自己的中斷程序代碼 對(duì)于指向同一個(gè)中斷向量的多個(gè)不同中斷請(qǐng) 求 可以利用函數(shù)通過判斷外設(shè)的中斷標(biāo)志位來確定準(zhǔn)確的中斷源 固件函數(shù)庫 提供了這些函數(shù)的名稱 stm32f10 x lib h包含了所有外設(shè)的頭文件的頭文件 它是唯一一個(gè)用戶需要包括在自己應(yīng)用中的文件 起到應(yīng)用和庫之間界面的作用 stm32f10 x lib cDebug 模式初始化文件 它包括多個(gè)指針的定義 每個(gè)指針指向特定外設(shè)的首地址 以及在 Debug 模式被 使能時(shí) 被調(diào)用的函數(shù)的定義 stm32f10 x map h該文件包含了存儲(chǔ)器映像和所有寄存器物理地址的聲明 既可以用于 Debug 模式 也可以用于 release 模式 所有外設(shè)都使用該文件 stm32f10 x type h通用聲明文件 包含所有外設(shè)驅(qū)動(dòng)使用的通用類型和常數(shù) stm32f10 x ppp c由 C 語言編寫的外設(shè) PPP 的驅(qū)動(dòng)源程序文件 stm32f10 x ppp h外設(shè) PPP 的頭文件 包含外設(shè) PPP 函數(shù)的定義 和這些函數(shù)使用的變量 cortexm3 macro h文件 cortexm3 macro s 的頭文件 cortexm3 macro sCortex M3 內(nèi)核特殊指令的指令包裝 固件函數(shù)庫 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) Figure 2 固件函數(shù)庫文件體系結(jié)構(gòu)固件函數(shù)庫文件體系結(jié)構(gòu) 2 3 外設(shè)的初始化和設(shè)置外設(shè)的初始化和設(shè)置 本節(jié)按步驟描述了如何初始化和設(shè)置任意外設(shè) 這里PPP代表任意外設(shè) 1 在主應(yīng)用文件中 聲明一個(gè)結(jié)構(gòu)PPP InitTypeDef 例如 PPP InitTypeDef PPP InitStructure 這里PPP InitStructure是一個(gè)位于內(nèi)存中的工作變量 用來初始化一個(gè)或者多個(gè)外設(shè) PPP 2 為變量PPP InitStructure的各個(gè)結(jié)構(gòu)成員填入允許的值 可以采用以下2種方式 a 按照如下程序設(shè)置整個(gè)結(jié)構(gòu)體 PPP InitStructure member1 val1 PPP InitStructure member2 val2 PPP InitStructure memberN valN where N is the number of the structure members 以上步驟可以合并在同一行里 用以優(yōu)化代碼大小 PPP InitTypeDef PPP InitStructure val1 val2 valN b 僅設(shè)置結(jié)構(gòu)體中的部分成員 這種情況下 用戶應(yīng)當(dāng)首先調(diào)用函數(shù)PPP SturcInit 來 初始化變量PPP InitStructure 然后再修改其中需要修改的成員 這樣可以保證其他成員的 值 多為缺省值 被正確填入 PPP StructInit PP InitStructure memberX valX PPP InitStructure memberY valY where X and Y are the members the user wants to configure 固件函數(shù)庫 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 3 調(diào)用函數(shù)PPP Init 來初始化外設(shè)PPP 4 在這一步 外設(shè)PPP已被初始化 可以調(diào)用函數(shù)PPP Cmd 來使能之 PPP Cmd PPP ENABLE 可以通過調(diào)用一系列函數(shù)來使用外設(shè) 每個(gè)外設(shè)都擁有各自的功能函數(shù) 更多細(xì)節(jié)參閱 Section3 外設(shè)固件概述 注 1 在設(shè)置一個(gè)外設(shè)前 必須調(diào)用以下一個(gè)函數(shù)來使能它的時(shí)鐘 RCC AHBPeriphClockCmd RCC AHBPeriph PPPx ENABLE RCC APB2PeriphClockCmd RCC APB2Periph PPPx ENABLE RCC APB1PeriphClockCmd RCC APB1Periph PPPx ENABLE 2 可以調(diào)用函數(shù)PPP Deinit 來把外設(shè)PPP的所有寄存器復(fù)位為缺省值 PPP DeInit PPP 3 在外設(shè)設(shè)置完成以后 繼續(xù)修改它的一些參數(shù) 可以參照如下步驟 PPP InitStucture memberX valX PPP InitStructure memberY valY where X and Y are the only members that user wants to modify PPP Init PPP 2 4 位段 位段 Bit Banding Cortex M3 存儲(chǔ)器映像包括兩個(gè)位段 bit band 區(qū) 這兩個(gè)位段區(qū)將別名存儲(chǔ)器區(qū)中的每 個(gè)字映射到位段存儲(chǔ)器區(qū)的一個(gè)位 在別名存儲(chǔ)區(qū)寫入一個(gè)字具有對(duì)位段區(qū)的目標(biāo)位執(zhí) 讀 改 寫操作的相同效果 所有STM32F10 x外設(shè)寄存器都被映射到一個(gè)位段 bit band 區(qū) 這個(gè)特性在各個(gè)函數(shù)中對(duì)單個(gè)比特進(jìn)行置1 置0操作時(shí)被大量使用 用以減小和優(yōu)化代碼尺 寸 Section 2 4 1和Section 2 4 2給出了外設(shè)固件函數(shù)庫中如何實(shí)現(xiàn)位段訪問的描述 2 4 1 映射公式映射公式 映射公式給出 別名區(qū)中的每個(gè)字是如何對(duì)應(yīng)位帶區(qū)的相應(yīng)位的 公式如下 bit word offset byte offset x 32 bit number 4 bit word addr bit band base bit word offset 其中 bit word offset是目標(biāo)位在存取器位段區(qū)中的位置 bit word addr 是別名存儲(chǔ)器區(qū)中字的地址 它映射到某個(gè)目標(biāo)位 bit band base 是別名區(qū)的起始地址 byte offset 是包含目標(biāo)位的字節(jié)在位段 的序號(hào) bit number 是目標(biāo)位所在位置 0 31 固件函數(shù)庫 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 2 4 2 應(yīng)用實(shí)例應(yīng)用實(shí)例 下例展現(xiàn)了如何把寄存器RCC CR的PLLON 24 位 映射到別名區(qū) Peripheral base address in the bit band region define PERIPH BASE u32 0 x40000000 Peripheral address in the alias region define PERIPH BB BASE u32 0 x42000000 RCC registers bit address in the alias region define RCC OFFSET RCC BASE PERIPH BASE CR Register Alias word address of PLLON bit define CR OFFSET RCC OFFSET 0 x00 define PLLON BitNumber 0 x18 define CR PLLON BB PERIPH BB BASE CR OFFSET 32 PLLON BitNumber 4 編寫一個(gè)使能 失能PLL的函數(shù) 步驟如下 define CR PLLON Set u32 0 x01000000 define CR PLLON Reset u32 0 xFEFFFFFF void RCC PLLCmd FunctionalState NewState if NewState DISABLE Enable PLL RCC CR CR PLLON Set else Disable PLL RCC CR Using bit band access this function will be coded as follows void RCC PLLCmd FunctionalState NewState vu32 CR PLLON BB u32 NewState 2 5 運(yùn)行時(shí)間檢測(cè)運(yùn)行時(shí)間檢測(cè) 固件函數(shù)庫通過檢查庫函書的輸入來實(shí)現(xiàn)運(yùn)行時(shí)間錯(cuò)誤偵測(cè) 通過使用宏assert param來 實(shí)現(xiàn)運(yùn)行時(shí)間檢測(cè) 所有要求輸入?yún)?shù)的函數(shù)都使用這個(gè)宏 它可以檢查輸入?yún)?shù)是否在 固件函數(shù)庫 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 允許的范圍之內(nèi) 例 函數(shù)PWR ClearFlag stm32f10 x pwr c void PWR ClearFlag u32 PWR FLAG Check the parameters assert param IS PWR CLEAR FLAG PWR FLAG PWR CR PWR FLAG 2 stm32f10 x pwr h PWR Flag define PWR FLAG WU u32 0 x00000001 define PWR FLAG SB u32 0 x00000002 define PWR FLAG PVDO u32 0 x00000004 define IS PWR CLEAR FLAG FLAG FLAG PWR FLAG WU FLAG PWR FLAG SB 如果傳給宏assert param的參數(shù)為false 則調(diào)用函數(shù)assert failed并返回被錯(cuò)誤調(diào)用的函數(shù) 所在的文件名和行數(shù) 如果傳給宏assert param的參數(shù)為true 則無返回值 宏assert param編寫于文件stm32f10 x conf h中 Exported macro ifdef DEBUG Macro Name assert param Description The assert param macro is used for function s parameters check It is used only if the library is compiled in DEBUG mode Input expr If expr is false it calls assert failed function which reports the name of the source file and the source line number of the call that failed If expr is true it returns no value Return None define assert param expr expr void 0 assert failed u8 FILE LINE Exported functions void assert failed u8 file u32 line else define assert param expr void 0 endif DEBUG 函數(shù)assert failed編寫于文件main c或者其他用戶C文件 ifdef DEBUG Function name assert failed Description Reports the name of the source file and the source line number 固件函數(shù)庫 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) where the assert param error has occurred Input file pointer to the source file name line assert param error line source number Output None Return None void assert failed u8 file u32 line User can add his own implementation to report the file name and line number ex printf Wrong parameters value file s on line d r n file line Infinite loop while 1 endif 注 運(yùn)行時(shí)間檢查 即宏assert param應(yīng)當(dāng)只在庫在Debug模式下編譯時(shí)使用 建議在用戶應(yīng)用 代碼的開發(fā)和調(diào)試階段使用運(yùn)行時(shí)間檢查 在最終的代碼中去掉它們以改進(jìn)代碼尺寸和速 度 如果用戶仍然希望在最終的代碼中保留這項(xiàng)功能 可以在調(diào)用庫函數(shù)前 重新使用宏 assert param來測(cè)試輸入?yún)?shù) 外設(shè)固件描述 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 3 外設(shè)固件概述外設(shè)固件概述 本節(jié)系統(tǒng)描述了每一個(gè)外設(shè)固件函數(shù)庫 完整地描述所有相關(guān)函數(shù)并提供如何使用他們的 例子 函數(shù)的描述按如下格式進(jìn)行 Table 3 函數(shù)描述格式函數(shù)描述格式 函數(shù)名函數(shù)名外設(shè)函數(shù)的名稱外設(shè)函數(shù)的名稱 函數(shù)原形函數(shù)原形原形聲明 功能描述功能描述簡(jiǎn)要解釋函數(shù)是如何執(zhí)行的 輸入?yún)?shù)輸入?yún)?shù) x 輸入?yún)?shù)描述 輸出參數(shù)輸出參數(shù) x 輸出參數(shù)描述 返回值返回值函數(shù)的返回值 先決條件先決條件調(diào)用函數(shù)前應(yīng)滿足的要求 被調(diào)用函數(shù)被調(diào)用函數(shù)其他被該函數(shù)調(diào)用的庫函數(shù) 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 4 模擬模擬 數(shù)字轉(zhuǎn)換器數(shù)字轉(zhuǎn)換器 4 1 ADC寄存器結(jié)構(gòu)寄存器結(jié)構(gòu) 4 2 ADC庫函數(shù)庫函數(shù) 5 備份寄存器 備份寄存器 BKP 5 1 BKP寄存器結(jié)構(gòu)寄存器結(jié)構(gòu) 5 2 BKP庫函數(shù)庫函數(shù) 6 控制器局域網(wǎng) 控制器局域網(wǎng) CAN 6 1 CAN寄存器結(jié)構(gòu)寄存器結(jié)構(gòu) 6 2 CAN庫函數(shù)庫函數(shù) 7 DMA控制器 控制器 DMA 7 1 DMA寄存器結(jié)構(gòu)寄存器結(jié)構(gòu) 7 2 DMA庫函數(shù)庫函數(shù) 8 外部中斷外部中斷 事件控制器 事件控制器 EXTI 8 1 EXTI寄存器結(jié)構(gòu)寄存器結(jié)構(gòu) 8 2 EXTI庫函數(shù)庫函數(shù) 9 FLASH存儲(chǔ)器存儲(chǔ)器 FLASH 9 1 FLASH寄存器結(jié)構(gòu)寄存器結(jié)構(gòu) 9 2 FLASH庫函數(shù)庫函數(shù) GPIO 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 10 通用輸入通用輸入 輸出 輸出 GPIO GPIO驅(qū)動(dòng)可以用作多個(gè)用途 包括管腳設(shè)置 單位設(shè)置 重置 鎖定機(jī)制 從端口管腳讀 入或者向端口管腳寫入數(shù)據(jù) Section 10 1 GPIO寄存器結(jié)構(gòu)描述了固件函數(shù)庫所使用的數(shù)據(jù)結(jié)構(gòu) Section 10 2 固件庫函 數(shù)介紹了函數(shù)庫里的所有函數(shù) 10 1 GPIO寄存器結(jié)構(gòu) GPIO寄存器結(jié)構(gòu) GPIO TypeDef和AFIO TypeDef 在文件 stm32f10 x map h 中定義如 下 typedefstruct vu32 CRL vu32 CRH vu32 IDR vu32 ODR vu32 BSRR vu32 BRR vu32 LCKR GPIO TypeDef Typedefstruct vu32 EVCR vu32 MAPR vu32 EXTICR 4 AFIO TypeDef Table 178 例舉了GPIO所有寄存器 Table 178 GPIO寄存器 寄存器寄存器描述描述 CRLCRL端口配置低寄存器 CRHCRH端口配置高寄存器 IDRIDR端口輸入數(shù)據(jù)寄存器 ODRODR端口輸出數(shù)據(jù)寄存器 BSRRBSRR端口位設(shè)置 復(fù)位寄存器 BRRBRR端口位復(fù)位寄存器 LCKRLCKR端口配置鎖定寄存器 EVCREVCR事件控制寄存器 MAPRMAPR復(fù)用重映射和調(diào)試 I O 配置寄存器 GPIO 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) EXTICREXTICR外部中斷線路 0 15 配置寄存器 五個(gè)GPIO外設(shè)聲明于文件 stm32f10 x map h define PERIPH BASE u32 0 x40000000 define APB1PERIPH BASE PERIPH BASE define APB2PERIPH BASE PERIPH BASE 0 x10000 define AHBPERIPH BASE PERIPH BASE 0 x20000 define AFIO BASE APB2PERIPH BASE 0 x0000 define GPIOA BASE APB2PERIPH BASE 0 x0800 define GPIOB BASE APB2PERIPH BASE 0 x0C00 define GPIOC BASE APB2PERIPH BASE 0 x1000 define GPIOD BASE APB2PERIPH BASE 0 x1400 define GPIOE BASE APB2PERIPH BASE 0 x1800 ifndef DEBUG ifdef AFIO define AFIO AFIO TypeDef AFIO BASE endif AFIO ifdef GPIOA define GPIOA GPIO TypeDef GPIOA BASE endif GPIOA ifdef GPIOB define GPIOB GPIO TypeDef GPIOB BASE endif GPIOB ifdef GPIOC define GPIOC GPIO TypeDef GPIOC BASE endif GPIOC ifdef GPIOD define GPIOD GPIO TypeDef GPIOD BASE endif GPIOD ifdef GPIOE define GPIOE GPIO TypeDef GPIOE BASE endif GPIOE else DEBUG ifdef AFIO EXT AFIO TypeDef AFIO endif AFIO ifdef GPIOA EXT GPIO TypeDef GPIOA endif GPIOA GPIO 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) ifdef GPIOB EXT GPIO TypeDef GPIOB endif GPIOB ifdef GPIOC EXT GPIO TypeDef GPIOC endif GPIOC ifdef GPIOD EXT GPIO TypeDef GPIOD endif GPIOD ifdef GPIOE EXT GPIO TypeDef GPIOE endif GPIOE endif 使用Debug模式時(shí) 初始化指針AFIO GPIOA GPIOB GPIOC GPIOD 和GPIOE 于文件 stm32f10 x lib c ifdef GPIOA GPIOA GPIO TypeDef GPIOA BASE endif GPIOA ifdef GPIOB GPIOB GPIO TypeDef GPIOB BASE endif GPIOB ifdef GPIOC GPIOC GPIO TypeDef GPIOC BASE endif GPIOC ifdef GPIOD GPIOD GPIO TypeDef GPIOD BASE endif GPIOD ifdef GPIOE GPIOE GPIO TypeDef GPIOE BASE endif GPIOE ifdef AFIO AFIO AFIO TypeDef AFIO BASE endif AFIO 為了訪問GPIO寄存器 GPIO AFIO GPIOA GPIOB GPIOC GPIOD和 GPIOE 必須在文件 stm32f10 x conf h 中定義如下 define GPIO define GPIOA define GPIOB define GPIOC define GPIOD define GPIOE define AFIO GPIO 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 10 2 GPIO庫函數(shù)庫函數(shù) Table 179 例舉了GPIO的庫函數(shù) Table 179 GPIO庫函數(shù) 函數(shù)名函數(shù)名描述描述 GPIO DeInit將外設(shè) GPIOx 寄存器重設(shè)為缺省值 GPIO AFIODeInit將復(fù)用功能 重映射事件控制和 EXTI 設(shè)置 重設(shè)為缺省值 GPIO Init根據(jù) GPIO InitStruct 中指定的參數(shù)初始化外設(shè) GPIOx 寄存器 GPIO StructInit把 GPIO InitStruct 中的每一個(gè)參數(shù)按缺省值填入 GPIO ReadInputDataBit讀取指定端口管腳的輸入 GPIO ReadInputData讀取指定的 GPIO 端口輸入 GPIO ReadOutputDataBit讀取指定端口管腳的輸出 GPIO ReadOutputData讀取指定的 GPIO 端口輸出 GPIO SetBits設(shè)置指定的數(shù)據(jù)端口位 GPIO ResetBits清除指定的數(shù)據(jù)端口位 GPIO WriteBit設(shè)置或者清除指定的數(shù)據(jù)端口位 GPIO Write向指定 GPIO 數(shù)據(jù)端口寫入數(shù)據(jù) GPIO PinLockConfig鎖定 GPIO 管腳設(shè)置寄存器 GPIO EventOutputConfig選擇 GPIO 管腳用作事件輸出 GPIO EventOutputCmd使能或者失能事件輸出 GPIO PinRemapConfig改變指定管腳的映射 GPIO EXTILineConfig選擇 GPIO 管腳用作外部中斷線路 10 2 1 函數(shù)函數(shù)GPIO DeInit Table 180 描述了函數(shù)描述了函數(shù)GPIO DeInit 函數(shù)名函數(shù)名GPIO DeInit 函數(shù)原形函數(shù)原形void GPIO DeInit GPIO TypeDef GPIOx 功能描述功能描述將外設(shè) GPIOx 寄存器重設(shè)為缺省值 輸入?yún)?shù)輸入?yún)?shù)GPIOx x 可以是 A B C D 或者 E 來選擇 GPIO 外設(shè) 輸出參數(shù)輸出參數(shù)無 返回值返回值無 先決條件先決條件無 被調(diào)用函數(shù)被調(diào)用函數(shù)RCC APB2PeriphResetCmd 例 Resets the GPIOA peripheral registers to their default reset values GPIO DeInit GPIOA GPIO 譯文英文原版為 UM0427 Oct 2007 Rev 2 譯文僅供參考 與英文版沖突的 以英文版為準(zhǔn) 10 2 2 函數(shù)函數(shù)GPIO AFIODeInit Table 181 描述了函數(shù)GPIO AFIODeInit Table 181 函數(shù)函數(shù)GPIO AFIODeInit 函數(shù)名函數(shù)名GPIO AFIODeInit 函數(shù)原形函數(shù)原形void GPIO AFIODeInit void 功能描述功能描述將復(fù)用功能 重映射事件控制和 EXTI 設(shè)置 重設(shè)為缺省值 輸入?yún)?shù)輸入?yún)?shù)無 輸出參數(shù)輸出參數(shù)無 返回值返回值無 先決條件先決條件無 被調(diào)用函數(shù)被調(diào)用函數(shù)RCC APB2PeriphResetCmd 例 Resets the Alternate functions registers to their default reset values GPIO AFIODeInit 10 2 3 函數(shù)GPIO Init Table 182 描述了函數(shù)GPIO Init Table 182 函數(shù)函數(shù)GPIO Init 函數(shù)名函數(shù)名GPIO Init 函數(shù)原形函數(shù)原形void GPIO Init GPIO TypeDef GPIOx GPIO InitTypeDef GPIO InitStruct 功能描述功能描述根據(jù) GPIO InitStruct 中指定的參數(shù)初始化外設(shè) GPIOx 寄存器 輸入?yún)?shù)輸入?yún)?shù) 1GPIOx x 可以是 A B C D 或者 E 來選擇 GPIO 外設(shè) 輸入?yún)?shù)輸入?yún)?shù) 2GPIO InitStruct 指向結(jié)構(gòu) GPIO InitTypeDef 的指針 包含了外設(shè) GPIO 的配置信息 參閱 Section GPIO InitTypeDef 查閱更多該參數(shù)允許取值范圍 輸出參數(shù)輸出參數(shù)無 返回值返回值無 先決條件先決條件無 被調(diào)用函數(shù)被調(diào)用函數(shù)無 GPIO InitTypeDef structure GPIO InitTypeDef定義于文件 stm32f10 x gpio h typedef s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論