娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月07日(星期六)

2019年09月07日 | STM32 多個定時器 多路PWM配置

發布者:快樂行者 來源: eefocus關鍵字:STM32  定時器  PWM配置 手機看文章 掃描二維碼
隨時隨地手機看文章

實驗過程中的筆記   在持續更新中  只是一個簡化版本


利用定時器1 2 3 4 配置的PWM輸出  


PWM輸出注意外部接入的高電平還是低電平   注意修改 


    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //輸出極性:TIM輸出比較極性高TIM_OCPolarity_High  接高電平極性為高  接低電平輸出極性為低TIM_OCPolarity_Low


 //定時器3  ,輸出TIM3 CH2的PWM脈沖波形    GPIOB.5  重映射的端口remap

 void pwm_tim3()

 {

 

     u16 led0pwmval=0;

    u8 dir=1;     

 

          delay_ms(10);     

        if(dir)led0pwmval++;

        else led0pwmval--;


         if(led0pwmval>300)dir=0;

        if(led0pwmval==0)dir=1;                                         

        TIM_SetCompare2(TIM3,led0pwmval);         //占空比定義函數  

 

 }

 

  //定時器2  ,輸出TIM2 CH1的PWM脈沖波形    GPIOA.0  沒有重映射

 void pwm_tim2()

 {

 

     u16 led0pwmval=0;

    u8 dir=1;     

 

          delay_ms(10);     

        if(dir)led0pwmval++;

        else led0pwmval--;


         if(led0pwmval>300)dir=0;

        if(led0pwmval==0)dir=1;                                         

        TIM_SetCompare1(TIM2,led0pwmval);         //占空比定義函數  

 

 }


 


 


 


#include "timer.h"

#include "led.h"

#include "usart.h"

//////////////////////////////////////////////////////////////////////////////////     

//本程序只供學習使用,未經作者許可,不得用于其它任何用途

//ALIENTEK戰艦STM32開發板

//定時器 驅動代碼       

//正點原子@ALIENTEK

//技術論壇:www.openedv.com

//修改日期:2012/9/4

//版本:V1.1

//版權所有,盜版必究。

//Copyright(C) 廣州市星翼電子科技有限公司 2009-2019

//All rights reserved                                      

//********************************************************************************

//V1.1 20120904

//1,增加TIM3_PWM_Init函數。

//2,增加LED0_PWM_VAL宏定義,控制TIM3_CH2脈寬                                      

//////////////////////////////////////////////////////////////////////////////////  

         

//通用定時器3中斷初始化

//這里時鐘選擇為APB1的2倍,而APB1為36M

//arr:自動重裝值。

//psc:時鐘預分頻數

//這里使用的是定時器3!

void TIM3_Int_Init(u16 arr,u16 psc)

{

  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

    NVIC_InitTypeDef NVIC_InitStructure;


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //時鐘使能


    TIM_TimeBaseStructure.TIM_Period = arr; //設置在下一個更新事件裝入活動的自動重裝載寄存器周期的值     計數到5000為500ms

    TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置用來作為TIMx時鐘頻率除數的預分頻值  10Khz的計數頻率  

    TIM_TimeBaseStructure.TIM_ClockDivision = 0; //設置時鐘分割:TDTS = Tck_tim

    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上計數模式

    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位

 

    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中斷,允許更新中斷


    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中斷

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占優先級0級

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //從優先級3級

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能

    NVIC_Init(&NVIC_InitStructure);  //根據NVIC_InitStruct中指定的參數初始化外設NVIC寄存器


    TIM_Cmd(TIM3, ENABLE);  //使能TIMx外設

                             

}

//定時器3中斷服務程序

void TIM3_IRQHandler(void)   //TIM3中斷

{

    if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //檢查指定的TIM中斷發生與否:TIM 中斷源 

        {

        TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx的中斷待處理位:TIM 中斷源 

        LED1=!LED1;

        }

}


//TIM4 PWM部分初始化 

//PWM輸出初始化  PB6  沒有映射

//arr:自動重裝值

//psc:時鐘預分頻數

void TIM4_PWM_Init(u16 arr,u16 psc)

