USERmain.c(7): warning: #223-D: function "IIC_BusrtWrite" declared implicitly
這個(gè)是因?yàn)槌绦蚰K化的時(shí)候,你在一個(gè).C里面調(diào)用了另一個(gè).C的函數(shù)而沒有進(jìn)行外部聲明。你將這個(gè)聲明的這個(gè)函數(shù)前面加上extern應(yīng)該就好了!或者是函數(shù)聲明時(shí)函數(shù)名稱不一致導(dǎo)致。..objTemputure_mesure.axf:Error:L6200E:Symboltempmultiplydefined(bywenshidu.oandmain.o).問題解決了,主要是我把變量縫在頭文件里面了,放在c文件里面就是好的了輸入捕獲模式在輸入捕獲模式下,當(dāng)檢測(cè)到ICx信號(hào)上相應(yīng)的邊沿后,計(jì)數(shù)器的當(dāng)前值被鎖存到捕獲/比較寄存器(TIMx_CCRx)中。當(dāng)捕獲事件發(fā)生時(shí),相應(yīng)的CCxIF標(biāo)志(TIMx_SR寄存器)被置’1’,如果使能了中斷或者DMA操作,則將產(chǎn)生中斷或者DMA操作。如果捕獲事件發(fā)生時(shí)CCxIF標(biāo)志已經(jīng)為高,那么重復(fù)捕獲標(biāo)志CCxOF(TIMx_SR寄存器)被置’1’。寫CCxIF=0可清除CCxIF,或讀取存儲(chǔ)在TIMx_CCRx寄存器中的捕獲數(shù)據(jù)也可清除CCxIF。寫CCxOF=0可清除CCxOF。
以下例子說明如何在TI1輸入的上升沿時(shí)捕獲計(jì)數(shù)器的值到TIMx_CCR1寄存器中,步驟如下:
● 選擇有效輸入端:TIMx_CCR1必須連接到TI1輸入,所以寫入TIMx_CCR1寄存器中的CC1S=01,只要CC1S不為’00’ ,通道被配置為輸入,并且TM1_CCR1寄存器變?yōu)橹蛔x。
● 根據(jù)輸入信號(hào)的特點(diǎn),配置輸入濾波器為所需的帶寬(即輸入為TIx時(shí),輸入濾波器控制位是TIMx_CCMRx寄存器中的ICxF位)。假設(shè)輸入信號(hào)在最多5個(gè)內(nèi)部時(shí)鐘周期的時(shí)間內(nèi)抖動(dòng),我們須配置濾波器的帶寬長(zhǎng)于5個(gè)時(shí)鐘周期。因此我們可以(以fDTS 頻率)連續(xù)采樣8次,以確認(rèn)在TI1上一次真實(shí)的邊沿變換,即在TIMx_CCMR1寄存器中寫入IC1F=0011 。
● 選擇TI1通道的有效轉(zhuǎn)換邊沿,在TIMx_CCER寄存器中寫入CC1P=0(上升沿)。
● 配置輸入預(yù)分頻器。在本例中,我們希望捕獲發(fā)生在每一個(gè)有效的電平轉(zhuǎn)換時(shí)刻,因此預(yù)分頻器被禁止(寫TIMx_CCMR1寄存器的IC1PS=00) 。
● 設(shè)置TIMx_CCER寄存器的CC1E=1 ,允許捕獲計(jì)數(shù)器的值到捕獲寄存器中。
● 如果需要,通過設(shè)置TIMx_DIER寄存器中的CC1IE 位允許相關(guān)中斷請(qǐng)求,通過設(shè)置TIMx_DIER寄存器中的CC1DE位允許DMA請(qǐng)求。 當(dāng)發(fā)生一個(gè)輸入捕獲時(shí):
● 產(chǎn)生有效的電平轉(zhuǎn)換時(shí),計(jì)數(shù)器的值被傳送到TIMx_CCR1寄存器。
● CC1IF 標(biāo)志被設(shè)置(中斷標(biāo)志)。當(dāng)發(fā)生至少2個(gè)連續(xù)的捕獲時(shí),而CC1IF 未曾被清除,CC1OF也被置’1’ 。
● 如設(shè)置了CC1IE 位,則會(huì)產(chǎn)生一個(gè)中斷。
● 如設(shè)置了CC1DE位,則還會(huì)產(chǎn)生一個(gè)DMA請(qǐng)求。
為了處理捕獲溢出,建議在讀出捕獲溢出標(biāo)志之前讀取數(shù)據(jù),這是為了避免丟失在讀出捕獲溢出標(biāo)志之后和讀取數(shù)據(jù)之前可能產(chǎn)生的捕獲溢出信息。
輸出比較模式
此項(xiàng)功能是用來控制一個(gè)輸出波形,或者指示一段給定的的時(shí)間已經(jīng)到時(shí)。 當(dāng)計(jì)數(shù)器與捕獲/ 比較寄存器的內(nèi)容相同時(shí),輸出比較功能做如下操作:
● 將輸出比較模式(TIMx_CCMRx 寄存器中的OCxM 位)和輸出極性(TIMx_CCER 寄存器中的CCxP位)定義的值輸出到對(duì)應(yīng)的引腳上。在比較匹配時(shí),輸出引腳可以保持它的電平(OCxM=000) 、被設(shè)置成有效電平(OCxM=001) 、被設(shè)置成無(wú)效電平(OCxM=010) 或進(jìn)行翻
轉(zhuǎn)(OCxM=011) 。
● 設(shè)置中斷狀態(tài)寄存器中的標(biāo)志位(TIMx_SR 寄存器中的CCxIF 位)。
● 若設(shè)置了相應(yīng)的中斷屏蔽(TIMx_DIER 寄存器中的CCxIE 位),則產(chǎn)生一個(gè)中斷。
● 若設(shè)置了相應(yīng)的使能位(TIMx_DIER 寄存器中的CCxDE位,TIMx_CR2 寄存器中的CCDS 位選擇DMA請(qǐng)求功能),則產(chǎn)生一個(gè)DMA請(qǐng)求。 TIMx_CCMRx中的OCxPE位選擇TIMx_CCRx寄存器是否需要使用預(yù)裝載寄存器。 在輸出比較模式下,更新事件UEV對(duì)OCxREF 和OCx 輸出沒有影響。 同步的精度可以達(dá)到計(jì)數(shù)器的一個(gè)計(jì)數(shù)周期。輸出比較模式( 在單脈沖模式下) 也能用來輸出一個(gè)單脈沖。
輸出比較模式的配置步驟:
1. 選擇計(jì)數(shù)器時(shí)鐘(內(nèi)部,外部,預(yù)分頻器)
2. 將相應(yīng)的數(shù)據(jù)寫入TIMx_ARR 和TIMx_CCRx寄存器中
3. 如果要產(chǎn)生一個(gè)中斷請(qǐng)求和/ 或一個(gè)DMA請(qǐng)求,設(shè)置CCxIE 位和/ 或CCxDE位。
4. 選擇輸出模式,例如當(dāng)計(jì)數(shù)器CNT與CCRx匹配時(shí)翻轉(zhuǎn)OCx 的輸出引腳,CCRx預(yù)裝載未用,開啟OCx 輸出且高電平有效,則必須設(shè)置OCxM=’011’、OCxPE=’0’ 、CCxP=’0’和CCxE=’1’。
5. 設(shè)置TIMx_CR1 寄存器的CEN位啟動(dòng)計(jì)數(shù)器
TIMx_CCRx寄存器能夠在任何時(shí)候通過軟件進(jìn)行更新以控制輸出波形,條件是未使用預(yù)裝載寄存器(OCxPE=’0’,否則TIMx_CCRx影子寄存器只能在發(fā)生下一次更新事件時(shí)被更新) 。
計(jì)數(shù)器寄存器(TIMx_CNT);預(yù)分頻器寄存器 (TIMx_PSC);自動(dòng)裝載寄存器 (TIMx_ARR)
根據(jù)在TIMx_CR1 寄存器中的自動(dòng)裝載預(yù)裝載使能位(ARPE) 的設(shè)置,預(yù)裝載寄存器的內(nèi)容被立即或在每次的更新事件UEV時(shí)傳送到影子寄存器。
向上計(jì)數(shù)模式
在向上計(jì)數(shù)模式中,計(jì)數(shù)器從0 計(jì)數(shù)到自動(dòng)加載值(TIMx_ARR計(jì)數(shù)器的內(nèi)容) ,然后重新從0 開始計(jì)數(shù)并且產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件。
向下計(jì)數(shù)模式
數(shù)器從自動(dòng)裝入的值(TIMx_ARR計(jì)數(shù)器的值) 開始向下計(jì)數(shù)到0 ,然后從自動(dòng)在向下模式中,計(jì)裝入的值重新開始并且產(chǎn)生一個(gè)計(jì)數(shù)器向下溢出事件。
中央對(duì)齊模式( 向上/ 向下計(jì)數(shù))
在中央對(duì)齊模式,計(jì)數(shù)器從0 開始計(jì)數(shù)到自動(dòng)加載的值(TIMx_ARR寄存器)?1 ,產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件,然后向下計(jì)數(shù)到1并且產(chǎn)生一個(gè)計(jì)數(shù)器下溢事件;然后再?gòu)?開始重新計(jì)數(shù)。
捕獲/比較通道
每一個(gè)捕獲/ 比較通道都是圍繞著一個(gè)捕獲/ 比較寄存器( 包含影子寄存器) ,包括捕獲的輸入部分(數(shù)字濾波、多路復(fù)用和預(yù)分頻器),和輸出部分(比較器和輸出控制)。