引腳和定時(shí)器初始化TIM2_Configuration
我們使用TIM2作為普通的定時(shí)器祷杈,一秒以后將LED循環(huán)的點(diǎn)亮和關(guān)閉已旧,結(jié)構(gòu)體初始化函數(shù)如下:
void TIM2_Configuration(void)
{
//首先申明一個(gè)初始化結(jié)構(gòu)體和開(kāi)啟定時(shí)器時(shí)鐘
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period=1000;
//時(shí)鐘為72M冠骄,我們用TIM_Prescaler=71裂允,則時(shí)鐘為1M
//設(shè)置TIM_Period=1000廓旬,則1ms進(jìn)行一次溢出
TIM_TimeBaseStructure.TIM_Prescaler= (72 - 1);
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
//清更新FLAG,使能中斷和先關(guān)閉時(shí)鐘际插。
TIM_ClearFlag(TIM2, TIM_FLAG_Update);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , DISABLE);
}
用下面的語(yǔ)句對(duì)LED進(jìn)行取反操作碘耳,如下:
if((GPIO_ReadOutputDataBit(GPIOF, GPIO_Pin_7 )))
GPIO_ResetBits(GPIOF, GPIO_Pin_7 );
else
GPIO_SetBits(GPIOF, GPIO_Pin_7);
中斷服務(wù)程序
中斷優(yōu)先級(jí)配置函數(shù)如下:
void TIM2_NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
服務(wù)程序如下:
void TIM2_IRQHandler(void)
{
if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET )
{
TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);
time++;
}
}
標(biāo)準(zhǔn)庫(kù)函數(shù)
初始化函數(shù)
TIM_TimeBaseInit,以及去初始化TIM_DeInit
- 功能:定時(shí)器結(jié)構(gòu)體初始化框弛,開(kāi)啟定時(shí)器必須用到
- 函數(shù)入口:見(jiàn)上文辛辨,主要設(shè)置時(shí)鐘分頻和計(jì)時(shí)器模式
uint16_t TIM_ClockDivision
uint16_t TIM_CounterMode
uint16_t TIM_Period
uint16_t TIM_Prescaler
uint8_t TIM_RepetitionCounter
輸入捕獲模式下的初始化函數(shù)
初始化 ICStructInit ICInit TIM_TimeBaseStructInit
- 功能:輸出比較功能的初始化結(jié)構(gòu)體,一共有4個(gè)IC
- 函數(shù)入口:TIMx 和結(jié)構(gòu)體
uint16_t TIM_Channel //4通道
uint16_t TIM_ICFilter //濾波
uint16_t TIM_ICPolarity //
uint16_t TIM_ICPrescaler //
uint16_t TIM_ICSelection //是否直連
TI1_Config
- 功能:將某個(gè)引腳作為捕獲輸入,對(duì)引腳進(jìn)行配置
- 函數(shù)入口:4個(gè)
- 定時(shí)器1
- 極性斗搞,上升沿OR下降沿
- 模式:引腳輸入1直接輸入捕獲模塊1
- 濾波:具體數(shù)值
- 函數(shù)輸出:void
輸出比較模式下的初始化函數(shù)
初始化 TIM_OC1Init
- 功能:輸出比較功能的初始化結(jié)構(gòu)體绞蹦,一共有4個(gè)OC
- 函數(shù)入口:TIMx 和結(jié)構(gòu)體
uint16_t TIM_OCIdleState //閑置時(shí)的狀態(tài)
uint16_t TIM_OCMode //激活,PWM榜旦,定時(shí)OR反轉(zhuǎn)
uint16_t TIM_OCNIdleState //
uint16_t TIM_OCNPolarity //輸出極性幽七,高低電平
uint16_t TIM_OCPolarity
uint16_t TIM_OutputNState
uint16_t TIM_OutputState //比較輸出的狀態(tài),使能OR
uint16_t TIM_Pulse //捕獲比較寄存器的值
重載配置 TIM_OC1PreloadConfig
- 功能:TIMx 重載功能使能
- 函數(shù)入口:TIMx ENABLE
極性和N極性的配置OC1PolarityConfig和OC1NPolarityConfig
- 功能:略
- 函數(shù)入口:TIMx和HIGH和LOW
快速功能配置 OC1FastConfig
- 功能:TIMx快速功能使能
- 函數(shù)入口:TIMx ENABLE
內(nèi)部時(shí)鐘配置 InternalClockConfig
- 功能:使能定時(shí)器的內(nèi)部時(shí)鐘
PWM輸入功能設(shè)置 TIM_PWMIConfig
- 功能:配置以測(cè)量外部PWM的占空比
- 為外部捕獲功能溅呢,所以初始化結(jié)構(gòu)體如IC的初始化結(jié)構(gòu)
TIM_BDTRConfig
- 功能:僅限高級(jí)定時(shí)器
TIM_Cmd 定時(shí)器打開(kāi)
TIM_ITConfig 中斷配置功能
- 功能:TIMx 中斷配置源使能
- 函數(shù)入口:中斷源有如下定義的多種
#define TIM_IT_Update ((uint16_t)0x0001)
#define TIM_IT_CC1 ((uint16_t)0x0002)
#define TIM_IT_CC2 ((uint16_t)0x0004)
#define TIM_IT_CC3 ((uint16_t)0x0008)
#define TIM_IT_CC4 ((uint16_t)0x0010)
#define TIM_IT_COM ((uint16_t)0x0020)
#define TIM_IT_Trigger ((uint16_t)0x0040)
#define TIM_IT_Break ((uint16_t)0x0080)
TIM_GenerateEvent 事件配置功能
- 功能:TIMx 事件配置源使能
- 函數(shù)入口:事件源有如下定義的多種,同上
- 事件和中斷的區(qū)別就是澡屡,中斷需要轉(zhuǎn)中斷服務(wù)程序,而事件則自動(dòng)觸發(fā)動(dòng)作咐旧,屬于硬件完成
DMA配置TIM_DMAConfig
- 函數(shù)入口
- TIMx
- TIM_DMABase:DMA可以存儲(chǔ)如下的寄存器驶鹉,如TIM_DMABase_CR, TIM_DMABase_CR2, TIM_DMABase_SMCR,
- TIM_DMABurstLength:可以是1Transfer和18Transfer
DMA的命令參數(shù)TIM_DMACmd
- 函數(shù)入口
- TIMx
- TIM_DMASource:TIM_DMA_Update或者其他源TIM_DMA_CC1和TIM_DMA_Trigger等
- NewState:使能
TIM_ITRxExternalClockConfig
- 功能:外部時(shí)鐘模式1,有多種時(shí)鐘源
TIM_TIxExternalClockConfig
- 功能:另一種外部時(shí)鐘铣墨,設(shè)置稍復(fù)雜一點(diǎn)
ETR時(shí)鐘TIM_ETRClockMode1Config和TIM_ETRConfig
- 功能:高級(jí)定時(shí)器用到
TIM_PrescalerConfig
- 功能:分頻設(shè)置
TIM_SelectInputTrigger
- 功能:多種輸入觸發(fā)可選
TIM_EncoderInterfaceConfig
- 功能:編碼器功能配置
TIM_ForcedOC1Config
- 功能:強(qiáng)制輸出配置
TIM_ARRPreloadConfig
- 功能:ARR重載
TIM_SelectCOM
- 功能:高級(jí)功能
TIM_SelectCCDMA
- 功能:捕獲比較的DMA設(shè)置
TIM_CCPreloadControl
- 功能:捕獲比較的重載設(shè)置
TIM_OC1PreloadConfig
- 功能:輸出的重載設(shè)置
TIM_OC2FastConfig
- 功能:快速性能設(shè)置
TIM_ClearOC1Ref
- 功能:清OC
TIM_CCxCmd TIM_CCxNCmd
- 功能:
TIM_SelectOCxM
- 功能:選擇OC模式