關於stm32定時器的理解

来源:http://www.cnblogs.com/xiaobo-Linux/archive/2016/04/16/5398061.html
-Advertisement-
Play Games

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; 錶面意思是輸出控制極性為高,但是意思是定時器輸入0,不反相,輸出0; 輸出控制極性為低,定時器輸入0,反相輸出1; CC1E控制開關。 #define TIM_OCPolarity_H ...


TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

錶面意思是輸出控制極性為高,但是意思是定時器輸入0,不反相,輸出0;

輸出控制極性為低,定時器輸入0,反相輸出1;

CC1E控制開關。

#define TIM_OCPolarity_High                ((uint16_t)0x0000)
#define TIM_OCPolarity_Low                 ((uint16_t)0x0002)

 

定時器通道寫法: TIM_OC2 意思是定時器channel 2 ,TIM_OC1意思是定時器通道1.

//小波Linux

 

 

pwm占空比:

   TIM_SetCompare1(TIM2,led1pwmval);  
   TIM_SetCompare2(TIM3,led0pwmval);  

TIMX為哪個定時器,ledxpwmval為占空比的值;

   TIM2_PWM_Init(899,0);  //不分頻 72000/900=8Khz

arr 自動重裝載計數器初值 900 =899+1;

占空比例如 占 50% = 450 / 900

ledxpwmval = 450;

 

定時器初始化,裡面有個重映射

void TIM2_PWM_Init(u16 arr,u16 psc) {   

GPIO_InitTypeDef GPIO_InitStructure;  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  TIM_OCInitTypeDef  TIM_OCInitStructure;  

 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能定時器3時鐘   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);  //使能GPIO外設和AFIO復用功能模塊時鐘      //設置該引腳為復用輸出功能,輸出TIM2 CH1的PWM脈衝波形  PA0  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //TIM_CH1  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //復用推輓輸出  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO      //初始化TIM2  TIM_TimeBaseStructure.TIM_Period = arr;    //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值  TIM_TimeBaseStructure.TIM_Prescaler =psc;  //設置用來作為TIMx時鐘頻率除數的預分頻值  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計數模式  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位    //初始化TIM2 Channel 1 PWM模式   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;             //選擇定時器模式:TIM脈衝寬度調製模式2   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;     //輸出極性:TIM輸出比較極性高  TIM_OC1Init(TIM2, &TIM_OCInitStructure);                     //根據T指定的參數初始化外設TIM2 OC1

 TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);  //使能TIM2在CCR1上的預裝載寄存器    TIM_Cmd(TIM2, ENABLE);  //使能TIM2  

}

 

//TIM3 PWM部分初始化 //PWM輸出初始化 //arr:自動重裝值 //psc:時鐘預分頻數 void TIM3_PWM_Init(u16 arr,u16 psc) {   GPIO_InitTypeDef GPIO_InitStructure;  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  TIM_OCInitTypeDef  TIM_OCInitStructure;  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能定時器3時鐘   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外設和AFIO復用功能模塊時鐘    GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射  TIM3_CH2->PB5         //設置該引腳為復用輸出功能,輸出TIM3 CH2的PWM脈衝波形 GPIOB.5  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //復用推輓輸出  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO      //初始化TIM3  TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值  TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鐘頻率除數的預分頻值  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計數模式  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位    //初始化TIM3 Channel2 PWM模式   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //選擇定時器模式:TIM脈衝寬度調製模式2   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //輸出極性:TIM輸出比較極性高  TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //根據T指定的參數初始化外設TIM3 OC2

 TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的預裝載寄存器    TIM_Cmd(TIM3, ENABLE);  //使能TIM3  

}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 通過廣播接收者,接收到簡訊,對簡訊內容進行判斷,如果為我們指定的值就執行相應的操作 如果簡訊內容是”#*location*#” 就執行,獲取手機位置 如果簡訊內容是”#*alarm*#” 就執行,播放報警音樂 如果簡訊內容是”#*wipedata*#” 就執行,遠程清除數據 如果簡訊內容是”#*lo ...
  • NSObject的hash方法 說明 本示例僅僅演示一個對象什麼時候執行hash方法。 細節 1. 必要的Model類,重載了hash方法用以反映Hash方法是否被調用了 2. 測試 3. 測試 isEqual: 方法執行的時候是否會執行 hash 方法,列印情況裡面是沒有的 4. 用 NSMuta ...
  • 聲明 設計概述 JNI介面函數和指針 載入和鏈接本地方法 解析本地方法名 本地方法的參數 引用Java對象 全局和局部引用 實現局部引用 訪問Java對象 訪問基本類型數組 訪問域和方法 報告編程錯誤 Java異常 異常和錯誤代碼 非同步異常 異常的處理 JNI的類型和數據結構 基本類型 引用類型 域 ...
  • 出現情景 如果一個控制器(ViewController)被導航控制器管理,並且該控制器的第一個子控制項是UIScrollView,系統預設會調節UIScrollView的contentInset UIEdgeInsetsMake(64, 0, 0, 0) // 有導航欄 UIEdgeInsetsMak ...
  • 源文件在這裡:http://pan.baidu.com/s/1kVKrbkb 另外有個好用的三方:http://pan.baidu.com/s/1kUBTsZ9 不行的話,github.com 搜索SDCycleScrollView-master ...
  • 1.安裝 註意事項: 1.安裝gcc 2.編譯帶參數: make MALLOC=libc 2.可視化客戶端工具 推薦使用RedisClient,提供了基本的CRUD以及過期設置等操作的圖形化介面,在項目中使用它比較方便,可縱觀全局,而且一般的key都是根據一定的規則來拼接的串,比較長,敲命令不太方便 ...
  • mysql found_row()和row_count()函數用於計算上一條語句影響的行數,不同的是found_row用來獲取Select得到的行數,而row_count用來獲取Update或Delete影響的行數。 MySQL中有兩個函數來計算上一條語句影響了多少行,不同於SqlServer/Or ...
  • station表 列名: stationId 站點編號 stationlon 站點經度 stationlat 站點緯度 record表 列名: recorkId 記錄編號 stationGoId 借出站點編號 stationBackId 歸還站點編號 查詢結果顯示列: stationGoId 借出站 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...