日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32F1笔记(九)通用定时器

發布時間:2023/12/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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笔记(九)通用定时器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。