{  

    GPIO_InitTypeDef GPIO_InitStructure;

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

    TIM_OCInitTypeDef  TIM_OCInitStructure;

    


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);    //使能定時器4時鐘

     //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外設和AFIO復用功能模塊時鐘

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  , ENABLE);  //使能GPIO外設和AFIO復用功能模塊時鐘

    //GPIO_PinRemapConfig(GPIO_PartialRemap_TIM2, ENABLE); //Timer2部分重映射  TIM4_CH1->PB6 沒有映射

 

   //設置該引腳為復用輸出功能,輸出TIM4 CH1的PWM脈沖波形    GPIOB.6  沒有映射  重映射的端口remap 

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //TIM_CH1

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //復用推挽輸出

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO  PB.6 

    //GPIO_SetBits(GPIOB,GPIO_Pin_6);                         //PB.6 輸出高

   //初始化TIM4

    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(TIM4, &TIM_TimeBaseStructure); //根據TIM_TimeBaseInitStruct中指定的參數初始化TIMx的時間基數單位

    

    //初始化TIM2 Channel2 PWM模式     

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //選擇定時器模式:TIM脈沖寬度調制模式2

     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比較輸出使能

    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //輸出極性:TIM輸出比較極性高TIM_OCPolarity_High  接高電平極性為高  接低電平輸出極性為低TIM_OCPolarity_Low

    TIM_OC1Init(TIM4, &TIM_OCInitStructure);  //根據T指定的參數初始化外設TIM4 CH1 TIM_OC1PreloadConfig

//    CH1的PWM脈沖波形


    TIM_CtrlPWMOutputs(TIM4,ENABLE); //⑤MOE 主輸出使能   非高級定時器可省略

    TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);  //使能TIM4在CCR1上的預裝載寄存器  TIM4 CH1

    TIM_ARRPreloadConfig(TIM4, ENABLE); //使能 TIMx 在 ARR 上的預裝載寄存器  非高級定時器可省略

    TIM_Cmd(TIM4, ENABLE);  //使能TIM4

    


}



//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復用功能模塊時鐘

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外設和AFIO復用功能模塊時鐘

    GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射  TIM3_CH2->PB5   PC7

 

   //設置該引腳為復用輸出功能,輸出TIM3 CH2的PWM脈沖波形    GPIOB.5  重映射的端口remap

    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 CH2的PWM脈沖波形    GPIOC.7  重映射的端口remap

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //TIM_CH2

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //復用推挽輸出

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOC, &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

    


}


//TIM2 PWM部分初始化 

//PWM輸出初始化

//arr:自動重裝值

//psc:時鐘預分頻數

void TIM2_PWM_Init(u16 arr,u16 psc)

