日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32看门狗总结

發布時間:2024/4/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32看门狗总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://www.openedv.com/thread-56260-1-1.html

?

STM32看門狗總結

調原子哥的開發板一年多,基本上能用,但是對于STM32某些基本外設的工作機理還不甚明了。借此暑假的機會對各個外設的功能做一個簡短的總結,在提高自己基礎知識的同時,也給其他同學提供一些參考。

先來看門狗部分的內容。

看門狗部分內容當中較難理解的是窗口看門狗,其中窗口值設置以及如何引發復位更是很難搞懂,因此從根本上分析一下窗口看門狗的工作原理,而與其有關的中斷則略過。

stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。獨立看門狗有自己獨立的40Khz時鐘,不存在使能問題;而窗口看門狗使用的是PCLK1時鐘,需要先使能時鐘。以下是關于看門狗的具體說明:

①、獨立看門狗是限制喂狗時間在0-x內,x由你的相關寄存器決定。喂狗的時間不能過晚。

②、窗口看門狗,所以稱之為窗口就是因為其喂狗時間是一個有上下限的范圍內,你可以通過設定相關寄存器,設定其上限時間和下限時間。喂狗的時間不能過早也不能過晚。

顯而易見的是,獨立看門狗比較簡單,容易理解。

這里,主要對窗口看門狗的詳細含義作具體說明。

看門狗的上窗口就是配置寄存器WWDG->CFR里設定的W[6:0];下窗口是0x40;當窗口看門狗的計數器在上窗口之外,或是低于下窗口值都會產生復位。如上圖所講,當計數器的值遞減到0x3f的計數時間內未進行喂狗操作,則會觸發復位;其次,如果在計數器值遞減到配置寄存器WWDG->CFR里設定的W[6:0]之前進行喂狗操作,也會觸發復位。所以,在使用窗口看門狗時,要設定兩個值,一個就是窗口看門狗的上窗口值,即配置寄存器WWDG->CFR里設定的W[6:0],另一個就是遞減計數器的計數初值。

再結合上圖中的邏輯關系分析一下:

如圖中所示標號,①③表示與門,②表示非或門;

1、當T[6:0]>W[6:0]時,比較器輸出的值是1,如果此時重裝載WWDG_CR,所以③就會輸出1,②的輸出也肯定是1,又因為使能了窗口看門狗,所以WWDG_CR的第7位WDGA也為1,即與門①的輸出是1,此時會觸發復位。簡單的概括來說,就是當遞減計數器的值在遞減到上窗口值W[6:0]之前進行喂狗操作(即重裝載WWDG_CR),會觸發看門狗復位。

2、當T[6:0]的第6位變為0時,即T[6:0]的值變為0x3f,此時②的輸出肯定為1,而WDGA也為1,因此①的輸出是1,會觸發看門狗復位。簡單的概括來說,就是當遞減計數器的值在到達0x3f時仍未進行喂狗操作(即重裝載WWDG_CR),同樣會觸發看門狗復位。

??

上窗口的值可以只有設定,7位二進制數最大只可以設定為127(0x7f),最小又必須大于其下窗口的0x40,所以其取值范圍為64~127(0x40~0x7f),否則不能保證窗口。

配置寄存器WWDG->CFR寄存器中的[8:7]兩個位的設置為計數器設定時鐘分頻系數,確定這個計數器可以定時的時間范圍,從而確定窗口的時間范圍。

窗口看門狗的時鐘來自于PCLK1,在時鐘配置中,其頻率為外部時鐘經倍頻器后的二分頻時鐘,即為36Mhz,如上圖STM32時鐘樹所示。

窗口看門狗的超時公式如下:

36M時鐘下窗口看門狗的最小最大超時表:

表中數據的具體計算如下所示:

①、當T[5:0]全部取0時,7位計數器的值是0x40,此時距離復位值只能計數一次,在此時間之內必須執行喂狗操作,否則觸發復位。

從而可知各個WDGTB值下的最小超時時間,如WDGTB=0時,

Twwdg=4096×2^0×1/36?(us)=113?us,依次可計算出其他WDGTB值下的最小超時時間。

②、當T[5:0]全部取1時,7位計數器的值是0x7f,此時距離復位值遞減計數0x40次(0x3f+1),在此時間之內執行喂狗操作可避免復位。

