STM32F1笔记(九)通用定时器
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                STM32F1笔记(九)通用定时器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                STM32F1的定時器分為TIME1/8等高級定時器,TIME2~5等通用定時器,TIME6/7基本定時器。三者的區別主要參考《STM32中文參考手冊》里特性的每種定時器主要特性的異同。
先看中文手冊中通用定時器的簡介:
通用定時器的寄存器有一個比較有趣的地方。
該寄存器在物理上實際對應著2個寄存器。
一個是程序員可以直接操作的,另外一個是程序員看不到的。
看不到的寄存器叫做影子寄存器,事實上真正起作用的是影子寄存器。
根據TIMx_CR1寄存器中APRE位的設置:APRE=0時,預裝載寄存器的內容可以隨時傳送到影子寄存器,此時2者是連通的;而APRE=1時,在每一次更新事件(UEV)時,才把預裝在寄存器的內容傳送到影子寄存器。
通用定時器配置示例:
void TIM3_Init(u16 period, u16 prescaler) {TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);TIM_TimeBaseStructure.TIM_Period = period; TIM_TimeBaseStructure.TIM_Prescaler = prescaler;TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);TIM_ITConfig(TIM3,TIM_IT_Update, ENABLE);NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM3, ENABLE); } TIM3_Int_Init(9,7199);//1ms定時器時間計算:T = ( (1 + period) * (1 + prescaler) ) / 72000000 = ((1+ 9)*(1 + 7199))/72000000= 0.001s = 1ms
定時器中斷服務函數示例:
void TIM3_IRQHandler(void) {if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET){TIM_ClearITPendingBit(TIM3, TIM_IT_Update);} }因為配置中是向上計數,所以中斷內是判斷向上計數中斷是否發生。
總結
以上是生活随笔為你收集整理的STM32F1笔记(九)通用定时器的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 毛坯房装修多少钱一平啊?
- 下一篇: 颐和园进园需要身份证吗