{  

    GPIO_InitTypeDef GPIO_InitStructure;

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

    TIM_OCInitTypeDef  TIM_OCInitStructure;

[1] [2] [3]
關鍵字:STM32  定時器  PWM配置 引用地址:STM32 多個定時器 多路PWM配置

上一篇:stm32的引腳配置
下一篇:STM32F1系列之常用外設說明

0

推薦閱讀

近日,由科鑫光電提供的ipad無線智能可視化操控大屏幕顯示解決方案,在四川瀘州順利完工,交付甲方使用。讓第一次接觸體驗到智派APP控制led大屏幕這種方式的使用方也著實大吃了一驚,怎么一臺小ipad平板電腦就可以這樣輕輕松松、簡簡單單把led大屏幕給控制了呢。 此次項目大屏幕是選配的P2.5型號的室內led全彩屏產品,控制部分配置的是科鑫光電獨家出品的...
#include "wkup.h"#include "led.h"#include "delay.h"////////////////////////////////////////////////////////////////////////////////// //本程序只供學習使用,未經作者許可,不得用于其它任何用途//ALIENTEK戰艦STM32開發板//待機喚醒 代碼 //正點原子@ALIENTEK//技術論壇:www.openedv.com//修改日期:2012/9/7//版本:V1.0//版權所有,盜...
目前,雖然折疊屏智能手機的選擇并不多,但該領域的競爭日趨白熱化。作為領頭羊的三星,對保持在該領域的領先地位依然充滿信心。因此,其下一步行動是使 Galaxy Z Fold 2 的產量翻一番。 該公司去年生產了約 40 萬臺 Galaxy Fold 折疊屏手機,而目前他們的目標是生產 70 萬至 80 萬臺 Galaxy Z Fold 2 手機。根據一份新發布的報告指出...
這大半個月,佛山機器人“朋友圈”夠熱鬧。在國產機器人第一品牌埃斯頓大灣區總部落戶順德不到半個月,9月1日,海創大族機器人智造城一期宣布封頂,并緊鑼密鼓的啟動二期建設。當天,廣州中設機器人智能裝備股份有限公司等項目也簽署了投資建設協議。10分鐘車程外的博智林機器人也頂著酷暑趕來現場,提出共同攜手將區域建設成機器人行業的“硅谷”。還有同...

史海拾趣

問答坊 | AI 解惑

單片機硬件系統設計原則

一個單片機應用系統的硬件電路設計包含兩部分內容:一是系統擴展,即單片機內部的功能單元,如ROM、RAM、I/O、定時器/計數器、中斷系統等不能滿足應用系統的要求時,必須在片外進行擴展,選擇適當的芯片,設計相應的電路。二是系統的配置,即按照系 ...…

查看全部問答∨

求助 學位論文 車載DVD位控系統

本帖最后由 paulhyde 于 2014-9-15 09:20 編輯   要求 基于FPGA 的    各位大蝦 幫幫忙 QQ76966299  …

查看全部問答∨

長虹SF2115彩電伴音小,將音量開至最大位置(數碼100)也只能聽見微弱的聲音

對于伴音小的故障快速的修理方法是AV輸入法,即輸入AV信號確認故障范圍,若輸入AV信號聲音正常說明故障在中放電路(包括圖像中放和伴音解調電路),若輸入AV信號聲音還是不正常,說明故障在功放電路或TV/AV切 換電路。 基于以上的檢修思路,首先輸 ...…

查看全部問答∨

解說Solder Mask 和Paste Mask

對于Solder Mask Layers 和Paste Mask layers這個兩個概念,有很多初學者不太理解這兩個層的概念,因為它們的確有一些相似的地方,就自己的看法說說,貢大家參考: Solder Mask Layers:即阻焊層,就是PCB板上焊盤(表面貼焊盤、插件焊盤、過孔) ...…

查看全部問答∨

太陽能發光窗簾

一直都覺得,我們的建筑物朝南的那面墻每天接受那么長時間的陽光照射,這么多的能量卻一直都沒有什么有效的方法被收集利用,在能源如此緊張的現代社會,是個很大的遺憾。 好在越來越多的設計師在關注太陽能源的生活化利用,之前84就介紹過一個一個 ...…

查看全部問答∨

wince下如何編譯iesimple并編譯進內核!

如題, 大家別拿contents里面的內容截過來一貼就結束了。那里面我也看過了,就是不不知道怎么編譯進去。 我現在是照著contents里面的內容做的 里面提到 in the %_WINCEROOT%\\Public\\Ie\\Oak\\Lib\\<Hardware Platform> folders. To add t ...…

查看全部問答∨

如何在IRP_MJ_CREATE中修改創建文件的路徑???急急!

在文件系統過濾驅動中,過濾RIP_MJ_CREATE得到文件的創建路徑(PFILE_OBJECT file = irpsp->FileObject 取得),我想更改這個路徑,如C:\\a.txt 改為D:\\myDirectory\\b.txt。我試了很多方法都不成功.請高手指點指點啊,小弟不勝感激?。。?!…

查看全部問答∨

急聘:WinCE應用程序開發工程師

我公司因業務拓展需要,急聘wince應用程序開發工程師 要求熟悉Wince5.0  有VC /EVC開發經驗 有意者請發簡歷到email:senses531@163.com…

查看全部問答∨

s3c2410的問題

在s3c2410下程序是一定要下到0x30200000這里么?我自己修改了一個ucos的程序,下到芯片,但是指定的地址是從0開始,結果跑錯了,然后就一直不能再下載其他程序了,請問應該怎么修正這個錯誤。    原因可能是:我查了下,下載程序時總是 ...…

查看全部問答∨
小廣播
添点儿料...
无论热点新闻、行业分析、技术干货……
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 津南区| 南投县| 肃南| 榆社县| 聊城市| 师宗县| 普兰县| 阳高县| 万盛区| 巢湖市| 合川市| 赤水市| 塔城市| 万全县| 阿克苏市| 阜平县| 基隆市| 三河市| 邵武市| 如皋市| 罗江县| 班玛县| 含山县| 临西县| 北票市| 双柏县| 轮台县| 宁波市| 屯门区| 罗城| 琼海市| 贡觉县| 合作市| 阳高县| 东平县| 沙雅县| 衡南县| 天台县| 左权县| 贺州市| 故城县|