從而可知各個WDGTB值下的最大超時時間,如WDGTB=0時,

Twwdg=4096×2^0×64/36?(us)=7281.7?us,依次可計算出其他WDGTB值下的最大超時時間。

?

?

?

?

STM32?系列的CPU,有多達8個定時器,其中TIM1和TIM8是能夠產生三對PWM互補輸出的高級定時器,常用于三相電機的驅動,它們的時鐘由APB2的輸出產生。其它6個為普通定時器,時鐘由APB1的輸出產生。

通用定時器的定義:STM32的通用定時器是一個通過可編程預分頻器(PSC)驅動的16位自動裝載計數器(CNT)構成。

功用:STM32的通用定時器可以被用于測量輸入信號的脈沖長度(輸入捕獲)或者產生輸出波形(輸出比較和PWM)等。

分頻系數:決定定時器的時基,即最小定時時間。

定時器的時鐘來源:

從圖中可以看出,定時器的時鐘不是直接來自APB1或APB2,而是來自于輸入為APB1或APB2的一個倍頻器。當APB1的預分頻系數為1時,這個倍頻器不起作用,定時器的時鐘頻率等于APB1的頻率;當APB1的預分頻系數為其它數值(即預分頻系數為2、4、8或16)時,這個倍頻器起作用,定時器的時鐘頻率等于APB1的頻率兩倍。

?

舉一個例子說明。假定AHB=36MHz,因為APB1允許的最大頻率為36MHz,所以APB1的預分頻系數可以取任意數值;

當預分頻系數=1時,APB1=36MHz,TIM2~7的時鐘頻率=36MHz(倍頻器不起作用);

當預分頻系數=2時,APB1=18MHz,在倍頻器的作用下,TIM2~7的時鐘頻率=36MHz。

由于APB1不僅給通用定時器提供時鐘,還給其他外設提供時鐘,因此也體現了APB1?rescaler設計的靈活性。

?

對自動重裝載寄存器賦值,TIM_Period的大小實際上表示的是需要經過TIM_Period次計數后才會發生一次更新或中斷。對TIM_Prescaler的設置,直接決定定時器的時鐘頻率。通俗點說,就是一秒鐘能計數多少次。比如算出來的時鐘頻率是2000,也就是一秒鐘會計數2000次,而此時如果TIM_Period設置為4000,即4000次計數后就會中斷一次。由于時鐘頻率是一秒鐘計數2000次,因此只要2秒鐘,就會中斷一次。發生中斷時間=(TIM_Prescaler+1)*?(TIM_Period+1)/FLK。

同樣需要注意的,一進入中斷服務程序,第一步要做的,就是清除掉中斷標志位。以便下次中斷服務函數的順利執行。

注意:APB1?rescaler后得到的是通用定時器的時鐘源,再次基礎上進行TIM_Prescaler的設置就得到通用定時器具體的時鐘頻率啦。所以小伙伴們千萬不要把文中定時器中經常提到的76MHz時鐘以及由(TIM_Prescaler+1)*/FLK計算得到的時鐘頻率搞混淆啦。

當然,計數器的計數模式比較簡單,這里沒有就其進行詳細的說明。

?

?

今天有同學問我PWM到底咋工作的?為啥這樣啊?為啥啊?直接把我問蒙了。所以今天就來總結一些通用定時器產生PWM輸出。

①、PWM主要就是控制頻率和占空比的:這兩個因素分別通過兩個寄存器控制:TIMX_ARR和TIMX_CCRX。ARR寄存器就是自動重裝寄存器,也就是計數器記到這個數以后清零再開始計,這樣PWM的頻率就是tim_frequency/(TIMX_ARR-1)。在計數時會不停的和CCRX寄存器中的數據進行比較,如果小于的話是高電平或者低電平,計數值大于CCRX值的話電平極性反相。所以這也就控制了占空比。

②、TIM3-CNT中的數據從0計數到ARR中的值,當計數到TIM3_CCRx接收到的數據大小時,由高電平變為低電平,當CNT中的數值增加到ARR寄存器設定的值時就自動清零,從0重新開始計數,并產生一個計數溢出事件,從0計數到ARR值的這段時間是PWM的周期。設置CCRx的值用來改變PWM的占空比。

