日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]STM32共有8個定時器:定時器種類位數(shù)模式特殊應(yīng)用場景高級定時器TIME1、TIME816位向上、向下、向上/下PWM點擊控制通用定時器TIME2~TIME516位向上、向下、向上/下定時計數(shù),PWM輸出,輸入捕獲,輸出比較基本定時器TIM

STM32共有8個定時器:

定時器種類位數(shù)模式特殊應(yīng)用場景高級定時器TIME1、TIME816位向上、向下、向上/下PWM點擊控制通用定時器TIME2~TIME516位向上、向下、向上/下定時計數(shù),PWM輸出,輸入捕獲,輸出比較基本定時器TIME6、TIME716位向上、向下、向上/下驅(qū)動DAC

通用定時器功能:

位于低速的APB1總線上(APB1)

16 位向上、向下、向上/向下(中心對齊)計數(shù)模式,自動裝載計數(shù)器(TIMx_CNT)。

16 位可編程(可以實時修改)預(yù)分頻器(TIMx_PSC),計數(shù)器時鐘分頻。

4 個獨立通道(TIMx_CH1~4),這些通道可以用來作為:輸入捕獲、輸出比較、PWM 生成(邊緣或中間對齊模式)、單脈沖模式輸出 。

可使用外部信號(TIMx_ETR)控制定時器和定時器互連(可以用 1 個定時器控制另外一個定時器)的同步電路。

如下事件發(fā)生時產(chǎn)生中斷/DMA(6個獨立的IRQ/DMA請求生成器): 更新:計數(shù)器向上溢出/向下溢出,計數(shù)器初始化(通過軟件或者內(nèi)部/外部觸發(fā)) 、觸發(fā)事件(計數(shù)器啟動、停止、初始化或者由內(nèi)部/外部觸發(fā)計數(shù)) 、輸入捕獲 、輸出比較 等。

通用定時器時鐘CK_INT=2*36M=72M
向上計數(shù)模式:計數(shù)器從0計數(shù)到自動加載值(TIMx_ARR),然后重新從0開始計數(shù)并且產(chǎn)生一個計數(shù)器溢出事件。

程序要求:
通過定時器中斷配置,每500ms中斷一次,然后中斷服務(wù)函數(shù)中控制LED實現(xiàn)LED1狀態(tài)取反(閃爍)。

Tout(溢出時間)=(ARR+1)(PSC+1)/Tclk

timer.c

#include"timer.h"#include"led.h"http://通用定時器3中斷初始化//這里時鐘選擇為APB1的2倍,而APB1為36M//arr:自動重裝值。//psc:時鐘預(yù)分頻數(shù)//這里使用的是定時器3!voidTIM3_Int_Init(u16arr,u16psc){TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;NVIC_InitTypeDefNVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//時鐘使能//定時器TIM3初始化TIM_TimeBaseStructure.TIM_Period=arr;//設(shè)置在下一個更新事件裝入活動的自動重裝載寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler=psc;//設(shè)置用來作為TIMx時鐘頻率除數(shù)的預(yù)分頻值TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//設(shè)置時鐘分割:TDTS=Tck_timTIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM向上計數(shù)模式TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);//根據(jù)指定的參數(shù)初始化TIMx的時間基數(shù)單位TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//使能指定的TIM3中斷,允許更新中斷//中斷優(yōu)先級NVIC設(shè)置NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;//TIM3中斷NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//先占優(yōu)先級0級NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;//從優(yōu)先級3級NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//IRQ通道被使能NVIC_Init(&NVIC_InitStructure);//初始化NVIC寄存器TIM_Cmd(TIM3,ENABLE);//使能TIMx}//定時器3中斷服務(wù)程序voidTIM3_IRQHandler(void)//TIM3中斷{if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)//檢查TIM3更新中斷發(fā)生與否{TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除TIMx更新中斷標(biāo)志LED1=!LED1;}}12345678910111213141516171819202122232425262728293031323334353637
PWM輸出

工作過程:

CCR1:捕獲比較(值)寄存器(x=1,2,3,4):設(shè)置比較值。
CCMR1: OC1M[2:0]位:
對于PWM方式下,用于設(shè)置PWM模式1【110】或者PWM模式2【111】
模式1:計數(shù)值小于CCR1值為有效電平
模式2:計數(shù)值大于CCR1值為有效電平
CCER:CC1P位:輸入/捕獲1輸出極性。0:高電平有效,1:低電平有效。
CCER:CC1E位:輸入/捕獲1輸出使能。0:關(guān)閉,1:打開。

PWM輸出配置步驟:

1、使能定時器3和相關(guān)IO口時鐘。

使能定時器3時鐘:RCC_APB1PeriphClockCmd();
使能GPIOB時鐘:RCC_APB2PeriphClockCmd();

2、初始化IO口為復(fù)用功能輸出。函數(shù):GPIO_Init();

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

3、這里我們是要把PB5用作定時器的PWM輸出引腳,所以要重映射配置,

所以需要開啟AFIO時鐘。同時設(shè)置重映射。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);

4、初始化定時器:ARR,PSC等:TIM_TimeBaseInit();
5、初始化輸出比較參數(shù):TIM_OC2Init();
6、使能預(yù)裝載寄存器:

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

7、使能定時器。TIM_Cmd();
8、不斷改變比較值CCRx,達到不同的占空比效果:TIM_SetCompare2();

程序要求:

使用定時器3的PWM功能,輸出占空比可變的PWM波,用來驅(qū)動LED燈,從而達到LED【PB5]亮度由暗變亮,又從亮變暗,如此循環(huán)。

timer.c

