版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
word文檔精品文檔分享UM0427用戶手冊位基于ARM微控制器STM32F101xx與STM32F103xx固件函數(shù)庫介紹本手冊介紹了32位基于ARM微控制器STM32F101xx與STM32F103xx的固件函數(shù)庫。該函數(shù)庫是一個固件函數(shù)包,它由程序、數(shù)據(jù)構(gòu)造和宏組成,包括了微控制器所有外設(shè)的性能特征。該函數(shù)庫還包括每一個外設(shè)的驅(qū)動描述和應(yīng)用實例。通過使用本固件函數(shù)庫,無需深入掌握細節(jié),用戶也可以輕松應(yīng)用每一個外設(shè)。因此,使用本固態(tài)函數(shù)庫可以大大減少用戶的程序編寫時間,進而降低開發(fā)本錢。每個外設(shè)驅(qū)動都由一組函數(shù)組成,這組函數(shù)覆蓋了該外設(shè)所有功能。每個器件的開發(fā)都由一個通用API(applicationprogramminginterface應(yīng)用編程界面)驅(qū)動,API對該驅(qū)動程序的構(gòu)造,函數(shù)和參數(shù)名稱都進展了標(biāo)準(zhǔn)化。所有的驅(qū)動源代碼都符合“StrictANSI-C標(biāo)準(zhǔn)〕。我們已經(jīng)把驅(qū)動源代碼文檔化,他們同時兼容MISRA-C2004標(biāo)準(zhǔn)〔根據(jù)需要,我們可以提供兼容矩陣〕。由于整個固態(tài)函數(shù)庫按照“StrictANSI-C境的影響。僅對話啟動文件取決于開發(fā)環(huán)境。該固態(tài)函數(shù)庫通過校驗所有庫函數(shù)的輸入值來實現(xiàn)實時錯誤檢測。該動態(tài)校驗提高了軟件的魯棒性。實時檢測適合于用戶應(yīng)用程序的開發(fā)和調(diào)試。但這會增加了本錢,可以在最終應(yīng)用程序代碼中移去,以優(yōu)化代碼大小和執(zhí)行速度。想要了解更多細節(jié),請參閱Section2.5。因為該固件庫是通用的,并且包括了所有外設(shè)的功能,所以應(yīng)用程序代碼的大小和執(zhí)行速度可能不是最優(yōu)的。對大多數(shù)應(yīng)用程序來說,用戶可以直接使用之,對于那些在代碼大小和執(zhí)行速度方面有嚴(yán)格要求的應(yīng)用程序,該固件庫驅(qū)動程序可以作為如何設(shè)置外設(shè)的一份參考資料,根據(jù)實際需求對其進展調(diào)整。此份固件庫用戶手冊的整體架構(gòu)如下:定義,文檔約定和固態(tài)函數(shù)庫規(guī)那么。固態(tài)函數(shù)庫概述〔包的內(nèi)容,庫的架構(gòu)〕,安裝指南,庫使用實例。固件庫具體描述:設(shè)置架構(gòu)和每個外設(shè)的函數(shù)。STM32F101xx和STM32F103xx在整個文檔中被寫作STM32F101x。譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享文檔和庫規(guī)X文檔和庫規(guī)X本用戶手冊和固態(tài)函數(shù)庫按照以下章節(jié)所描述的規(guī)X編寫。1.1縮寫Table1.本文檔所有縮寫定義縮寫外設(shè)/單元ADC模數(shù)轉(zhuǎn)換器BKP備份存放器CAN控制器局域網(wǎng)模塊DMA直接內(nèi)存存取控制器EXTI外部中斷事件控制器FLASH閃存存儲器GPIO通用輸入輸出I2C內(nèi)部集成電路IWDG獨立看門狗NVIC嵌套中斷向量列表控制器PWR電源/功耗控制RCC復(fù)位與時鐘控制器RTC實時時鐘SPI串行外設(shè)接口SysTick系統(tǒng)嘀嗒定時器TIM通用定時器TIM1高級控制定時器USART通用同步異步接收發(fā)射端WWDG窗口看門狗1.2命名規(guī)那么固態(tài)函數(shù)庫遵從以下命名規(guī)那么:PPP表示任一外設(shè)縮寫,例如:ADC。更多縮寫相關(guān)信息參閱章節(jié)1.1縮寫。系統(tǒng)、源程序文件和頭文件命名都以“stm32f10x_。常量僅被應(yīng)用于一個文件的,定義于該文件中;被應(yīng)用于多個文件的,在對應(yīng)頭文件中定義。所有常量都由英文字母大寫書寫。存放器作為常量處理。他們的命名都由英文字母大寫書寫。在大多數(shù)情況下,他們采用與縮寫規(guī)X與本用戶手冊一致。外設(shè)函數(shù)的命名以該外設(shè)的縮寫加下劃線為開頭。每個單詞的第一個字母都由英文字母大譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享文檔和庫規(guī)X寫書寫,例如:SPI_SendData。在函數(shù)名中,只允許存在一個下劃線,用以分隔外設(shè)縮寫和函數(shù)名的其它局部。名為PPP_Init的函數(shù),其功能是根據(jù)PPP_InitTypeDef中指定的參數(shù),初始化外設(shè),例如TIM_Init.名為PPP_DeInit的函數(shù),其功能為復(fù)位外設(shè)的所有存放器至缺省值,例如TIM_DeInit.名為PPP_StructInit的函數(shù),其功能為通過設(shè)置PPP_InitTypeDef構(gòu)造中的各種參數(shù)來定義外設(shè)的功能,例如:USART_StructInit.名為PPP_Cmd的函數(shù),其功能為使能或者失能外設(shè)PPP,例如:SPI_Cmd.名為PPP_ITConfig的函數(shù),其功能為使能或者失能來自外設(shè)某中斷源,例如:RCC_ITConfig.名為PPP_DMAConfig的函數(shù),其功能為使能或者失能外設(shè)PPP的DMA接口,例如:TIM1_DMAConfig.用以配置外設(shè)功能的函數(shù),總是以字符串“ConfigGPIO_PinRemapConfig.名為PPP_GetFlagStatus的函數(shù),其功能為檢查外設(shè)PPP某標(biāo)志位被設(shè)置與否,例如:I2C_GetFlagStatus.名為PPP_ClearFlag的函數(shù),其功能為去除外設(shè)標(biāo)志位,例如:I2C_ClearFlag.名為PPP_GetITStatus的函數(shù),其功能為判斷來自外設(shè)PPP的中斷發(fā)生與否,例如:I2C_GetITStatus.名為PPP_ClearITPendingBit的函數(shù),其功能為去除外設(shè)中斷待處理標(biāo)志位,例如:I2C_ClearITPendingBit.1.3編碼規(guī)那么本章節(jié)描述了固態(tài)函書庫的編碼規(guī)那么。變量固態(tài)函數(shù)庫定義了24個變量類型,他們的類型和大小是固定的。在文件stm32f10x_type.h中我們定義了這些變量:typedefsignedlongs32;typedefsignedshorts16;譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享文檔和庫規(guī)Xtypedefsignedchars8;typedefsignedlongconstsc32;/*ReadOnly*/typedefsignedshortconstsc16;/*ReadOnly*/typedefsignedcharconstsc8;/*ReadOnly*/typedefvolatilesignedlongvs32;typedefvolatilesignedshortvs16;typedefvolatilesignedcharvs8;typedefvolatilesignedlongconstvsc32;/*ReadOnly*/typedefvolatilesignedshortconstvsc16;/*ReadOnly*/typedefvolatilesignedcharconstvsc8;/*ReadOnly*/typedefunsignedlongu32;typedefunsignedshortu16;typedefunsignedcharu8;typedefunsignedlongconstuc32;/*ReadOnly*/typedefunsignedshortconstuc16;/*ReadOnly*/typedefunsignedcharconstuc8;/*ReadOnly*/typedefvolatileunsignedlongvu32;typedefvolatileunsignedshortvu16;typedefvolatileunsignedcharvu8;typedefvolatileunsignedlongconstvuc32;/*ReadOnly*/typedefvolatileunsignedshortconstvuc16;/*ReadOnly*/typedefvolatileunsignedcharconstvuc8;/*ReadOnly*/布爾型在文件stm32f10x_type.h中,布爾形變量被定義如下:Typedefenum{FALSE=0,TRUE=!FALSE}bool;1.3.3標(biāo)志位狀態(tài)類型在文件stm32f10x_type.h中,我們定義標(biāo)志位類型〔FlagStatustype〕的個可能值為〞SETorRESET〕。typedefenum{RESET=0,SET=!RESET}FlagStatus;譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享文檔和庫規(guī)X1.3.4功能狀態(tài)類型在文件stm32f10x_type.h中,我們定義功能狀態(tài)類型〔FunctionalStatetype〕的個可能值ENABLEorDISABLE〕。typedefenum{DISABLE=0,ENABLE=!DISABLE}FunctionalState;1.3.5錯誤狀態(tài)類型在文件stm32f10x_type.h中,我們錯誤狀態(tài)類型類型〔ErrorStatustype〕的個可能值為SUCCESSorERROR〕。Typedefenum{ERROR=0,SUCCESS=!ERROR}ErrorStatus;1.3.6外設(shè)用戶可以通過指向各個外設(shè)的指針訪問各外設(shè)的控制存放器。這些指針?biāo)赶虻臄?shù)據(jù)構(gòu)造與各個外設(shè)的控制存放器布局一一對應(yīng)。外設(shè)控制存放器構(gòu)造文件包含了所有外設(shè)控制存放器的構(gòu)造,下例為SPI存放器構(gòu)造的聲明:/*--------------------------------SerialPeripheralInterface-----------------------------*/typedefstruct{vu16CR1;u16RESERVED0;vu16CR2;u16RESERVED1;vu16SR;u16RESERVED2;vu16DR;u16RESERVED3;vu16CRCPR;u16RESERVED4;vu16RXCRCR;u16RESERVED5;譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享文檔和庫Xvu16TXCRCR;u16RESERVED6;}SPI_TypeDef;存放器命名遵循上節(jié)的存放器縮寫命名RESERVEDi〔i為一個整數(shù)索引值〕表被保存區(qū)域。外設(shè)聲明文件包含了所有外設(shè)的聲明,下例為外設(shè)的聲明:#ifndefEXT#DefineEXTextern#endif......#definePERIPH_BASE((u32)0x40000000)#defineAPB1PERIPH_BASEPERIPH_BASE#defineAPB2PERIPH_BASE(PERIPH_BASE+0x10000)....../*SPI2BaseAddressdefinition*/#defineSPI2_BASE(APB1PERIPH_BASE+0x3800)....../*SPI2peripheraldeclaration*/#ifndefDEBUG......#ifdef_SPI2#defineSPI2((SPI_TypeDef*)SPI2_BASE)#endif/*_SPI2*/......#else/*DEBUG*/?...#ifdef_SPI2EXTSPI_TypeDef*SPI2;#endif/*_SPI2*/?...#endif/*DEBUG*/如果用戶希望使用外設(shè),那么必須在文件中定_SPI標(biāo)。通定標(biāo)_SPIn,用戶可以設(shè)SPIn的存放器。例如,用戶必須在文件stm32f10x_conf.h中定標(biāo)SPI2,否是不能SPI2的存放器的。在文件中,用戶可以按照下例定標(biāo)_SPI和_SPIn。#define_SPI#define_SPI1#define_SPI2每個外設(shè)都有假設(shè)干存放器專門分配給標(biāo)志位。我們按照相應(yīng)的構(gòu)造定這存放器。標(biāo)志位的命名,同樣遵循上節(jié)的外設(shè)縮寫,PPP_FLAG_?開場。對于不同的外設(shè),標(biāo)志譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享文檔和庫規(guī)X位都被定義在相應(yīng)的文件stm32f10x_ppp.h中。用戶想要進入除錯〔DEBUG必須在文件中定義標(biāo)簽DEBUG。這樣會在SRAM的外設(shè)構(gòu)造局部創(chuàng)立一個指針。因此我們可以簡化除錯過程,并且通過轉(zhuǎn)儲外設(shè)獲得來獲得所有存放器的狀態(tài)。在所有情況下,SPI2都是一個指向外設(shè)首地址的指針。變量DEBUG可以仿照下例定義:#defineDEBUG1可以初始化DEBUG模式與文件中如下:#ifdefDEBUGvoiddebug(void){......#ifdef_SPI2SPI2=(SPI_TypeDef*)SPI2_BASE;#endif/*_SPI2*/......}#endif/*DEBUG*/Note:1當(dāng)用戶選擇DEBUG模式,宏assert_param被擴展,同時運行時間檢查功能也在固態(tài)函數(shù)庫代碼中被激活。2進入DEBUG模式會增大代碼的尺寸,降低代碼的運行效率。因此,我們強烈建議僅僅在除錯的時候使用相應(yīng)代碼,在最終的應(yīng)用程序中,刪除它們。譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享固件函數(shù)庫2.固件函數(shù)庫2.1壓縮包描述STM32F10x固件函數(shù)庫被壓縮在一個zip文件中。解壓該文件會產(chǎn)生一個文件夾:STM32F10xFWLib\FWLib,包含如下所示的子文件夾:Figure1:固件函數(shù)庫文件夾構(gòu)造2.1.1文件夾Examples文件夾Examples,對應(yīng)每一個STM32外設(shè),都包含一個子文件夾。這些子文件夾包含了整套文件,組成典型的例子,來示X如何使用對應(yīng)外設(shè)。這些文件有:readme.txt:每個例子的簡單描述和使用說明。:該頭文件設(shè)置了所有使用到的外設(shè),由不同的“:該源文件包含了所有的中斷處理程序〔如果未使用中斷,那么所有的函數(shù)體都為空〕。:該頭文件包含了所有的中斷處理程序的原形。main.c:例程代碼。注:所有的例程的使用,都不受不同軟件開發(fā)環(huán)境的影響。譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享固件函數(shù)庫2.1.2文件夾Library文件夾Library包含組成固件函數(shù)庫核心的所有子文件夾和文件:子文件夾inc包含了固件函數(shù)庫所需的頭文件,用戶無需修改該文件夾:-stm32f10x_type.h:所有其他文件使用的通用數(shù)據(jù)類型和枚舉。-:外設(shè)存儲器映像和存放器數(shù)據(jù)構(gòu)造。-stm32f10x_lib.h:主頭文件夾,包含了其他頭文件。-:每個外設(shè)對應(yīng)一個頭文件,包含了該外設(shè)使用的函數(shù)原形,數(shù)據(jù)構(gòu)造和枚舉。-cortexm3_macro.h:文件cortexm3_macro.s對應(yīng)的頭文件。子文件夾src包含了固件函數(shù)庫所需的源文件,用戶無需修改該文件夾:-stm32f10x_ppp.c:每個外設(shè)對應(yīng)一個源文件,包含了該外設(shè)使用的函數(shù)體。-:初始化所有外設(shè)的指針。注:所有代碼都按照StrictANSI-C標(biāo)準(zhǔn)書寫,都不受不同軟件開發(fā)環(huán)境的影響。2.1.3文件夾Project文件夾Project包含了一個標(biāo)準(zhǔn)的程序工程模板,包括庫文件的編譯和所有用戶可修改的文件,可用以建立新的工程。-:工程配置頭文件,默認(rèn)為設(shè)置了所有的外設(shè)。-:該源文件包含了所有的中斷處理程序〔所有的函數(shù)體默認(rèn)為空〕。:該頭文件包含了所有的中斷處理程序的原形。main.c:主函數(shù)體文件夾EWARM,RVMDK,RIDE:用于不同開發(fā)環(huán)境使用,詳情查詢各文件夾下的文件readme.txt。2.2固件函數(shù)庫文件描述Table2列舉和描述了固件函數(shù)庫使用的所有文件。固件函數(shù)庫的體系和文件相互包括的聯(lián)系表示在Figure2中。每一個外設(shè)都有一個對應(yīng)的源文件:stm32f10x_ppp.c和一個對應(yīng)的頭文件:stm32f10x_ppp.h。文件stm32f10x_ppp.c包含了使用外設(shè)PPP所需的所有固件函數(shù)。提供所有外設(shè)一個存儲器映像文件stm32f10x_map.h。它包含了所有存放器的聲明,既可以用于Debug模式也可以用于模式。頭文件stm32f10x_lib.h包含了所有外設(shè)頭文件的頭文件。它是唯一一個用戶需要包括在自己應(yīng)用中的文件,起到應(yīng)用和庫之間界面的作用。文件stm32f10x_conf.h是唯一一個需要由用戶修改的文件。它作為應(yīng)用和庫之間的界面,指定了一系列參數(shù)。譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享固件函數(shù)庫Table2.固件函數(shù)庫文件描述文件名描述stm32f10x_conf.h參數(shù)設(shè)置文件,起到應(yīng)用和庫之間界面的作用。用戶必須在運行自己的程序前修改該文件。用戶可以利用模板使能或者失能外設(shè)。也可以修改外部晶振的參數(shù)。也可以是用該文件在編譯前使能Debug或者release模式。main.c主函數(shù)體例如。stm32f10x_it.h頭文件,包含所有中斷處理函數(shù)原形。stm32f10x_it.c外設(shè)中斷函數(shù)文件。用戶可以參加自己的中斷程序代碼。對于指向同一個中斷向量的多個不同中斷請求,可以利用函數(shù)通過判斷外設(shè)的中斷標(biāo)志位來確定準(zhǔn)確的中斷源。固件函數(shù)庫提供了這些函數(shù)的名稱。stm32f10x_lib.h包含了所有外設(shè)的頭文件的頭文件。它是唯一一個用戶需要包括在自己應(yīng)用中的文件,起到應(yīng)用和庫之間界面的作用。stm32f10x_lib.cDebug模式初始化文件。它包括多個指針的定義,每個指針指向特定外設(shè)的首地址,以及在Debug模式被使能時,被調(diào)用的函數(shù)的定義。stm32f10x_map.h該文件包含了存儲器映像和所有存放器物理地址的聲明,既可以用于Debug模式也可以用于release模式。所有外設(shè)都使用該文件。stm32f10x_type.h通用聲明文件。包含所有外設(shè)驅(qū)動使用的通用類型和常數(shù)。stm32f10x_ppp.c由C語言編寫的外設(shè)PPP的驅(qū)動源程序文件。stm32f10x_ppp.h外設(shè)PPP的頭文件。包含外設(shè)PPP函數(shù)的定義,和這些函數(shù)使用的變量。cortexm3_macro.h文件cortexm3_macro.s的頭文件cortexm3_macro.sCortex-M3內(nèi)核特殊指令的指令包裝。譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享固件函數(shù)庫Figure2.固件函數(shù)庫文件體系構(gòu)造2.3外設(shè)的初始化和設(shè)置本節(jié)按步驟描述了如何初始化和設(shè)置任意外設(shè)。這里PPP代表任意外設(shè)。在主應(yīng)用文件中,聲明一個構(gòu)造PPP_InitTypeDef,例如:PPP_InitTypeDefPPP_InitStructure;這里PPP_InitStructure是一個位于內(nèi)存中的工作變量,用來初始化一個或者多個外設(shè)PPP。為變量PPP_InitStructure的各個構(gòu)造成員填入允許的值??梢圆捎靡韵路N方式:〕按照如下程序設(shè)置整個構(gòu)造體PPP_InitStructure.member1=val1;PPP_InitStructure.member2=val2;PPP_InitStructure.memberN=valN;/*whereNisthenumberofthestructuremembers*/以上步驟可以合并在同一行里,用以優(yōu)化代碼大小:PPP_InitTypeDefPPP_InitStructure={val1,val2,..,valN}b〕僅設(shè)置構(gòu)造體中的局部成員:這種情況下,用戶應(yīng)當(dāng)首先調(diào)用函數(shù)PPP_SturcInit(..)來初始化變量PPP_InitStructure這樣可以保證其他成員的值〔多為缺省值〕被正確填入。PPP_StructInit(&PPP_InitStructure);PP_InitStructure.memberX=valX;PPP_InitStructure.memberY=valY;/*whereXandYarethememberstheuserwantstoconfigure*/譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享固件函數(shù)庫3.調(diào)用函數(shù)PPP_Init(..)來初始化外設(shè)。4.在這一步,外設(shè)PPP已被初始化??梢哉{(diào)用函數(shù)PPP_Cmd(..)來使能之。PPP_Cmd(PPP,ENABLE);可以通過調(diào)用一系列函數(shù)來使用外設(shè)。每個外設(shè)都擁有各自的功能函數(shù)。更多細節(jié)參閱Section3外設(shè)固件概述。注:1.在設(shè)置一個外設(shè)前,必須調(diào)用以下一個函數(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è)的所有存放器復(fù)位為缺省值:PPP_DeInit(PPP)3.在外設(shè)設(shè)置完成以后,繼續(xù)修改它的一些參數(shù),可以參照如下步驟:PPP_InitStucture.memberX=valX;PPP_InitStructure.memberY=valY;/*whereXandYaretheonlymembersthatuserwantstomodify*/PPP_Init(PPP,&PPP_InitStructure);2.4位段〔Bit-Banding〕Cortex?-M3存儲器映像包括兩個位段(bit-band)區(qū)。這兩個位段區(qū)將別名存儲器區(qū)中的每個字映射到位段存儲器區(qū)的一個位,在別名存儲區(qū)寫入一個字具有對位段區(qū)的目標(biāo)位執(zhí)行讀-改-寫操作的一樣效果。所有STM32F10x外設(shè)存放器都被映射到一個位段(bit-band)區(qū)。這個特性在各個函數(shù)中對單個比特進展置1/置0操作時被大量使用,用以減小和優(yōu)化代碼尺寸。Section2.4.1和Section2.4.2給出了外設(shè)固件函數(shù)庫中如何實現(xiàn)位段訪問的描述。2.4.1映射公式映射公式給出了別名區(qū)中的每個字是如何對應(yīng)位帶區(qū)的相應(yīng)位的,公式如下:bit_word_offset=(byte_offsetx32)+(bit_number4)×bit_word_addr=bit_band_base+bit_word_offset其中:bit_word_offset是目標(biāo)位在存取器位段區(qū)中的位置。bit_word_addr是別名存儲器區(qū)中字的地址,它映射到某個目標(biāo)位。bit_band_base是別名區(qū)的起始地址。byte_offset是包含目標(biāo)位的字節(jié)在位段里的序號。bit_number是目標(biāo)位所在位置〔0-31〕。譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享固件函數(shù)庫2.4.2應(yīng)用實例下例展現(xiàn)了如何把存放器RCC_CR的PLLON[24]位,映射到別名區(qū):/*Peripheralbaseaddressinthebit-bandregion*/#definePERIPH_BASE((u32)0x40000000)/*Peripheraladdressinthealiasregion*/#definePERIPH_BB_BASE((u32)0x42000000)/*-----RCCregistersbitaddressinthealiasregion------*/#defineRCC_OFFSET(RCC_BASE-PERIPH_BASE)/*---CRRegister---*//*AliaswordaddressofPLLONbit*/#defineCR_OFFSET(RCC_OFFSET+0x00)#definePLLON_BitNumber0x18#defineCR_PLLON_BB(PERIPH_BB_BASE+(CR_OFFSET*32(PLLON_BitNumber*4))編寫一個使能/失能PLL的函數(shù),步驟如下:...#defineCR_PLLON_Set((u32)0x01000000)#defineCR_PLLON_Reset((u32)0xFEFFFFFF)...voidRCC_PLLCmd(FunctionalStateNewState){if(NewState!=DISABLE){/*EnablePLL*/RCC->CR|=CR_PLLON_Set;}else{/*DisablePLL*/RCC->CR&=CR_PLLON_Reset;}}Usingbit-bandaccessthisfunctionwillbecodedasfollows:voidRCC_PLLCmd(FunctionalStateNewState){*(vu32*)CR_PLLON_BB=(u32)NewState;}2.5運行時間檢測固件函數(shù)庫通過檢查庫函書的輸入來實現(xiàn)運行時間錯誤偵測。通過使用宏assert_param來實現(xiàn)運行時間檢測。所有要求輸入?yún)?shù)的函數(shù)都使用這個宏。它可以檢查輸入?yún)?shù)是否在譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享固件函數(shù)庫允許的X圍之內(nèi)。例:函數(shù)PWR_ClearFlagstm32f10x_pwr.c:voidPWR_ClearFlag(u32PWR_FLAG){/*Checktheparameters*/assert_param(IS_PWR_CLEAR_FLAG(PWR_FLAG));PWR->CR|=PWR_FLAG<<2;}stm32f10x_pwr.h:/*PWRFlag*/#definePWR_FLAG_WU((u32)0x00000001)#definePWR_FLAG_SB((u32)0x00000002)#definePWR_FLAG_PVDO((u32)0x00000004)#defineIS_PWR_CLEAR_FLAG(FLAG)((FLAG==PWR_FLAG_WU)||(FLAG==PWR_FLAG_SB)如果傳給宏assert_param的參數(shù)為false,那么調(diào)用函數(shù)assert_failed并返回被錯誤調(diào)用的函數(shù)所在的文件名和行數(shù)。如果傳給宏assert_param的參數(shù)為true,那么無返回值。宏assert_param編寫于文件stm32f10x_conf.h中:/*Exportedmacro------------------------------------------------------------*/#ifdefDEBUG/*********************************************************************************MacroName:assert_param*Description:Theassert_parammacroisusedforfunction'sparameterscheck.*ItisusedonlyifthelibraryiscompiledinDEBUGmode.*Input:-expr:Ifexprisfalse,itcallsassert_failedfunction.*whichreportsthenameofthesourcefileandthesource*linenumberofthecallthatfailed.*Ifexpristrue,itreturnsnovalue.*Return:None*******************************************************************************/#defineassert_param(expr)((expr)?(void)0:assert_failed((u8*)__FILE__,__LINE__))/*Exportedfunctions-------------------------------------------------------*/voidassert_failed(u8*file,u32line);#else#defineassert_param(expr)((void)0)#endif/*DEBUG*/函數(shù)assert_failed編寫于文件main.c或者其他用戶C文件:#ifdefDEBUG/*******************************************************************Functionname:assert_failed*Description:Reportsthenameofthesourcefileandthesourcelinenumber.譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享固件函數(shù)庫*wheretheassert_paramerrorhasoccurred.*Input:-file:pointertothesourcefilename*-line:assert_paramerrorlinesourcenumber*Output:None*Return:None******************************************************************/voidassert_failed(u8*file,u32line){/*Usercanaddhisownimplementationtoreportthefilenameandlinenumber,ex:printf("Wrongparametersvalue:file%sonline%d\r\n",file,line)*//*Infiniteloop*/while(1){}}#endif注:運行時間檢查,即宏assert_param應(yīng)當(dāng)只在庫在Debug模式下編譯時使用。建議在用戶應(yīng)用代碼的開發(fā)和調(diào)試階段使用運行時間檢查,在最終的代碼中去掉它們以改良代碼尺寸和速度。如果用戶仍然希望在最終的代碼中保存這項功能,可以在調(diào)用庫函數(shù)前,重新使用宏assert_param來測試輸入?yún)?shù)。譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享外設(shè)固件描述3.外設(shè)固件概述本節(jié)系統(tǒng)描述了每一個外設(shè)固件函數(shù)庫。完整地描述所有相關(guān)函數(shù)并提供如何使用他們的例子。函數(shù)的描述按如下格式進展:Table3.函數(shù)描述格式函數(shù)名外設(shè)函數(shù)的名稱函數(shù)原形原形聲明功能描述簡要解釋函數(shù)是如何執(zhí)行的輸入?yún)?shù){x}輸入?yún)?shù)描述輸出參數(shù){x}輸出參數(shù)描述返回值函數(shù)的返回值先決條件調(diào)用函數(shù)前應(yīng)滿足的要求被調(diào)用函數(shù)其他被該函數(shù)調(diào)用的庫函數(shù)譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享4.模擬數(shù)字轉(zhuǎn)換器4.1ADC存放器構(gòu)造4.2ADC庫函數(shù)5.備份存放器〔BKP〕5.1BKP存放器構(gòu)造5.2BKP庫函數(shù)6控制器局域網(wǎng)〔CAN〕6.1CAN存放器構(gòu)造6.2CAN庫函數(shù)7DMA控制器〔DMA〕7.1DMA存放器構(gòu)造7.2DMA庫函數(shù)8外部中斷/事件控制器〔EXTI〕8.1EXTI存放器構(gòu)造8.2EXTI庫函數(shù)9FLASH存儲器(FLASH)9.1FLASH存放器構(gòu)造9.2FLASH庫函數(shù)譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIO10通用輸入/輸出〔GPIO〕GPIO驅(qū)動可以用作多個用途,包括管腳設(shè)置,單位設(shè)置/重置,鎖定機制,從端口管腳讀入或者向端口管腳寫入數(shù)據(jù)。Section10.1GPIO存放器構(gòu)造描述了固件函數(shù)庫所使用的數(shù)據(jù)構(gòu)造,Section10.2固件庫函數(shù)介紹了函數(shù)庫里的所有函數(shù)。10.1GPIO存放器構(gòu)造GPIO存放器構(gòu)造,GPIO_TypeDef和AFIO_TypeDef,在文件“stm32f10x_map.h下:typedefstruct{vu32CRL;vu32CRH;vu32IDR;vu32ODR;vu32BSRR;vu32BRR;vu32LCKR;}GPIO_TypeDefTypedefstruct{vu32EVCR;vu32MAPR;vu32EXTICR[4];}AFIO_TypeDef;Table178.例舉了GPIO所有存放器。Table178.GPIO存放器存放器描述CRL端口配置低存放器CRH端口配置高存放器IDR端口輸入數(shù)據(jù)存放器ODR端口輸出數(shù)據(jù)存放器BSRR端口位設(shè)置/復(fù)位存放器BRR端口位復(fù)位存放器LCKR端口配置鎖定存放器EVCR事件控制存放器MAPR復(fù)用重映射和調(diào)試I/O配置存放器譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIOEXTICR外部中斷線路0-15配置存放器五個GPIO外設(shè)聲明于文件“stm32f10x_map.h...#definePERIPH_BASE((u32)0x40000000)#defineAPB1PERIPH_BASEPERIPH_BASE#defineAPB2PERIPH_BASE(PERIPH_BASE+0x10000)#defineAHBPERIPH_BASE(PERIPH_BASE+0x20000)...#defineAFIO_BASE(APB2PERIPH_BASE+0x0000)#defineGPIOA_BASE(APB2PERIPH_BASE+0x0800)#defineGPIOB_BASE(APB2PERIPH_BASE+0x0C00)#defineGPIOC_BASE(APB2PERIPH_BASE+0x1000)#defineGPIOD_BASE(APB2PERIPH_BASE+0x1400)#defineGPIOE_BASE(APB2PERIPH_BASE+0x1800)#ifndefDEBUG...#ifdef_AFIO#defineAFIO((AFIO_TypeDef*)AFIO_BASE)#endif/*_AFIO*/#ifdef_GPIOA#defineGPIOA((GPIO_TypeDef*)GPIOA_BASE)#endif/*_GPIOA*/#ifdef_GPIOB#defineGPIOB((GPIO_TypeDef*)GPIOB_BASE)#endif/*_GPIOB*/#ifdef_GPIOC#defineGPIOC((GPIO_TypeDef*)GPIOC_BASE)#endif/*_GPIOC*/#ifdef_GPIOD#defineGPIOD((GPIO_TypeDef*)GPIOD_BASE)#endif/*_GPIOD*/#ifdef_GPIOE#defineGPIOE((GPIO_TypeDef*)GPIOE_BASE)#endif/*_GPIOE*/...#else/*DEBUG*/...#ifdef_AFIOEXTAFIO_TypeDef*AFIO;#endif/*_AFIO*/#ifdef_GPIOAEXTGPIO_TypeDef*GPIOA;#endif/*_GPIOA*/譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIO#ifdef_GPIOBEXTGPIO_TypeDef*GPIOB;#endif/*_GPIOB*/#ifdef_GPIOCEXTGPIO_TypeDef*GPIOC;#endif/*_GPIOC*/#ifdef_GPIODEXTGPIO_TypeDef*GPIOD;#endif/*_GPIOD*/#ifdef_GPIOEEXTGPIO_TypeDef*GPIOE;#endif/*_GPIOE*/...#endif使用Debug模式時,初始化指針AFIO,GPIOA,GPIOB,GPIOC,GPIOD和GPIOE于文件“stm32f10x_lib.c:〞#ifdef_GPIOAGPIOA=(GPIO_TypeDef*)GPIOA_BASE;#endif/*_GPIOA*/#ifdef_GPIOBGPIOB=(GPIO_TypeDef*)GPIOB_BASE;#endif/*_GPIOB*/#ifdef_GPIOCGPIOC=(GPIO_TypeDef*)GPIOC_BASE;#endif/*_GPIOC*/#ifdef_GPIODGPIOD=(GPIO_TypeDef*)GPIOD_BASE;#endif/*_GPIOD*/#ifdef_GPIOEGPIOE=(GPIO_TypeDef*)GPIOE_BASE;#endif/*_GPIOE*/#ifdef_AFIOAFIO=(AFIO_TypeDef*)AFIO_BASE;#endif/*_AFIO*/為了訪問GPIO存放器,,_GPIO,_AFIO,_GPIOA,_GPIOB,_GPIOC,_GPIOD和_GPIOE必須在文件“stm32f10x_conf.h#define_GPIO#define_GPIOA#define_GPIOB#define_GPIOC#define_GPIOD#define_GPIOE#define_AFIO譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIO10.2GPIO庫函數(shù)Table179.例舉了GPIO的庫函數(shù)Table179.GPIO庫函數(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中的每一個參數(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ù)GPIO_DeInitTable180.描述了函數(shù)GPIO_DeInit函數(shù)名GPIO_DeInit函數(shù)原形voidGPIO_DeInit(GPIO_TypeDef*GPIOx)功能描述將外設(shè)GPIOx存放器重設(shè)為缺省值輸入?yún)?shù)GPIOx:x可以是A,B,C,D或者,來選擇GPIO外設(shè)輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)RCC_APB2PeriphResetCmd()例:/*ResetstheGPIOAperipheralregisterstotheirdefaultresetvalues*/GPIO_DeInit(GPIOA);譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIO10.2.2函數(shù)GPIO_AFIODeInitTable181.描述了函數(shù)GPIO_AFIODeInitTable181.函數(shù)GPIO_AFIODeInit函數(shù)名GPIO_AFIODeInit函數(shù)原形voidGPIO_AFIODeInit(void)功能描述將復(fù)用功能〔重映射事件控制和EXTI設(shè)置〕重設(shè)為缺省值輸入?yún)?shù)無輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)RCC_APB2PeriphResetCmd()例:/*ResetstheAlternatefunctionsregisterstotheirdefaultresetvalues*/GPIO_AFIODeInit();10.2.3函數(shù)GPIO_InitTable182.描述了函數(shù)GPIO_InitTable182.函數(shù)GPIO_Init函數(shù)名GPIO_Init函數(shù)原形voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct)功能描述根據(jù)GPIO_InitStruct中指定的參數(shù)初始化外設(shè)GPIOx存放器輸入?yún)?shù)1GPIOx:x可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸入?yún)?shù)2GPIO_InitStruct:指向構(gòu)造GPIO_InitTypeDef的指針,包含了外設(shè)GPIO的配置信息參閱Section:GPIO_InitTypeDef查閱更多該參數(shù)允許取值X圍輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無GPIO_InitTypeDefstructureGPIO_InitTypeDef定義于文件“stm32f10x_gpio.h:〞typedefstruct{u16GPIO_Pin;GPIOSpeed_TypeDefGPIO_Speed;GPIOMode_TypeDefGPIO_Mode;譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIO}GPIO_InitTypeDefGPIO_Pin該參數(shù)選擇待設(shè)置的GPIO管腳,使用操作符“的任意組合。Table183.GPIO_Pin值GPIO_Pin描述GPIO_Pin_None無管腳被選中GPIO_Pin_0選中管腳0GPIO_Pin_1選中管腳1GPIO_Pin_2選中管腳2GPIO_Pin_3選中管腳3GPIO_Pin_4選中管腳4GPIO_Pin_5選中管腳5GPIO_Pin_6選中管腳6GPIO_Pin_7選中管腳7GPIO_Pin_8選中管腳8GPIO_Pin_9選中管腳9GPIO_Pin_10選中管腳10GPIO_Pin_11選中管腳11GPIO_Pin_12選中管腳12GPIO_Pin_13選中管腳13GPIO_Pin_14選中管腳14GPIO_Pin_15選中管腳15GPIO_Pin_All選中全部管腳GPIO_SpeedGPIO_SpeedGPIO_Speed用以設(shè)置選中管腳的速率。Table184.給出了該參數(shù)可取的值。Table184.GPIO_Speed值GPIO_Speed描述GPIO_Speed_10MHz最高輸出速率10MHzGPIO_Speed_2MHz最高輸出速率2MHzGPIO_Speed_50MHz最高輸出速率50MHzGPIO_ModeGPIO_Mode用以設(shè)置選中管腳的工作狀態(tài)。Table185.給出了該參數(shù)可取的值。Table185.GPIO_Mode值GPIO_Speed描述GPIO_Mode_AIN模擬輸入GPIO_Mode_IN_FLOATING浮空輸入GPIO_Mode_IPD下拉輸入GPIO_Mode_IPU上拉輸入GPIO_Mode_Out_OD開漏輸出譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIOGPIO_Mode_Out_PP推挽輸出GPIO_Mode_AF_OD復(fù)用開漏輸出GPIO_Mode_AF_PP復(fù)用推挽輸出注意:當(dāng)某管腳設(shè)置為上拉或者下拉輸入模式,使用存放器Px_BSRR和PxBRRGPIO_Mode允許同時設(shè)置GPIO方向〔輸入輸出〕和對應(yīng)的輸入/輸出設(shè)置,:位[7:4]對應(yīng)GPIO方向,位[4:0]對應(yīng)配置。GPIO方向有如下索引-GPIO輸入模式=0x00-GPIO輸出模式=0x01Table186.給出了所有GPIO_Mode的索引和編碼Table186.GPIO_Mode的索引和編碼GPIO方向索引模式設(shè)置模式代碼GPIOInput0x00GPIO_Mode_AIN0x000x00GPIO_Mode_IN_FLOATING0x040x04GPIO_Mode_IPD0x080x28GPIO_Mode_IPU0x080x48GPIOOutput0x01GPIO_Mode_Out_OD0x040x14GPIO_Mode_Out_PP0x000x10GPIO_Mode_AF_OD0x0C0x1CGPIO_Mode_AF_PP0x080x18例:/*ConfigurealltheGPIOAinInputFloatingmode*/GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);10.2.4函數(shù)GPIO_StructInitTable187.描述了函數(shù)GPIO_StructInitTable187.函數(shù)GPIO_StructInit函數(shù)名GPIO_StructInit函數(shù)原形voidGPIO_StructInit(GPIO_InitTypeDef*GPIO_InitStruct)功能描述把GPIO_InitStruct中的每一個參數(shù)按缺省值填入輸入?yún)?shù)GPIO_InitStruct:指向構(gòu)造GPIO_InitTypeDef的指針,待初始化輸出參數(shù)無返回值無譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIO先決條件無被調(diào)用函數(shù)無Table188.給出了GPIO_InitStruct各個成員的缺省值Table188.GPIO_InitStruct缺省值成員缺省值GPIO_PinGPIO_Pin_AllGPIO_SpeedGPIO_Speed_2MHzGPIO_ModeGPIO_Mode_IN_FLOATING例:/*InitializetheGPIOInitStructureparameters*/GPIO_InitTypeDefGPIO_InitStructure;GPIO_StructInit(&GPIO_InitStructure);10.2.5函數(shù)GPIO_ReadInputDataBitTable189.描述了函數(shù)GPIO_ReadInputDataBitTable189.函數(shù)GPIO_ReadInputDataBit函數(shù)名GPIO_ReadInputDataBit函數(shù)原形u8GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,u16GPIO_Pin)功能描述讀取指定端口管腳的輸入輸入?yún)?shù)1GPIOx:x可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸入?yún)?shù)2GPIO_Pin:待讀取的端口位參閱Section:GPIO_Pin查閱更多該參數(shù)允許取值X圍輸出參數(shù)無返回值輸入端口管腳值先決條件無被調(diào)用函數(shù)無例:/*ReadstheseventhpinoftheGPIOBandstoreitinReadValuevariable*/u8ReadValue;ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);10.2.6函數(shù)GPIO_ReadInputDataTable190.描述了函數(shù)GPIO_ReadInputData譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIOTable190.函數(shù)GPIO_ReadInputData函數(shù)名GPIO_ReadInputData函數(shù)原形u16GPIO_ReadInputData(GPIO_TypeDef*GPIOx)功能描述讀取指定的GPIO端口輸入輸入?yún)?shù)GPIOx:x可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸出參數(shù)無返回值GPIO輸入數(shù)據(jù)端口值先決條件無被調(diào)用函數(shù)無例:/*ReadtheGPIOCinputdataportandstoreitinReadValuevariable*/u16ReadValue;ReadValue=GPIO_ReadInputData(GPIOC);10.2.7函數(shù)GPIO_ReadOutputDataBitTable191.描述了GPIO_ReadOutputDataBitTable191.函數(shù)GPIO_ReadOutputDataBit函數(shù)名GPIO_ReadOutputDataBit函數(shù)原形u8GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,u16GPIO_Pin)功能描述讀取指定端口管腳的輸出輸入?yún)?shù)1GPIOx:x可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸入?yún)?shù)2GPIO_Pin:待讀取的端口位參閱Section:GPIO_Pin查閱更多該參數(shù)允許取值X圍輸出參數(shù)無返回值輸出端口管腳值先決條件無被調(diào)用函數(shù)無例:/*ReadstheseventhpinoftheGPIOBandstoreitinReadValuevariable*/u8ReadValue;ReadValue=GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_7);10.2.8函數(shù)GPIO_ReadOutputData譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIOTable192.描述了函數(shù)GPIO_ReadOutputDataTable192.函數(shù)GPIO_ReadOutputData函數(shù)名GPIO_ReadOutputData函數(shù)原形u16GPIO_ReadOutputData(GPIO_TypeDef*GPIOx)功能描述讀取指定的GPIO端口輸出輸入?yún)?shù)GPIOx:x可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸出參數(shù)無返回值GPIO輸出數(shù)據(jù)端口值先決條件無被調(diào)用函數(shù)無例:/*ReadtheGPIOCoutputdataportandstoreitinReadValuevariable*/u16ReadValue;ReadValue=GPIO_ReadOutputData(GPIOC);10.2.9函數(shù)GPIO_SetBitsTable193.描述了GPIO_SetBitsTable193.函數(shù)GPIO_SetBits函數(shù)名GPIO_SetBits函數(shù)原形voidGPIO_SetBits(GPIO_TypeDef*GPIOx,u16GPIO_Pin)功能描述設(shè)置指定的數(shù)據(jù)端口位輸入?yún)?shù)1GPIOx:x可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸入?yún)?shù)2GPIO_Pin:待設(shè)置的端口位該參數(shù)可以取GPIO_Pin_x(x可以是0-15)的任意組合參閱Section:GPIO_Pin查閱更多該參數(shù)允許取值X圍輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無例:/*SettheGPIOAportpin10andpin15*/GPIO_SetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);10.2.10函數(shù)GPIO_ResetBits譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIOTable194.描述了GPIO_ResetBitsTable194.函數(shù)GPIO_ResetBits函數(shù)名GPIO_ResetBits函數(shù)原形voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,u16GPIO_Pin)功能描述去除指定的數(shù)據(jù)端口位輸入?yún)?shù)1GPIOx:x可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸入?yún)?shù)2GPIO_Pin:待去除的端口位該參數(shù)可以取GPIO_Pin_x(x可以是0-15)的任意組合參閱Section:GPIO_Pin查閱更多該參數(shù)允許取值X圍輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無例:/*ClearstheGPIOAportpin10andpin15*/GPIO_ResetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);10.2.11函數(shù)GPIO_WriteBitTable195.描述了GPIO_WriteBitTable195.函數(shù)GPIO_WriteBit函數(shù)名GPIO_WriteBit函數(shù)原形voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,u16GPIO_Pin,BitActionBitVal)功能描述設(shè)置或者去除指定的數(shù)據(jù)端口位輸入?yún)?shù)1GPIOx:x可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸入?yún)?shù)2GPIO_Pin:待設(shè)置或者去除指的端口位該參數(shù)可以取GPIO_Pin_x(x可以是0-15)的任意組合參閱Section:GPIO_Pin查閱更多該參數(shù)允許取值X圍輸入?yún)?shù)3BitVal:該參數(shù)指定了待寫入的值該參數(shù)必須取枚舉BitAction的其中一個值Bit_RESET:去除數(shù)據(jù)端口位Bit_SET:設(shè)置數(shù)據(jù)端口位輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無例:譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIO/*SettheGPIOAportpin15*/GPIO_WriteBit(GPIOA,GPIO_Pin_15,Bit_SET);10.2.12函數(shù)GPIO_WriteTable196.描述了GPIO_WriteTable196.函數(shù)GPIO_Write函數(shù)名GPIO_Write函數(shù)原形voidGPIO_Write(GPIO_TypeDef*GPIOx,u16PortVal)功能描述向指定GPIO數(shù)據(jù)端口寫入數(shù)據(jù)輸入?yún)?shù)1GPIOx:x可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸入?yún)?shù)2PortVal:待寫入端口數(shù)據(jù)存放器的值輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無例:/*WritedatatoGPIOAdataport*/GPIO_Write(GPIOA,0x1101);10.2.13函數(shù)GPIO_PinLockConfigTable197.描述了GPIO_PinLockConfigTable197.函數(shù)GPIO_PinLockConfig函數(shù)名GPIO_PinLockConfig函數(shù)原形voidGPIO_PinLockConfig(GPIO_TypeDef*GPIOx,u16GPIO_Pin)功能描述鎖定GPIO管腳設(shè)置存放器輸入?yún)?shù)1GPIOx:x可以是A,B,C,D或者E,來選擇GPIO外設(shè)輸入?yún)?shù)2GPIO_Pin:待鎖定的端口位該參數(shù)可以取GPIO_Pin_x(x可以是0-15)的任意組合參閱Section:GPIO_Pin查閱更多該參數(shù)允許取值X圍輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無例:/*LockGPIOAPin0andPin1*/譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIOGPIO_PinLockConfig(GPIOA,GPIO_Pin_0|GPIO_Pin_1);10.2.14函數(shù)GPIO_EventOutputConfigTable198.描述了GPIO_EventOutputConfigTable198.函數(shù)GPIO_EventOutputConfig函數(shù)名GPIO_EventOutputConfig函數(shù)原形voidGPIO_EventOutputConfig(u8GPIO_PortSource,u8GPIO_PinSource)功能描述選擇GPIO管腳用作事件輸出輸入?yún)?shù)1GPIO_PortSource:選擇用作事件輸出的GPIO端口參閱Section:GPIO_PortSource查閱更多該參數(shù)允許取值X圍輸入?yún)?shù)2GPIO_PinSource:事件輸出的管腳該參數(shù)可以取GPIO_PinSourcex(x可以是0-15)輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無GPIO_PortSourceGPIO_PortSource用以選擇用作事件輸出的GPIO端口。Table199.給出了該參數(shù)可取的值Table199.GPIO_PortSource值GPIO_PortSource描述GPIO_PortSourceGPIOA選擇GPIOAGPIO_PortSourceGPIOB選擇GPIOBGPIO_PortSourceGPIOC選擇GPIOCGPIO_PortSourceGPIOD選擇GPIODGPIO_PortSourceGPIOE選擇GPIOE例:/*SelectstheGPIOEpin5forEVENToutput*/GPIO_EventOutputConfig(GPIO_PortSourceGPIOE,GPIO_PinSource5);10.2.15函數(shù)GPIO_EventOutputCmdTable200.描述了GPIO_EventOutputCmdTable200.函數(shù)GPIO_EventOutputCmd函數(shù)名GPIO_EventOutputCmd函數(shù)原形voidGPIO_EventOutputCmd(FunctionalStateNewState)譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIO功能描述使能或者失能事件輸出輸入?yún)?shù)1NewState:事件輸出的新狀態(tài)這個參數(shù)可以?。篍NABLE或者DISABLE輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無例:/*EnableEventOuputtotheGPIOCpin6*/GPIO_EventOutputConfig(GPIO_PortSourceGPIOC,GPIO_PinSource6);GPIO_EventOutputCmd(ENABLE);10.2.16函數(shù)GPIO_PinRemapConfigTable201.描述了GPIO_PinRemapConfigTable201.函數(shù)GPIO_PinRemapConfig函數(shù)名GPIO_PinRemapConfig函數(shù)原形voidGPIO_PinRemapConfig(u32GPIO_Remap,FunctionalStateNewState)功能描述改變指定管腳的映射輸入?yún)?shù)1GPIO_Remap:選擇重映射的管腳參閱Section:GPIO_Remap查閱更多該參數(shù)允許取值X圍輸入?yún)?shù)2NewState:管腳重映射的新狀態(tài)這個參數(shù)可以?。篍NABLE或者DISABLE輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無GPIO_RemapGPIO_Remap用以選擇用作事件輸出的GPIO端口。Table202.給出了該參數(shù)可取的值Table202.GPIO_Remap值GPIO_Remap描述GPIO_Remap_SPI1SPI1復(fù)用功能映射GPIO_Remap_I2C1I2C1復(fù)用功能映射GPIO_Remap_USART1USART1復(fù)用功能映射GPIO_PartialRemap_USART3USART2復(fù)用功能映射GPIO_FullRemap_USART3USART3復(fù)用功能完全映射譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享GPIOGPIO_PartialRemap_TIM1USART3復(fù)用功能局部映射GPIO_FullRemap_TIM1TIM1復(fù)用功能完全映射GPIO_PartialRemap1_TIM2TIM2復(fù)用功能局部映射1GPIO_PartialRemap2_TIM2TIM2復(fù)用功能局部映射2GPIO_FullRemap_TIM2TIM2復(fù)用功能完全映射GPIO_PartialRemap_TIM3TIM3復(fù)用功能局部映射GPIO_FullRemap_TIM3TIM3復(fù)用功能完全映射GPIO_Remap_TIM4TIM4復(fù)用功能映射GPIO_Remap1_CANCAN復(fù)用功能映射1GPIO_Remap2_CANCAN復(fù)用功能映射2GPIO_Remap_PD01PD01復(fù)用功能映射GPIO_Remap_SWJ_NoJTRST除JTRST外SWJ完全使能〔JTAG+SW-DP〕GPIO_Remap_SWJ_JTAGDisableJTAG-DP失能+SW-DP使能GPIO_Remap_SWJ_DisableSWJ完全失能〔JTAG+SW-DP〕例:/*I2C1_SCLonPB.08,I2C1_SDAonPB.09*/GPIO_PinRemapConfig(GPIO_Remap_I2C1,ENABLE);10.2.17函數(shù)GPIO_EXTILineConfigTable203.描述了GPIO_EXTILineConfigTable203.函數(shù)GPIO_EXTILineConfig函數(shù)名GPIO_EXTILineConfig函數(shù)原形voidGPIO_EXTILineConfig(u8GPIO_PortSource,u8GPIO_PinSource)功能描述選擇GPIO管腳用作外部中斷線路輸入?yún)?shù)1GPIO_PortSource:選擇用作外部中斷線源的GPIO端口參閱Section:GPIO_PortSource查閱更多該參數(shù)允許取值X圍輸入?yún)?shù)2GPIO_PinSource:待設(shè)置的外部中斷線路該參數(shù)可以取GPIO_PinSourcex(x可以是0-15)輸出參數(shù)無返回值無先決條件無被調(diào)用函數(shù)無例:/*SelectsPB.08asEXTILine8*/GPIO_EXTILineConfig(GPIO_PortSource_GPIOB,GPIO_PinSource8);譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享11內(nèi)部集成電路〔IC〕11.1I2C存放器構(gòu)造11.2I2C庫函數(shù)12獨立看門狗〔IWDG〕12.1IWDG存放器構(gòu)造12.2IWDG庫函數(shù)譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文版為準(zhǔn)word文檔精品文檔分享NVIC13嵌套向量中斷控制器〔NVIC〕NVIC驅(qū)動有多種用途:例如使能或者失能IRQ中斷,使能或者失能單獨的IRQ通道,改變IRQ通道的優(yōu)先級等等。Section13.1NVIC存放器構(gòu)造描述了固件函數(shù)庫所使用的數(shù)據(jù)構(gòu)造,Section13.2固件庫函數(shù)介紹了函數(shù)庫里的所有函數(shù)。13.1NVIC存放器構(gòu)造NVIC存放器構(gòu)造,NVIC_TypeDeff,在文件“stm32f10x_map.htypedefstruct{vu32Enable[2];u32RESERVED0[30];vu32Disable[2];u32RSERVED1[30];vu32Set[2];u32RESERVED2[30];vu32Clear[2];u32RESERVED3[30];vu32Active[2];u32RESERVED4[62];vu32Priority[11];}NVIC_TypeDef;/*NVICStructure*/typedefstruct{vu32CPUID;vu32IRQControlState;vu32ExceptionTableOffset;vu32AIRC;vu32SysCtrl;vu32ConfigCtrl;vu32SystemPriority[3];vu32SysHandlerCtrl;vu32ConfigFaultStatus;vu32HardFaultStatus;vu32DebugFaultStatus;vu32MemoryManageFaultAddr;vu32BusFaultAddr;}SCB_TypeDef;/*SystemControlBlockStructure*/譯文英文原版為UM0427Oct.2007Rev2,譯文僅供參考,與英文版沖突的,以英文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 9月高一上學(xué)期班主任工作計劃范文
- 2025年電銷工作總結(jié)與2025年計劃
- 度宣傳工作總結(jié)及某年工作計劃
- 9月份銷售工作計劃例文
- 第二學(xué)期保教管理的工作計劃
- 2025財務(wù)出納工作總結(jié)與2025計劃
- 2025幼兒園健康教育工作計劃范例
- 關(guān)于學(xué)生個人實習(xí)計劃
- 《食品農(nóng)藥殘留檢測》課件
- 《食管癌鑒別診斷》課件
- 心理成長與發(fā)展智慧樹知到期末考試答案章節(jié)答案2024年武漢職業(yè)技術(shù)學(xué)院
- 青少版新概念3B-U21市公開課一等獎省賽課微課金獎?wù)n件
- 儲能業(yè)務(wù)培訓(xùn)
- 2024年四川省水電投資經(jīng)營集團普格電力有限公司招聘筆試參考題庫含答案解析
- 2024屆新高考物理沖刺復(fù)習(xí):“正則動量”解決帶電粒子在磁場中的運動問題
- PLC控制Y-△降壓啟動控制設(shè)計
- 義務(wù)教育音樂(2022版)新課程標(biāo)準(zhǔn)考試測試題及答案5套
- 財產(chǎn)損害賠償起訴狀范本
- 創(chuàng)業(yè)管理(上海財經(jīng)大學(xué))智慧樹知到期末考試答案2024年
- 【安徽山鷹紙業(yè)股份有限公司盈利能力探析(任務(wù)書+開題報告)3000字】
- 人教版九年級化學(xué)上冊期末試卷及答案免費
評論
0/150
提交評論