③、TIM3-CNT的值與TIM3_CCRx中的數據是自動比較,TIM3-CNT的值與TIM3_CCRx中的數據相等時,PWM是自動產生跳變的,此過程是硬件實現的,在原子開發板的例程中找不到有關二者進行比較的代碼,所以不要問在軟件中是如何實現的,因為我找了很長時間沒找到。

④端口重映射

為了優化64腳或100腳封裝的外設數目,可以把一些復用功能重新映射到其他引腳上。設置復用重映射和調試I/O配置寄存器(AFIO_MAPR)實現引腳的重新映射。這時,復用功能不再映射到它們的原始分配上。(注意:重定義的引腳是固定的,不是想重定義到哪個引腳就可以到哪個引腳的!重映像一般只適用于100和144腳的封裝!(具體看哪個外設))。

STM32上有很多I/O口,也有很多的內置外設想I2C,ADC,ISP,USART等?,為了節省引出管腳,這些內置外設基本上是與I/O口共用管腳的,也就是I/O管腳的復用功能。但是STM32還有一特別之處就是:很多復用內置的外設的I/O引腳可以通過重映射功能,從不同的I/O管腳引出,即復用功能的引腳是可通過程序改變的。但這些重映射并不是任意的,只有有些引腳可以重映射.具體哪些引腳stm32參考手冊上的GPIO與AFIO章節上有。一般是定時器,通信接口等數字系統的引腳可以重映射,adc,dac,時鐘這種與模擬量有關的不可以。

簡單的說STM32的IO有3個功能一個是默認的,一個是復用,一個是重映射功能(這個其實也屬于復用),如果配置成復用,則將使用第2個功能,如果配置成復用,同時相應的重映射也配置了,則將使用第3個功能。

STM32的部分重映射實例:

?

?

輸入捕獲實驗

捕獲是如何實現的?與定時器有什么關系?它為什么就能夠捕獲到呢?

先入為主:可以利用定時器捕獲某些IO口的高電平脈寬,脈寬時間可以通過串口打印得到。

輸入捕獲模式可以用來測量脈沖寬度或者測量頻率。STM32定時器除了TIM6和TIM7,其他的都具有輸入捕獲功能。STM32的輸入捕獲,簡單的說就是通過檢測TIMx_CHx上的邊沿信號,在邊沿信號發生跳變(比如上升沿/下降沿)的時候,將當前定時器的值存放到對應的通道的捕獲/比較寄存器(TIMx_CCRx)里面,完成一次捕獲。

捕獲模式與比較模式的理解:

捕獲模式的原理是選定的輸入引腳發生選定的脈沖出發沿的時候,則該時刻定時器的計數值TIMx_CNT將被保存,同時產生中斷(TIMx_CNT的值不會與任何東西進行比較)。該功能最常用的的就是測量一個外來脈沖的脈寬。

比較模式的原理是當CCRx寄存器中設定的值與定時器計數器值相等的時候,相關引腳發生電平跳變,同時產生中斷。該功能常應用于產生一個一定脈寬的PWM波形。

數字濾波器由一個事件計數器組成,它記錄到N個事件后會產生一個輸出的跳變:?這個N可以取值具體參考中文手冊,意思是說:我采樣高電平,只有連續采樣到N個電平是高電平的話我才認為是有效的高電平,低于N個我就認為是無效的。

PWM輸入捕獲模式是輸入捕獲模式的特例,自己理解如下

1.?每個定時器有四個輸入捕獲通道IC1、IC2、IC3、IC4。且IC1?IC2一組,IC3?IC4一組。并且可是設置管腳和寄存器的對應關系。

2.?同一個TIx輸入映射了兩個ICx信號。

3.?這兩個ICx信號分別在相反的極性邊沿有效。

4.?兩個邊沿信號中的一個被選為觸發信號,并且從模式控制器被設置成復位模式。

5.?當觸發信號來臨時,被設置成觸發輸入信號的捕獲寄存器,捕獲“一個PWM周期(即連續的兩個上升沿或下降沿)”,它等于包含TIM時鐘周期的個數(即捕獲寄存器中捕獲的為TIM的計數個數n)。

6.?同樣另一個捕獲通道捕獲觸發信號和下一個相反極性的邊沿信號的計數個數m,即(即高電平的周期或低電平的周期)

7.?由此可以計算出PWM的時鐘周期和占空比了

????frequency=f(TIM時鐘頻率)/n。

