TIM(Timer)定時(shí)器
定時(shí)器可以對(duì)輸入的時(shí)鐘進(jìn)行計(jì)數(shù),并在計(jì)數(shù)值達(dá)到設(shè)定值時(shí)觸發(fā)中斷
16位計(jì)數(shù)器、預(yù)分頻器、自動(dòng)重裝寄存器的時(shí)基單元,在72MHz計(jì)數(shù)時(shí)鐘下可以實(shí)現(xiàn)最大59.65s的定時(shí)
不僅具備基本的定時(shí)中斷功能,而且還包含內(nèi)外時(shí)鐘源選擇、輸入捕獲、輸出比較、編碼器接口、主從觸發(fā)模式等多種功能。
根據(jù)復(fù)雜度和應(yīng)用場(chǎng)景分為了高級(jí)定時(shí)器、通用定時(shí)器、基本定時(shí)器三種類型
定時(shí)器類型
高級(jí)、通用、基本定時(shí)器
定時(shí)器初始化函數(shù)
#include "stm32f10x.h" // Device header
//初始化定時(shí)器
void Timer_Init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//開(kāi)啟時(shí)鐘
TIM_InternalClockConfig(TIM2);//選擇內(nèi)部時(shí)鐘,默認(rèn)內(nèi)部時(shí)鐘,可以不寫(xiě)
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//初始化時(shí)機(jī)單元
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//一分頻
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上計(jì)數(shù);有三種
TIM_TimeBaseInitStructure.TIM_Period = 10000 - 1;//
TIM_TimeBaseInitStructure.TIM_Prescaler = 7200 - 1;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);//開(kāi)啟更新中斷
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;//中斷通道
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//中斷搶占級(jí)
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//中斷優(yōu)先級(jí)
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM2, ENABLE);
}
//void TIM2_IRQHandler(void)
//{
// if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)//中斷標(biāo)志位
// {
//
// TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
// }
//}
主函數(shù)
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "Timer.h"
uint16_t Num;
int main(void)
{
OLED_Init();
Timer_Init();
OLED_ShowString(1, 1, "Num:");
while (1)
{
OLED_ShowNum(1, 5, Num, 5);
}
}
void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
{
Num ++;
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}
}
輸出比較功能(智能車、機(jī)器人等)
OC(Output Compare)輸出比較
輸出比較可以通過(guò)比較CNT與CCR寄存器值的關(guān)系,來(lái)對(duì)輸出電平進(jìn)行置1、置0或翻轉(zhuǎn)的操作,用于輸出一定頻率和占空比的PWM波形
每個(gè)高級(jí)定時(shí)器和通用定時(shí)器都擁有4個(gè)輸出比較通道
高級(jí)定時(shí)器的前3個(gè)通道額外擁有死區(qū)生成和互補(bǔ)輸出的功能
直流電機(jī)是一種將電能轉(zhuǎn)換為機(jī)械能的裝置,有兩個(gè)電極,當(dāng)電極正接時(shí),電機(jī)正轉(zhuǎn),當(dāng)電極反接時(shí),電機(jī)反轉(zhuǎn)
直流電機(jī)屬于大功率器件,GPIO口無(wú)法直接驅(qū)動(dòng),需要配合電機(jī)驅(qū)動(dòng)電路來(lái)操作
TB6612是一款雙路H橋型的直流電機(jī)驅(qū)動(dòng)芯片,可以驅(qū)動(dòng)兩個(gè)直流電機(jī)并且控制其轉(zhuǎn)速和方向文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-701480.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-701480.html
到了這里,關(guān)于【STM32】學(xué)習(xí)筆記(TIM定時(shí)器)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!