目錄:
1.定時器1和互補pwm基礎
2.程式:
1、tim1_ch1_pwm互補+死區
2、tim1_ch2_pwm互補+死區
3、tim1_ch1_pwm+tim1_ch2_pwm互補+死區
3.採用iar**需設定:選擇iar選單st-link,選擇option bytes,配置如圖(見文章末尾)
一、定時器1互補pwm基礎
1.tim1為高階定時器,定時器是16位計數,有65536種分頻,分頻係數1-65536。可以選擇計數方向(分為向上和向下兩種計數方向)
。2.使能外設時鐘暫存器(clk_pckenr)
:開啟或者關閉外設時鐘
3.tim1_egr:事件產生暫存器,可以
重新初始化tim1定時器
4.控制暫存器 1(tim1_cr1)
5.重複計數暫存器(tim1_rcr)
rep[7:0]:
重複計數器的值
開啟了預裝載功能後,這些位允許使用者設定比較暫存器的更新速率(即周期性地從預裝載暫存器
傳輸到當前暫存器);如果允許產生更新中斷,則會同時影響產生更新中斷的速率。
每次向下計數器rep_cnt達到0,會產生乙個更新事件並且計數器rep_cnt重新從rep值開
始計數。由於rep_cnt只有在週期更新事件u_rc發生時才過載rep值,因此對tim1_rcr寄
存器寫入的新值只在下次週期更新事件發生時才起作用。
這意味著在pwm模式中,(rep+1)對應著:
- 在邊沿對齊模式下,pwm週期的數目;
- 在中心對稱模式下,pwm半週期的數目;
6.預分頻器
分(tim1_pscrh) 和(tim1_pscrl),設定預分頻係數時必須高位(tim1_pscrh)在前低位(tim1_pscrl)在後。
預分頻器用於對ck_psc進行分頻。
計數器的時鐘頻率(fck_cnt)等於fck_psc/( pscr[15:0]+1)。
pscr包含了當更新事件產生時裝入當前預分頻器暫存器的值(更新事件包括計數器被
tim_egr的ug位清0或被工作在復位模式的從控制器清0)。這意味著為了使新的值起作用,必
須產生乙個更新事件。
(切記:通用定時器可以選擇16種分頻,基本定時器只能選擇8種分頻)
7.捕獲/比較使能暫存器 1(tim1_ccer1):對於
互補輸出的通道,該位需要預裝載。
8.捕獲/比較暫存器 1 分高位(tim1_ccr1h) 和低位(tim1_ccr1l)
,配置pwm的占空比值
若cc1通道配置為輸出(tim1_ccmr1的cc1s位):
ccr1包含了裝入當前捕獲/比較1暫存器的值(預裝載值)。
如果在tim1_ccmr1暫存器(oc1pe位)中未選擇預裝載功能,寫入的數值會立即傳輸至當前寄
存器中。否則只有當更新事件發生時,此預裝載值才傳輸至當前捕獲/比較1暫存器中。
當前捕獲/比較暫存器的值同計數器tim1_cnt的值相比較,並在oc1埠上產生輸出訊號。
若cc1通道配置為輸入:
ccr1包含了上一次輸入捕獲1事件(ic1)發生時的計數器值(此時該暫存器為唯讀)。
9.自動裝載暫存器
高位(timx_arrh) 和 自動裝載暫存器低位(timx_arrl)
這兩個暫存器復位值都是0x00。需要注意的是,高階定時器tim1和通用定時器tim2,tim3,tim5都是16位計數的定時器,操作暫存器的時候要先寫高8位再寫低8位。而基本定時器tim4,tim6是8位計數的定時器,是不分高8位和低8位的,所以操作基本定時器的時候暫存器名字是(timx_arr)。 操作重裝載暫存器的時候更新的值不會馬上寫入重裝載暫存器,而是等到有中斷產生的時候操作的數值才會寫入暫存器,當然也可以用軟體的方法產生中斷。
10.捕獲/比較模式暫存器 1(tim1_ccmr1):
通道可 用於輸入(捕獲模式)或輸出(比較模式),通道的方向由相應的cc1s位定義。該暫存器其
它位的作用在輸入和輸出模式下不同。
0c1m[2:0]:輸出比較1模式
該3位定義了輸出參考訊號oc1ref的動作,而oc1ref決定了oc1的值。oc1ref是高電平
有效,而oc1的有效電平取決於cc1p位。
000:凍結。輸出比較暫存器tim1_ccr1與計數器tim1_cnt間的比較對oc1ref不起作用;
001:匹配時設定通道1的輸出為有效電平。當計數器tim1_cnt的值與捕獲/比較暫存器1
(tim1_ccr1)相同時,強制oc1ref為高。
010:匹配時設定通道1的輸出為無效電平。當計數器tim1_cnt的值與捕獲/比較暫存器1
(tim1_ccr1)相同時,強制oc1ref為低。
011:翻轉。當tim1_ccr1=tim1_cnt時,翻轉oc1ref的電平。
100:強制為無效電平。強制oc1ref為低。
101:強制為有效電平。強制oc1ref為高。
110:pwm模式1- 在向上計數時,一旦tim1_cnt
為無效電平;在向下計數時,一旦tim1_cnt>tim1_ccr1時通道1為無效電平(oc1ref=0),
否則為有效電平(oc1ref=1)。
111:pwm模式2- 在向上計數時,一旦tim1_cnt為有效電平;在向下計數時,一旦tim1_cnt>tim1_ccr1時通道1為有效電平,否則為無效
電平11.控制暫存器 1(timx_cr1)
復位值0x00,這個暫存器對所有定時器適用。
12.剎車暫存器(tim1_bkr)
二,程式:
1、tim1_ch1_pwm互補+死區
void pwm2_init()
2、tim1_ch2_pwm互補+死區
void pwm2_init()
3、tim1_ch1_pwm+tim1_ch2_pwm互補+死區
void pwm2_init()
三、採用iar**需設定:選擇iar選單st-link,選擇option bytes,配置如圖
程式如下:親測可以使用。
#include
/*//tim1_ch1_pwm互補+死區
void pwm2_init()
*//*
//tim1_ch2_pwm互補+死區
void pwm2_init()
*///tim1_ch1_pwm+tim1_ch2_pwm互補+死區
void pwm2_init()
int main(void)
}
STM8S 串列埠應用 UART2 STM8S105
少說話。多做事,下面是我驗證過沒有問題的串列埠傳送接受資料 使用mcu stm8s105c6 uart2 初始化時呼叫 gpio deinit gpiod configure pd5 6 gpio init gpiod,gpio pin 5,gpio mode in pu no it 傳送資料io ...
STM8學習總結三 TIM1定時器使用
本文主要總結關於stm8在庫函式開發時,各條語句的含義。1 tim1初始化配置函式 函式主要作用 對計數器的引數,工作模式進行設定,並使能 void tim1 init void 關於定時器溢位值的計算 定時器溢位值 預定定時時間 us 定時器頻率 2 tim1中斷向量函式 函式主要作用 呼叫中斷執...
STM8S時鐘配置
1 stm8時鐘說明 stm8上電復位後預設使用內部的高速時鐘,並分頻成為2m用於系統執行。如果我們想要使用外部時鐘,需要進行時鐘切換,切換過程中還需要使用stvp進行晶元選項字的更改。2 stm8s時鐘配置 庫函式版 1 配置內部高速振盪器 hsi 的分頻器 1分頻 clk hsiprescale...