????duty?cycle=(高電平計數個數/n),

????若m為高電平計數個數,則duty?cycle=m/n

????若m為低電平計數個數,則duty?cycle=(n-m)/n

注:因為計數器為16位,所以一個周期最多計數65535個,所以測得的?最小頻率=?TIM時鐘頻率/65535。

測量脈寬的理解:

輸入捕獲的原理是,定時器正常計數運行,當外部脈沖到來時,將定時器計數值存起來,當下次脈沖到來時,求出這兩次計數值差值,即為這兩段脈沖的周期。例如,定時器計數到10,外部脈沖到來,使用last_time_CH1存儲10,下次脈沖到來,此時定時器計數值運行到110,使用this_time_CH1存儲110,之后做差,tmp16_CH1存儲差值100,由于定時器運行于100KHZ,10us計數值增加一次,所以脈沖周期為100*10=1000us=1ms,即為1KHZ。當然,定時器會溢出重裝,此時需要將差值補償運算,tmp16_CH1?=?((0xFFFF?-?last_time_CH1)?+?this_time_CH1);可測量的范圍取決于定時器運行的頻率,如果外部頻率慢到當定時器整個計數一周后也沒有觸發兩次,會發生溢出,此時計數值已不準確。所以定時器時鐘配置取決于外部脈沖頻率,應配置得當使得脈沖頻率范圍不致溢出。由于每次外部脈沖都會觸發中斷,尤其是四通道時,所以使用中斷方式會略微占用CPU資源,使用DMA可以解決這一問題。

得到脈沖周期后,即可通過運算獲得外部頻率,進而測速。

?

?

STM32的ADC采樣(翻看網上內容總結)

難點:如何確定采樣周期?如何配置相關寄存器?轉換時間里的12.5是怎么來的?

一、基本概念:ADC轉換就是輸入模擬的信號量,單片機轉換成數字量。讀取數字量必須等轉換完成后,完成一個通道的讀取叫做采樣周期。采樣周期一般來說=轉換時間+讀取時間。而轉換時間=采樣時間+12.5個時鐘周期。采樣時間是你通過寄存器告訴stm32采樣模擬量的時間,設置越長越精確。

?

STM32的ADC模塊各個通道對應的IO

(注意:STM32F103系列最少都擁有2個ADC,STM32F103ZET6包含有3個ADC,STM32F103ZET6內部集成了12位的逐次逼近型模擬數字轉換器,它有多大18個通道,可測量16個外部和2個內部信號源。)

二、規則組和注入組

STM32的ADC通道分為規則組和注入組。因為ADC轉換模塊只有一個ADC功能核心,它能夠支持這么多通道的數據轉換,用的是分時復用的方法。分組的目的是為了賦予特定的ADC通道優先權。

比如,ADCx_IN2被分配到規則組,ADCx_IN3被分配到注入組,在IN2通道進行數據轉換的過程中,外部信號觸發了IN3通道的轉換,則ADC功能核心將暫停IN2的轉換,轉去執行IN3的轉換,完成轉換后在回來執行IN2的轉換。由此可知,注入組的通道具有優先轉換權,可以打斷規則組通道正在進行的轉換。

?

三、STM32?ADC?采樣?頻率的確定

①、可編程的通道采樣時間

ADC?使用若干個ADC_CLK?周期對輸入電壓采樣,采樣周期數目可以通過

ADC_SMPR1?和ADC_SMPR2?寄存器中的SMP[2:0]位而更改。每個通道可以以

不同的時間采樣。

總轉換時間如下?計算:

TCONV?=?采樣時間+?12.5?個周期

例如:

當ADCCLK=14MHz?和1.5?周期的采樣時間

TCONV?=?1.5?+?12.5?=?14?周期?=?1μs

?

轉換時間里的12.5是怎么來的?

原子哥告訴我,ST固定死了的,咱們不用關心。

?

②、具體分析如下:

(1)我們的輸入信號是50Hz?(周期為20ms),初步定為1周期200個采樣點,(注:一周期最少采20個點,即采樣率最少為1k)?,每2個采樣點間隔為?20ms?/200?=?100?us

ADC可編程的通道采樣時間我們選最小的?1.5?周期,則?ADC采樣周期一周期大小為

100us?/1.5=66us?。?ADC?時鐘頻率為?1/66us?=15?KHz。