voidTIM3_PWM_Init(u16arr,u16psc){//定義結(jié)構(gòu)體變量GPIO_InitTypeDefGPIO_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_OCInitTypeDefTIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能定時器3時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB"RCC_APB2Periph_AFIO,ENABLE);//使能GPIO時鐘和AFIO復(fù)用功能模塊時鐘GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);//Timer3部分重映射TIM3_CH2->PB5//GPIO初始化,設(shè)置該引腳為復(fù)用輸出功能,輸出TIM3CH2的PWM脈沖波形GPIOB.5GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//TIM_CH2GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化TIM3TIM_TimeBaseStructure.TIM_Period=arr;//設(shè)置在下一個更新事件裝入活動的自動重裝載寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler=psc;//設(shè)置用來作為TIMx時鐘頻率除數(shù)的預(yù)分頻值TIM_TimeBaseStructure.TIM_ClockDivision=0;//設(shè)置時鐘分割:TDTS=Tck_timTIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//TIM向上計數(shù)模式TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);//根據(jù)TIM_TimeBaseInitStruct中指定的參數(shù)初始化TIMx的時間基數(shù)單位//初始化TIM3Channel2PWM模式TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;//設(shè)置PWM模式2TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//比較輸出使能TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//高電平有效TIM_OC2Init(TIM3,&TIM_OCInitStructure);//根據(jù)T指定的參數(shù)初始化外設(shè)TIM3OC2TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);//使能TIM3在CCR2上的預(yù)裝載寄存器TIM_Cmd(TIM3,ENABLE);//使能TIM3}123456789101112131415161718192021222324252627282930

main.c

intmain(void){u16led0pwmval=0;u8dir=1;delay_init();//延時函數(shù)初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級uart_init(115200);//串口初始化為115200LED_Init();//LED端口初始化TIM3_PWM_Init(899,0);//不分頻。PWM頻率=72000000/900=80Khzwhile(1){delay_ms(10);if(dir)led0pwmval++;elseled0pwmval--;if(led0pwmval>300)dir=0;if(led0pwmval==0)dir=1;TIM_SetCompare2(TIM3,led0pwmval);//設(shè)置占空比}}12345678910111213141516171819
輸入捕獲:

輸入捕獲的一般配置步驟:
① 初始化定時器和通道對應(yīng)IO的時鐘。
② 初始化IO口,模式為輸入:GPIO_Init();

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

單片機定時器通過晶振頻率來產(chǎn)生精準(zhǔn)的計數(shù)脈沖,從而實現(xiàn)微秒級別的時間控制。 單片機定時器依托于一個穩(wěn)定的計數(shù)器,該計數(shù)器與單片機上的晶振部件相連。晶振經(jīng)過12分頻后,為單片機提供穩(wěn)定且精準(zhǔn)的1MHZ脈沖。由于晶振的頻率極...

關(guān)鍵字: 單片機 定時器

編碼器?是一種傳感器,主要用于測量旋轉(zhuǎn)運動的角度、角速度和位移等參數(shù)。常見的編碼器類型包括增量式編碼器和絕對值編碼器,前者通過檢測脈沖的增加或減少來測量旋轉(zhuǎn)方向和距離,后者則直接輸出當(dāng)前的絕對位置信息?。

關(guān)鍵字: 編碼器? 定時器

一款語音控制的番茄時間定時器,內(nèi)置Seeed Studio XIAO ESP32S3感測和圓形顯示。用免提時間管理保持高效!

關(guān)鍵字: 定時器 ESP32S3 語音控制

【2025年3月20日, 德國慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領(lǐng)域的半導(dǎo)體領(lǐng)導(dǎo)者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼: IFNNY)近日宣布,其旗下ModusToolboxTM開發(fā)平臺中的AIROC?...

關(guān)鍵字: MCU 物聯(lián)網(wǎng) 定時器

眾所周知,說到延時,很多人都會想到用軟件件來實現(xiàn),比如定時器之類的。今天就來說說用硬件來實現(xiàn)定時的方式,雖說沒有那么準(zhǔn),但是有些場合還是用得到的。

關(guān)鍵字: CD4060 定時器

如果定時器的重裝值和分頻設(shè)置不正確,會導(dǎo)致PWM輸出的頻率和占空比不準(zhǔn)確,從而產(chǎn)生誤差?1。

關(guān)鍵字: 定時器 分頻

SysTick定時器的工作原理主要基于一個遞減計數(shù)器的機制。以下是對SysTick定時器工作原理的詳細(xì)解釋:

關(guān)鍵字: SysTick 定時器

單片機定時器是一種用于計時和定時操作的功能模塊。它通常用于生成延時、計數(shù)事件以及產(chǎn)生精確的時間間隔信號。

關(guān)鍵字: 定時器 時鐘源

在現(xiàn)代嵌入式系統(tǒng)設(shè)計中,51單片機作為一種經(jīng)典的微控制器,憑借其豐富的功能和廣泛的應(yīng)用領(lǐng)域,仍然受到工程師們的青睞。定時器中斷是51單片機中一個非常實用的功能,它可以在特定的時間間隔內(nèi)自動觸發(fā)中斷,執(zhí)行預(yù)設(shè)的操作,從而提...

關(guān)鍵字: 51單片機 定時器

Holtek新推出BS67F2432具備觸控按鍵、高精準(zhǔn)度HIRC與LCD驅(qū)動器Flash MCU。主要特色為內(nèi)建高精準(zhǔn)度4MHz HIRC振蕩電路、8路觸控按鍵及最大支持4COM×15SEG LCD驅(qū)動器。適用于觸控接...

關(guān)鍵字: MCU LCD驅(qū)動器 定時器
關(guān)閉