操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    簡單例子理解TIMx

    4.1 使得PB5-TIM3通道2產生頻率為12.5Hz的方波,該方波控制LED1的閃爍

    主函數為:

    1 int main(void)

    2 {

    ();//系統時鐘設置及外設時鐘使能

    (); //中斷源配置

    ();//定時器3的初始化

    6 while(1);

    7 }

    配置各外設的時鐘和系統時鐘:

    1 /*************************

    2 * 名 稱:void (void)

    3 * 功 能:系統時鐘配置為72MHZ, 外設時鐘配置

    4 *************************/

    5 void (void)

    6{

    7 ();

    8 md(, );

    9 md(| |

    | | , );

    }

    配置中斷向量:(因為這里用到了TIM3,所以要配置其中斷向量)

    1 /*****************

    2 * 名稱:on(void)

    3 * 功能:中斷源配置

    4*****************/

    5 void (void)

    6 {

    ;

    onfig();

    . = ; //配置定時器中斷

    10 . = 0;

    . =0;

    12 . = ;

    13 (&);

    14 }

    TIM3的2通道配置:(下面首先配置GPIO PB5(為Tim3的2通道),PB5引腳默認是作為通用IO口使用,為了產生特定頻率,利用了該引腳可以復用為,根據手冊,需要用到局部復用映射,才能將映射到PB5。)

    在定時器3的初始化中,用到了輸出比較2模式的翻轉設置。也就是當=時,翻轉輸出的電平。以產生需要的頻率,的值決定了翻轉的頻率。當=時,產生一次電平翻轉,并在中斷服務程序里重新完成對的裝載。依次往復,產生了所需要的12.5Hz的頻率。(注意注釋的第15~17行介紹如何控制輸出頻率,=45000)

    1 void (void){

    ;

    Cmd(, );//定時器3時鐘使能

    4

    . = ;//PB5復用為TIM3的通道2

    . = ;

    . = ;

    (GPIOB, &);

    9

    10/* TIM3局部復用功能開啟在TIM3的局部復用開啟時,PB5會被復用為*/

    11 (M3 , );

    12

    13 /* Time Base */

    14/*----------------

    =72MHz 預分頻系數=63 經過分頻 定時器時鐘為1.

    16捕獲/比較寄存器2 =

    17 2通道產生的更新頻率是=1./=25Hz

    18

    19-----------------*/

    ture. = 63; //預分頻器=63

    ture. = ;//計數器向上計數模式 [4]=0

    ture. =; //自動重裝載寄存器

    ture. = 0x0; //時鐘分頻因子 [9:8]=00

    24

    (TIM3,&re); //寫TIM3各寄存器參數

    26

    re. = ; //[14:12]=011 翻轉 當=時,翻轉的電平

    re. = le; //輸入/捕獲2輸出允許 OC2信號輸出到對應的輸出引腳PB5

    re. =;//若CC1通道配置為輸出:CCR2是裝入當前捕獲/比較2 寄存器的值(預裝載值)。

    30//當前捕獲/比較寄存器包含了與計數器比較的值,并且在OC端口上輸出信號

    re. = ; //輸出極性 低電平有效 [5]=1;

    32

    (TIM3, &);

    ig(TIM3, e); //[1]=0 禁止寄存器的預裝載功能,可隨時寫入

    35//且新值馬上起作用

    36

    37 (TIM3,); //啟動定時器3 [0]=1;

    38 (TIM3,,); //[2]=1 允許捕獲/比較2中斷

    39 }

    TIM3的中斷服務子程序(每次=產生一次中斷,在中斷子程序中取出上一次的加上作為新的,這樣等加到和相等時又會觸發一次中斷)

    1 void (void)

    2 {

    3

    4 if ((TIM3, ) != RESET)//判斷狀態寄存器 [2] 是否發生了捕

    獲/比較2 中斷

    5{

    6 t(TIM3, ); //軟件清除狀態寄存器 [2]

    捕獲/比較2 中斷中斷標志

    7

    8 = (TIM3); //獲取的預裝值

    (TIM3, + ); //和累加后裝入 這是為了配合計數

    器值的遞增。以在下一次作出比較。

    10

    11 }

    12 }

    4.2周期控制通用定時器3的2通道,實現1KHz的不同占空比波形,控制LED實現呼吸燈

    主函數為:(不同于上面固定的頻率定時方法,這里在while里不斷更改的值來改變占空比)

    1 int main(void)

    2 {

    3 char a=0;

    4 ;

    5 ();

    6 ();

    7 (72000);//配置時鐘節拍為1ms一次

    8 while(1){

    9 Delay(1);//延時1ms

    10 . = ;//PWM模式2

    11 . = le;//輸出禁止

    12 . = ;//確定占空比

    13 . = ;

    14 (TIM3, &);

    15

    16/*調整的值來改變占空比,逐步的控制LED1的亮度, 占空比大過一定值時,

    17亮度的變化就不明顯了,所以最大設定到17000*/

    18 if(a==0) =+10;

    19 else =-10;

    20 if(>17000){ =17000; a=1;}

    21 else if( }

    23 }

    配置各外設的時鐘和系統時鐘:

    1 /******************

    2 * 名稱:void (void)

    3 * 功能:系統時鐘配置為72MHZ, 外設時鐘配置

    4 ******************/

    5 void (void){

    6

    7 ();

    8 md(, );

    9 md( | |

    10| | , );

    11 }

    TIM3的2通道配置:(注意,這里沒有用到中斷向量和中斷子程序!!!下面首先配置GPIO PB5(為Tim3的2通道),PB5引腳默認是作為通用IO口使用,為了產生特定頻率,利用了該引腳可以復用為,根據手冊,需要用到局部復用映射,才能將映射到PB5。)

    由于TIM3計數器的時鐘頻率是72MHz,希望各通道輸出頻率為1KHZ,根據3倍預分頻后,時鐘頻率為24MHz,根據公式ftim3=/(+1),可得到TIM3預分頻的值為24000, 根據公式根據公式 通道輸出占空比=/(+1),可以得到的計數值,逐步改變這個值,可以控制占空比, 從而獲得LED1 亮度明暗漸變的效果。(所以在main函數的while中不斷重置值來控制不同占空比)

    1 /********

    2 *名稱:void (void)

    3 * 功能:TIM3初始化

    4 ********/

    5 void (void){

    6 ;

    7 md(, );

    8

    9 . = ;//PB5復用為TIM3的通道2

    10 . = ;

    11 . = ;

    12 (GPIOB, &);

    13 /*TIM3局部復用功能開啟在TIM3的局部復用開啟時,PB5會被復用為*/

    14 (M3 , );

    15

    16/*------------------------------

    17 =72MHz預分頻系數=2 經過分頻定時器時鐘為24MHz

    18 根據公式 通道輸出占空比=/(+1),可以得到的計數值

    19 捕獲/比較寄存器2 =

    20 ------------------------------*/

    21 re. = 2;//預分頻器=3

    22 re. = ;//計數器向上計數模式 [4]=0

    23 re. =24000;//自動重裝載寄存器 確定頻率為1KHz

    24 re. = 0x0;//時鐘分頻因子 [9:8]=00

    25 re.r = 0x0;

    26

    27 (TIM3,&re);//寫TIM3各寄存器參數

    28

    29 . = ;//PWM模式2 [14:12]=111 在向上計數時單片機定時器里寫程序

    30//一旦 . = le;//輸入/捕獲2輸出允許OC2信號輸出到對應的輸出引腳PB5

    32 . = ;//確定占空比,這個值決定了有效電平的時間。

    33 . = ;//輸出極性低電平有效 [5]=1;

    34

    35 (TIM3, &);

    36 (TIM3, );

    37 (TIM3,);//啟動定時器3 [0]=1;

    38 }

    我們官方的QQ群1:

    我們官方的QQ群2:

    特別感謝網友的大力支持。

    我們的開源團隊不斷擴大單片機定時器里寫程序,希望大家快來一起加入我們吧。

    在這里還是要謝謝大家的大力支持!

    大家快來關注吧!

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有