??ADC可編程的通道采樣時間我們選71.5?周期,則?ADC采樣周期一周期大小為

(100us?/71.5)?。?ADC?時鐘頻率為?7.15MHz。

?

(2)接下來我們要確定系統時鐘:我們?用的是?8M?Hz?的外部晶振做時鐘源(HSE),估計得?經過?LL倍頻?LL?倍頻系數分別為2的整數倍,最大72?MHz。為了?提高數據計算效率,我們把系統時鐘定為72MHz,(PLL?9倍?頻)。則PCLK2=72MHz,PCLK1=36MHz;

?

我們通過設置時鐘配置寄存器(RCC_CFGR)?中?有?為ADC?時鐘提供一個專用的可編程預分器,將PCLK2?8?分頻后作為ADC?的時鐘,則可?知ADC?時鐘頻率為?9MHz

????????從手冊可知:?ADC?轉換時間:

STM32F103xx?增強型產品:ADC?時鐘為56MHz?時為1μs(ADC?時鐘為72MHz?為1.17μs)

?(3)由以上分析可知:不太對應,我們重新對以上內容調整,提出如下兩套方案:

?

方案一:我們的輸入信號是50Hz?(周期為20ms),初步定為1周期2500個采樣點,(注:一周期最少采20個點,即采樣率最少為1k)?,每2個采樣點間隔為?20ms?/2500?=?8?us

ADC可編程的通道采樣時間我們選71.5?周期,則?ADC采樣周期一周期大小為

8us?/71.5?。?ADC?時鐘頻率約為?9?MHz。

將PCLK2?8?分頻后作為ADC?的時鐘,則可知ADC?時鐘頻率為?9MHz

?

方案二:我們的輸入信號是50Hz?(周期為20ms),初步定為1周期1000個采樣點,(注:一周期最少采20個點,即采樣率最少為1k)?,每2個采樣點間隔為?20ms?/1000=?20?us

ADC可編程的通道采樣時間我們選239.5周期,則?ADC采樣周期一周期大小為

20us?/239.5?。?ADC?時鐘頻率約為?12?MHz。

?

?

STM32?DAC實驗

基本原理:12位的DAC模塊將測量用的基準電壓(3.3V)分為4095份(3.3/4095),通過設定寄存器DAC_DHR12Rx(設定不同的對齊方式對應的寄存器有所不同)的值,可以得到輸出電壓的大小,其值為寄存器內值的大小乘以每一份的值(3.3/4095),結果就是希望輸出的電壓值大小。然后我們通過ADC采樣,就可以把輸出電壓的值檢測出來,并顯示在LCD上。注意,這里參考電壓的設置,VREF+接到3.3V,VREF-接到0V。

另外,DAC輸出是受DORx寄存器直接控制的,但是不能直接往DORx寄存器寫入數據,而是通過DHRx間接的傳給DORx寄存器,實現對DAC輸出的控制。


?

一、?GPIO模式配置???
???

1、輸入/輸出模式(參考stm32手冊)??

2、GPIO輸出模式下,幾種速度的區別:??

(1).?GPIO?引腳速度:?GPIO_Speed_2MHz?????(10MHz,?50MHz)?;??

????又稱輸出驅動電路的響應速度:(芯片內部在I/O口的輸出部分安排了多個響應速度不同的輸出驅動電路,用戶可以根據自己的需要選擇合適的驅動電路,通過選擇速度來選擇不同的輸出驅動模塊,達到最佳的噪聲控制和降低功耗的目的。)??

????可理解為:?輸出驅動電路的帶寬:即一個驅動電路可以不失真地通過信號的最大頻率。??

(如果一個信號的頻率超過了驅動電路的響應速度,就有可能信號失真。失真因素?)??

如果信號頻率為10MHz,而你配置了2MHz的帶寬,則10MHz的方波很可能就變成了正弦波。就好比是公路的設計時速,汽車速度低于設計時速時,可以平穩地運行,如果超過設計時速就會顛簸,甚至翻車。??

關鍵是:?GPIO的引腳速度跟應用相匹配,速度配置越高,噪聲越大,功耗越大。??

帶寬速度高的驅動器耗電大、噪聲也大,帶寬低的驅動器耗電小、噪聲也小。使用合適的驅動器可以降低功耗和噪聲??

