<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 解析STM32的庫函數(shù)

          解析STM32的庫函數(shù)

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          意法半導(dǎo)體在推出STM32微控制器之初,也同時提供了一套完整細致的固件開發(fā)包,里面包含了在STM32開發(fā)過程中所涉及到的所有底層操作。通過在程序開發(fā)中引入這樣的固件開發(fā)包,可以使開發(fā)人員從復(fù)雜冗余的底層寄存器操作中解放出來,將精力專注應(yīng)用程序的開發(fā)上,這便是ST推出這樣一個開發(fā)包的初衷。


          但這對于許多從51/AVR這類單片機的開發(fā)轉(zhuǎn)到STM32平臺的開發(fā)人員來說,勢必有一個不適應(yīng)的過程。因為程序開發(fā)不再是從寄存器層次起始,而要首先去熟悉STM32所提供的固件庫。那是否一定要使用固件庫呢?當然不是。但STM32微控制器的寄存器規(guī)??刹皇浅R姷?位單片機可以比擬,若自己細細琢磨各個寄存器的意義,必然會消耗相當?shù)臅r間,并且對于程序后續(xù)的維護,升級來說也會增加資源的消耗。對于當前“時間就是金錢”的行業(yè)競爭環(huán)境,無疑使用庫函數(shù)進行STM32的產(chǎn)品開發(fā)是更好的選擇。本文將通過一個簡單的例子對STM32的庫函數(shù)做一個簡單的剖析。

          本文引用地址:http://www.ex-cimer.com/article/201611/318959.htm


          以最常用的GPIO設(shè)備的初始化函數(shù)為例,如下程序段一:


          GPIO_InitTypeDef GPIO_InitStructure; 1


          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; 2


          GPIO_InitStructure.GPIO_Speed =
          GPIO_Speed_50MHz; 3


          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 4


          GPIO_Init(GPIOA , &GPIO_InitStructure);
          5


          這是一個在STM32的程序開發(fā)中經(jīng)常使用到的GPIO初始化程序段,其功能是將GPIOA.4口初始化為推挽輸出狀態(tài),并最大翻轉(zhuǎn)速率為50MHz。下面逐一分解:


          l 首先是1,該語句顯然定義了一個GPIO_InitTypeDef類型的變量,名為GPIO_InitStructure,則找出GPIO_InitTypeDef的原型位于“stm32f10x_gpio.h”文件,原型如下:


          typedef struct


          {


          u16 GPIO_Pin;


          GPIOSpeed_TypeDef GPIO_Speed;


          GPIOMode_TypeDef GPIO_Mode;


          }GPIO_InitTypeDef;



          關(guān)鍵詞: STM32庫函

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();