時基單元包含:
(圖29:STM8 時基單元)
16位計數(shù)器,預(yù)分頻器,自動重載寄存器和重復(fù)計數(shù)器寄存器都可以通過軟件進(jìn)行讀寫操作。自動重載寄存器由預(yù)裝載寄存器和影子寄存器組成。
可在在兩種模式下寫自動重載寄存器:
自動預(yù)裝載已使能(TIM1_CR1寄存器的ARPE位置位)。在此模式下,寫入自動重載寄存器的數(shù)據(jù)將被保存在預(yù)裝載寄存器中,并在下一個更新事件(UEV)時傳送到影子寄存器。
自動預(yù)裝載已禁止(TIM1_CR1寄存器的ARPE位清除)。在此模式下,寫入自動重載寄存器的數(shù)據(jù)將立即寫入影子寄存器。
更新事件的產(chǎn)生條件:計數(shù)器向上或向下溢出。
軟件置位了TIM1_EGR寄存器的UG位。
時鐘/觸發(fā)控制器產(chǎn)生了觸發(fā)事件。
在預(yù)裝載使能時(ARPE=1),如果發(fā)生了更新事件,預(yù)裝載寄存器中的數(shù)值(TIM1_ARR)將寫入影子寄存器中,并且TIM1_PSCR寄存器中的值將寫入預(yù)分頻器中。
置位TIM1_CR1寄存器的UDIS位將禁止更新事件(UEV)。
計數(shù)器由預(yù)分頻器的輸出CK_CNT驅(qū)動,而CK_CNT僅在IM1_CR1寄存器的計數(shù)器使能位(CEN)被置位時才有效。
注意:在使能了CEN位的一個時鐘周期后,計數(shù)器才開始計數(shù)。
讀寫16位計數(shù)器
寫計數(shù)器的操作沒有緩存,并且可以在任何時候?qū)慣IM1_CNTRH和TIM1_CNTRL寄存器,因此我們建議不要在計數(shù)器運行時寫入新的數(shù)值,以免寫入了錯誤的數(shù)值。
讀計數(shù)器的操作帶有8位的緩存。在用戶讀了高位(MS)字節(jié)后,低位(LS)字節(jié)將被自動緩存,緩存的數(shù)據(jù)在16位的讀操作完成之前不會有變化,圖30解釋了這一過程。
注意:不要使用LDW指令來讀取16位計數(shù)器的值,因為此指令先讀低位(LS)字節(jié),這樣讀出的數(shù)值是錯誤的。
(圖30:STM8 讀16位計數(shù)器的過程(TIM1_CNTR))
16位TIM1_ARR寄存器的寫操作
預(yù)裝載寄存器中的值將寫入16位的TIM1_ARR寄存器中,此操作由兩條指令完成,每條指令寫入1個字節(jié),高位(MS)字節(jié)是先寫入的。
影子寄存器在高位(MS)字節(jié)寫入時被鎖定,并保持到低位(LS)字節(jié)寫完。不要使用LDW指令,因為此指令先寫低位(LS)字節(jié),這將導(dǎo)致寫入的數(shù)值錯誤。
STM8預(yù)分頻器
預(yù)分頻器的實現(xiàn):
TIM1的預(yù)分頻器基于一個由16位寄存器(TIM1_PSCR)控制的16位計數(shù)器。由于這個控制寄存器帶有緩沖器,因此它能夠在運行時被改變。預(yù)分頻器可以將計數(shù)器的時鐘頻率按1到65536之間的任意值分頻。
計數(shù)器的頻率可以由下式計算:
fCK_CNT=fCK_PSC/(PSCR[15:0]+1)
預(yù)分頻器的值由預(yù)裝載寄存器寫入,保存了當(dāng)前使用值的影子寄存器在低位(LS)寫入時被載入。
需兩次單獨的寫操作來寫16位寄存器,高位(MS)先寫。不要使用先寫低位(LS)的LDW指令。
新的預(yù)分頻器的值在下一次更新事件到來時被采用。
對TIM1_PSCR寄存器的讀操作通過預(yù)裝載寄存器完成,因此不需要特別的關(guān)注。
向上計數(shù)模式
在向上計數(shù)模式中,計數(shù)器從0計數(shù)到用戶定義的比較值(TIMx_ARR寄存器的值),然后重新從0開始計數(shù)并產(chǎn)生一個計數(shù)器溢出事件,同時,如果TIM1_CR1寄存器的UDIS位是0,將會產(chǎn)生一個更新事件(UEV)。圖31描述了向上計數(shù)模式。
(圖31:STM8 向上計數(shù)模式的計數(shù)器)
置位TIMx_EGR寄存器的UG位(通過軟件方式或者使用從模式控制器)也同樣可以產(chǎn)生一個更新事件。
使用軟件置位TIMx_CR1寄存器的UDIS位,可以禁止更新事件,這樣可以避免在更新預(yù)裝載寄存器時更新影子寄存器。在UDIS位被清除之前,將不產(chǎn) 生更新事件。但是在應(yīng)該產(chǎn)生更新事件時,計數(shù)器仍會被清0,同時預(yù)分頻器的計數(shù)也被清0(但預(yù)分頻器的數(shù)值不變)。此外,如果設(shè)置
了TIMx_CR1寄存器中的URS位(選擇更新請求),設(shè)置UG位將產(chǎn)生一個更新事件UEV,但硬件不設(shè)置UIF標(biāo)志(即不產(chǎn)生中斷請求)。這是為了避免在捕獲模式下清除計數(shù)器時,同時產(chǎn)生更新和捕獲中斷。
當(dāng)發(fā)生一個更新事件時,所有的寄存器都被更新,硬件同時(依據(jù)URS位)設(shè)置更新標(biāo)志位(TIMx_SR寄存器的UIF位):
自動裝載影子寄存器被重新置入預(yù)裝載寄存器的值(TIMx_ARR)。
預(yù)分頻器的緩存器被置入預(yù)裝載寄存器的值(TIMx_PSC寄存器的內(nèi)容)。
下圖給出一些例子,說明當(dāng)TIMx_ARR=0x36時,計數(shù)器在不同時鐘頻率下的動作。
圖32的預(yù)分頻為2,因此計數(shù)器的時鐘(CK_CNT)頻率是預(yù)分頻時鐘(CK_PSC)頻率的一半。
圖32禁止了自動裝載功能(ARPE=0),所以在計數(shù)器達(dá)到0x36時,計數(shù)器溢出,影子寄存器立刻被更新,同時產(chǎn)生一個更新事件。
圖32當(dāng)ARPE=0(ARR不預(yù)裝載),預(yù)分頻為2時的計數(shù)器更新。
(圖32:STM8 當(dāng)ARPE=0(ARR不預(yù)裝載),預(yù)分頻為2時的計數(shù)器更新)
圖33的預(yù)分頻為1,因此CK_CNT的頻率與CK_PSC一致。
圖33使能了自動重載(ARPE=1),所以在計數(shù)器達(dá)到0xFF產(chǎn)生溢出。0x36將在溢出時被寫入, 同時產(chǎn)生一個更新事件。
(圖33:STM8 ARPE=1(TIM1_ARR預(yù)裝載)時的計數(shù)器更新)
向下計數(shù)模式
在向下模式中,計數(shù)器從自動裝載的值(TIMx_ARR寄存器的值)開始向下計數(shù)到0,然后再從自動裝載的值重新開始計數(shù),并產(chǎn)生 一個計數(shù)器向下溢出事件。如果TIM1_CR1寄存器的UDIS位被清除,還會產(chǎn)生一個更新事件(UEV)。圖34描述了向下計數(shù)模式的計數(shù)器。
(圖34:STM8 ARPE=1(TIM1_ARR預(yù)裝載)時的計數(shù)器更新)
置位TIMx_EGR寄存器的UG位(通過軟件方式或者使用從模式控制器)也同樣可以產(chǎn)生一個更新事件。
置位TIMx_CR1寄存器的UDIS位可以禁止UEV事件。這樣可以避免在更新預(yù)裝載寄存器時更新影子寄存器。因此UDIS位清除之前不會產(chǎn)生更新事 件。然而,計數(shù)器仍會從當(dāng)前自動加載值重新開始計數(shù),并且預(yù)分頻器的計數(shù)器重新從0開始(但預(yù)分頻器不能被修改)。
此外,如果設(shè)置了TIMx_CR1寄存器中的URS位(選擇更新請求),設(shè)置UG位將產(chǎn)生一個更新事件UEV但不設(shè)置UIF標(biāo)志(因此不產(chǎn)生中斷),這是為了避免在發(fā)生捕獲事件并清除計數(shù)器時,同時產(chǎn)生更新和捕獲中斷。
當(dāng)發(fā)生更新事件時,所有的寄存器都被更新,并且(根據(jù)URS位的設(shè)置)更新標(biāo)志位(TIMx_SR寄存器中的UIF位)也被設(shè)置:
預(yù)分頻器的緩存器被存入預(yù)裝載的值(TIMx_PSC寄存器的值)。
當(dāng)前的自動加載寄存器被更新為預(yù)裝載值(TIMx_ARR寄存器中的內(nèi)容)。要注意自動裝載寄存器在計數(shù)器重載入之前被更新,因此下一個周期才是預(yù)期的值。
以下是一些當(dāng)TIMx_ARR=0x36時,計數(shù)器在不同時鐘頻率下的圖表。
下圖描述了在向下計數(shù)模式下,預(yù)裝載不使能時新的數(shù)值在下個周期時被寫入。
(圖35:STM8 ARPE=0(ARR不預(yù)裝載),預(yù)分頻為2時的計數(shù)器更新)
(圖36:STM8 ARPE=1(ARR預(yù)裝載),預(yù)分頻為1時的計數(shù)器更新)
中央對齊模式(向上/向下計數(shù))
在中央對齊模式,計數(shù)器從0開始計數(shù)到自動加載的值(TIMx_ARR寄存器)-1,產(chǎn)生一個計數(shù)器溢出事件,然后向下計數(shù)到0并且產(chǎn)生一個計數(shù)器下溢事件;然后再從0開始重新計數(shù)。
在此模式下,不能寫入TIMx_CR1中的DIR方向位。它由硬件更新并指示當(dāng)前的計數(shù)方向。
下圖給出一個中央對齊模式的例子。
(圖37:STM8 中央對齊模式的計數(shù)器)
如果定時器帶有重復(fù)計數(shù)器(如TIM1),在重復(fù)了指定次數(shù)(TIM1_RCR的值)的向上和向下溢出之后會產(chǎn)生更新事件(UEV)。否則每一次的向上向下溢出都會產(chǎn)生更新事件。
置位TIMx_EGR寄存器的UG位(通過軟件方式或者使用從模式控制器)也同樣可以產(chǎn)生一個更新事件。此時,計數(shù)器重新從0開始計數(shù),預(yù)分頻器也重新從0開始計數(shù)。
設(shè)置TIMx_CR1寄存器中的UDIS位可以禁止UEV事件。這樣可以避免在更新預(yù)裝載寄存器時更新影子寄存器。因此UDIS位被清為0之前不會產(chǎn)生更 新事件。然而,計數(shù)器仍會根據(jù)當(dāng)前自動重加載的值,繼續(xù)向上或向下計數(shù)。如果定時器帶有重復(fù)計數(shù)器,由于重復(fù)寄存器沒有雙重的
緩沖,新的重復(fù)數(shù)值將立刻生效,因此在修改時需要小心。
此外,如果設(shè)置了TIMx_CR1寄存器中的URS位(選擇更新請求),設(shè)置UG位將產(chǎn)生一個更新事件UEV但不設(shè)置UIF標(biāo)志(因此不產(chǎn)生中斷),這是為了避免在發(fā)生捕獲事件并清除計數(shù)器時,同時產(chǎn)生更新和捕獲中斷。
當(dāng)發(fā)生更新事件時,所有的寄存器都被更新,并且(根據(jù)URS位的設(shè)置)更新標(biāo)志位(TIMx_SR寄存器中的UIF位)也被設(shè)置。
預(yù)分頻器的緩存器被加載為預(yù)裝載(TIMx_PSC寄存器)的值。
當(dāng)前的自動加載寄存器被更新為預(yù)裝載值(TIMx_ARR寄存器中的內(nèi)容)。要注意到如果因為計數(shù)器溢出而產(chǎn)生更新,自動重裝載寄存器將在計數(shù)器重載入之 前被更新,因此下一個周期才是預(yù)期的值(計數(shù)器被裝載為新的值)。以下是一些計數(shù)器在不同時鐘頻率下的操作的例子:
(圖38:STM8 計數(shù)器時序圖,內(nèi)部時鐘分頻因子為1,TIMx_ARR=0x6,ARPE=1)
使用中央對齊模式的提示:
啟動中央對齊模式時,計數(shù)器將按照原有的向上/向下的配置計數(shù)。也就是說TIM1_CR1寄存器中的DIR位將決定計數(shù)器是向上還是向下計數(shù)。此外,軟件不能同時修改DIR位和CMS位的值。
不推薦在中央對齊模式下,計數(shù)器正在計數(shù)時寫計數(shù)器的值,這將導(dǎo)致不能預(yù)料的后果。
具體的說:
向計數(shù)器寫入了比自動裝載值更大的數(shù)值時(TIM1_CNT>TIM1_ARR),但計數(shù)器的計數(shù)方向不發(fā)生改變。例如計數(shù)器已經(jīng)向上溢出,但計數(shù)器仍然向上計數(shù)。
向計數(shù)器寫入了0或者TIM1_ARR的值,但更新事件不發(fā)生。安全使用中央對齊模式的計數(shù)器的方法是在啟動計數(shù)器之前先用軟件(置位TIM1_EGR寄存器的UG位)產(chǎn)生一個更新事件,并且不在計數(shù)器計數(shù)時修改計數(shù)器的值。
重復(fù)計數(shù)器
STM8S時基單元解釋了計數(shù)器向上/向下溢出時更新事件(UEV)是如何產(chǎn)生的,然而事實上它只能在重復(fù)計數(shù)器的值達(dá)到0的時候產(chǎn)生。這個特性對產(chǎn)生PWM信號非常有用。
這意味著在每N次計數(shù)上溢或下溢時,數(shù)據(jù)從預(yù)裝載寄存器傳輸?shù)接白蛹拇嫫?TIMx_ARR自動重載入寄存器,TIMx_PSC預(yù)裝載寄存器,還有在比較模式下的捕獲/比較寄存器TIMx_CCRx),N是TIMx_RCR重復(fù)計數(shù)寄存器中的值。
重復(fù)計數(shù)器在下述任一條件成立時遞減:
向上計數(shù)模式下每次計數(shù)器向上溢出時
向下計數(shù)模式下每次計數(shù)器向下溢出時
中央對齊模式下每次上溢和每次下溢時。
雖然這樣限制了PWM的最大循環(huán)周期為128,但它能夠在每個PWM周期2次更新占空比。
在中央對齊模式下,因為波形是對稱的,如果每個PWM周期中僅刷新一次比較寄存器,則最大的分辨率為2xtCK_PSC。
重復(fù)計數(shù)器是自動加載的,重復(fù)速率由TIMx_RCR寄存器的值定義(參考圖39)。當(dāng)更新事件由軟件產(chǎn)生(通過設(shè)置 TIMx_EGR中的UG位)或者通過硬件的從模式控制器產(chǎn)生,則無論重復(fù)計數(shù)器的值是多少,立即發(fā)生更新事件,并且TIMx_RCR寄存器中的內(nèi)容被重 載入到重復(fù)計數(shù)器。
(圖39:STM8不同模式下更新速率的例子,及TIMx_RCR的寄存器設(shè)置)
上一篇:STM8 中I2C讀寫函數(shù)
下一篇:STM8,延時函數(shù)
推薦閱讀
史海拾趣
在國內(nèi)市場取得成功后,F(xiàn)CT Electronics開始將目光投向國際市場。公司積極參加國際電子展會,與多家國際知名企業(yè)建立了合作關(guān)系。憑借出色的產(chǎn)品性能和專業(yè)的客戶服務(wù),F(xiàn)CT Electronics的測試設(shè)備逐漸在海外市場上占據(jù)了一席之地,為公司的國際化發(fā)展奠定了堅實基礎(chǔ)。
在2022年,eMemory宣布加入英特爾晶圓代工服務(wù)加速器(Intel Foundry Services Accelerator)計劃。這一合作標(biāo)志著eMemory的技術(shù)得到了國際半導(dǎo)體巨頭的認(rèn)可。通過這一計劃,eMemory為使用英特爾晶圓代工服務(wù)的客戶提供全球領(lǐng)先的安全I(xiàn)P解決方案,進(jìn)一步提升了其產(chǎn)品在全球市場的競爭力。
除了自主研發(fā)外,eMemory還積極尋求與外部合作伙伴的聯(lián)合研發(fā)。在2016年,eMemory與馬來西亞的半導(dǎo)體晶圓代工廠Silterra聯(lián)合宣布,基于Silterra 0.18微米CMOS制程技術(shù)的一次性可編程(OTP)存儲器已經(jīng)通過了驗證。這一合作不僅證明了eMemory技術(shù)的先進(jìn)性和可靠性,還為雙方帶來了新的市場機(jī)遇。
AAC公司的創(chuàng)立可以追溯到上世紀(jì)90年代初,當(dāng)時電子音響器件市場正迎來快速發(fā)展的機(jī)遇。AAC公司敏銳地捕捉到了這一市場趨勢,迅速行動,與德國投資者共同成立了中德合資常州威利來電子音響器件有限公司。這一合資舉措為AAC帶來了先進(jìn)的生產(chǎn)技術(shù)和管理經(jīng)驗,使其生產(chǎn)的訊響器和微型揚聲器迅速打開了德國市場的大門。這一成功的合資經(jīng)驗為AAC后續(xù)的發(fā)展奠定了堅實的基礎(chǔ)。
另一家名為“Innovative Memory Solutions”的公司,在2008年就開始布局HMC技術(shù)的研發(fā)。經(jīng)過數(shù)年的潛心研究,該公司終于在2012年推出了首款商用HMC產(chǎn)品。這款產(chǎn)品的問世,不僅解決了傳統(tǒng)DRAM帶寬受限的問題,還顯著降低了系統(tǒng)延遲。Innovative Memory Solutions通過積極的市場推廣和與OEM廠商的合作,成功將HMC技術(shù)應(yīng)用于高性能計算、數(shù)據(jù)中心等領(lǐng)域,實現(xiàn)了從研發(fā)到市場的成功跨越。
ASPEED的AST2600 BMC與瑞薩電子的I3C器件相結(jié)合,為客戶提供了設(shè)計便捷、帶寬增強且系統(tǒng)成本優(yōu)化的解決方案。這一合作不僅展示了ASPEED在服務(wù)器管理領(lǐng)域的實力,還進(jìn)一步推動了DDR5解決方案對I3C標(biāo)準(zhǔn)的推廣使用。通過雙方的努力,共同客戶在實現(xiàn)向全新高速總線接口飛躍發(fā)展的過程中,獲得了更加信心滿滿的設(shè)計體驗。
目前在調(diào)用mips reboot但都是掛在OEMinit code 如下 static void ResetWithSetSystemPowerState() { typedef DWORD (*SetSystemPowerStateFunction)(LPCWSTR pwsSystemState, DWORD StateFlags, DWORD Options); H ...… 查看全部問答∨ |
|
// 協(xié)議是 \'@\' + byte + byte + ‘#’ void serial(void) interrupt 4 { if (RI) { if(SBUF==\'@\') &nb ...… 查看全部問答∨ |
|
本人在EWAVR中寫了段測試程序,但關(guān)于延時過程中的中斷問題有些不解: 如果沒有延時程序,測試板,燈近似一直亮。 加入延時程序,可以看見燈運行的過程。 問題是延時過程中會不會產(chǎn)生中斷,為什么會出現(xiàn)上述情況. 中 ...… 查看全部問答∨ |
對話框是后加的,是不自帶初始化函數(shù)的 按鈕的個數(shù)是不定的,要根據(jù)所給個數(shù)的不同動態(tài)變化 且這些動態(tài)生成的按鈕都必須按鈕按下后,有消息回應(yīng) 我是新手,所以有用詞不對,多多見諒。非常感謝… 查看全部問答∨ |
除了正確進(jìn)行接地設(shè)計、安裝,還要正確進(jìn)行各種不同信號的接地處理。控制系統(tǒng)中,大致有以下幾種地線: (1)數(shù)字地:也叫邏輯地,是各種開關(guān)量(數(shù)字量)信號的零電位。 (2)模擬地:是各種模擬量信號的零電位。 (3)信號地:通常為傳感器的 ...… 查看全部問答∨ |
我在altera 官網(wǎng)下載并安裝了一個Nios II 9.1 Software Build Tools for Eclipse軟件,但是我的quatus II的版本是Quartus II 9.1sp2 Web Edition,在我打開的nios II EDS的時候出現(xiàn)了以下一個錯誤! 請各 ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計
- 小型傾轉(zhuǎn)旋翼機(jī)的無刷直流電機(jī)驅(qū)動器設(shè)計
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計
- 基于GPS自動授時的無線智能控制器的設(shè)計
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機(jī)載穩(wěn)定云臺控制系統(tǒng)的設(shè)計
- 匠芯創(chuàng)推出面向具身智能高性能實時處理器M7000
- 吉利電池安全標(biāo)準(zhǔn)升級,“神盾金磚電池”有什么技術(shù)亮點?
- 中國汽車工程學(xué)會出臺全固態(tài)電池新標(biāo)準(zhǔn)
- Allegro如何用技術(shù)定義汽車電子新范式
- 恩智浦半導(dǎo)體推出汽車級開發(fā)平臺OrangeBox 2.0 旨在促進(jìn)安全的汽車通信
- 三大上市公司加碼/跨界固態(tài)電池關(guān)鍵材料!
- 一大波全固態(tài)電池新產(chǎn)品來了!
- 欣旺達(dá)/瑞浦/恩捷/力華/杜爾······12大企業(yè)電池行業(yè)新品來襲
- 新唐科技發(fā)布第四代『GerdaTM』系列,車用HMI顯示IC產(chǎn)品開始量產(chǎn)
- 寧德時代的電+Momenta的腦,“智電雙極”重構(gòu)全球汽車格局
- 一文讀懂:固態(tài)電池產(chǎn)業(yè)鏈通覽
- 站在風(fēng)口浪尖上的華為,還能堅持多久?
- 美國對華打擊華為,讓已碰壁的蘋果面臨更大困境
- 聯(lián)想:全球化是必然趨勢,楊元慶不打算做操作系統(tǒng)和芯片
- 2019款蘋果MacBook Pro跑分曝光,目前蘋果性能最強機(jī)型
- 萊迪思全新FPGA賦予3D新含義
- 美光加緊開辟車載存儲新戰(zhàn)場
- 中國臺灣蟬聯(lián)全球最大半導(dǎo)體材料消費地區(qū)稱號
- 英特爾為何敢說Agilex是首款面向數(shù)據(jù)中心的FPGA
- 橫掃全球萬億美金市場的Forbes Midas出爐 AI成為“點金手”們的下一戰(zhàn)場
- “行星狩獵” AI已經(jīng)出手