比如:高頻的驅動電路,噪聲也高,當不需要高的輸出頻率時,請選用低頻驅動電路,這樣非常有利于提高系統的EMI性能。當然如果要輸出較高頻率的信號,但卻選用了較低頻率的驅動模塊,很可能會得到失真的輸出信號。關鍵是GPIO的引腳速度跟應用匹配(推薦10倍以上?)。??

比如:??

① USART串口,若最大波特率只需115.2k,那用2M的速度就夠了,既省電也噪聲小。??

② I2C接口,若使用400k波特率,若想把余量留大些,可以選用10M的GPIO引腳速度。??

③ SPI接口,若使用18M或9M波特率,需要選用50M的GPIO的引腳速度。??

(2).?GPIO的翻轉速度指:輸入/輸出寄存器的0?,1?值反映到外部引腳(APB2上)高低電平的速度.手冊上指出GPIO最大翻轉速度可達18MHz。??

@通過簡單的程序測試,用示波器觀察到的翻轉時間:??是綜合的時間,包括取指令的時間、指令執行的時間、指令執行后信號傳遞到寄存器的時間(這其中可能經過很多環節,比如AHB、APB、總線仲裁等),最后才是信號從寄存器傳輸到引腳所經歷的時間。????

如:有上拉電阻,其阻值越大,RC延時越大,即邏輯電平轉換的速度越慢,功耗越大。??

(3).GPIO?輸出速度:與程序有關,(程序中寫的多久輸出一個信號)。??

2、GPIO口設為輸入時,輸出驅動電路與端口是斷開,所以輸出速度配置無意義。??

3、在復位期間和剛復位后,復用功能未開啟,I/O端口被配置成浮空輸入模式。??

4、所有端口都有外部中斷能力。為了使用外部中斷線,端口必須配置成輸入模式。??

5、GPIO口的配置具有上鎖功能,當配置好GPIO口后,可以通過程序鎖住配置組合,直到下次芯片復位才能解鎖。??

?一般應用:??

模擬輸入_AIN?——應用ADC模擬輸入,或者低功耗下省電。??

浮空輸入_IN_FLOATING?——可以做KEY識別,RX1??

開漏輸出_Out_OD——應用于I2C總線;?(STM32開漏輸出若外部不接上拉電阻只能輸出0)??

二.?管腳的復用功能?重映射??

1、復用功能:內置外設是與I/O口共用引出管腳(不同的功能對應同一管腳)??

STM32?所有內置外設的外部引腳都是與標準GPIO引腳復用的,如果有多個復用功能模塊對應同一個引腳,只能使能其中之一,其它模塊保持非使能狀態。??

2、重映射功能:復用功能的引出腳可以通過重映射,從不同的I/O管腳引出,即復用功???能的引出腳位是可通過程序改變到其他的引腳上!??

直接好處:PCB電路板的設計人員可以在需要的情況下,不必把某些信號在板上繞一大圈完成聯接,方便了PCB的設計同時潛在地減少了信號的交叉干擾。??

如:USART1:?0:?沒有重映像(TX/PA9,RX/PA10);?1:?重映像(TX/PB6,RX/PB7)。??

(參考AFIO_MAPR寄存器介紹)[0,1為一寄存器的bit值]??

【注】?下述復用功能的引出腳具有重映射功能:??

??-?晶體振蕩器的引腳在不接晶體時,可以作為普通I/O口??

??-?CAN模塊;?-?JTAG調試接口;-?大部分定時器的引出接口;?-?大部分USART引出接口??

??-?I2C1的引出接口;??-?SPI1的引出接口;??

舉例:對于STM32F103VBT6,47引腳為PB10,它的復用功能是I2C2_SCL和?USART3_TX,表示在上電之后它的默認功能為PB10,而I2C2的SCL和USART3的TX為它的復用功能;另外在TIM2的引腳重映射后,TIM2_CH3也成為這個引腳的復用功能。??

(1)要使用STM32F103VBT6的47、48腳的USART3功能,則需要配置47腳為復用推挽輸出或復用開漏輸出,配置48腳為某種輸入模式,同時使能USART3并保持I2C2的非使能狀態。??

(2)使用STM32F103VBT6的47腳作為TIM2_CH3,則需要對TIM2進行重映射,然后再按復用功能的方式配置對應引腳.

總結

以上是生活随笔為你收集整理的STM32看门狗总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。