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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

基本定时器TIM6和TIM7使用

發(fā)布時(shí)間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基本定时器TIM6和TIM7使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基本定時(shí)器

基本定時(shí)器TIM6和TIM7是一個(gè)16位的只能向上計(jì)數(shù)的定時(shí)器,只能定時(shí),沒有外部IO。
初始化結(jié)構(gòu)體的詳解:

typedef struct{uint16_t TIM_Prescaler; //預(yù)分頻器uint16_t TIM_CounterMode; //計(jì)數(shù)模式uint16_t TIM_Period; //定時(shí)器周期uint16_t TIM_ClockDivision; //時(shí)鐘分頻uint16_t TIM_RepetionCounter; //重復(fù)計(jì)數(shù) }TIM_TimBaseInitTypeDef;
  • TIM_Prescaler:定時(shí)器預(yù)分頻器設(shè)置,時(shí)鐘源經(jīng)過該分頻器后才是定時(shí)器時(shí)鐘,設(shè)置范圍為0~65535;計(jì)算定時(shí)器時(shí)鐘:定時(shí)器時(shí)鐘=CK_INT/(設(shè)定值 + 1)。在庫(kù)函數(shù)中APB1的預(yù)分頻系數(shù)為2,所以CK_INT= 72M。
    APB1的預(yù)分頻系數(shù)為1時(shí)倍頻器不起作用,定時(shí)器的時(shí)鐘頻率 等于APB1的頻率;當(dāng)APB1不分頻,TIM3的時(shí)鐘速度為36M,當(dāng)2分頻APB1變?yōu)?8M但TIM又會(huì)倍頻,即TIM時(shí)鐘 = 18*2 = 36M。
  • TIM_CounterMode:定時(shí)器計(jì)數(shù)方式,向上,向下以及中心對(duì)齊模式。基本定時(shí)器只有向上計(jì)數(shù),無需初始化。
  • TIM_Period:定時(shí)器周期,設(shè)定自動(dòng)重載的值,在普通定時(shí)器中就是最大計(jì)數(shù)值,范圍0~65535。
  • TIM_ClockDivision:時(shí)鐘分頻,設(shè)定定時(shí)器時(shí)鐘頻率與數(shù)字濾波器采樣時(shí)鐘頻率分頻比,基本定時(shí)器無此功能,所以不用設(shè)置。
  • TIM_RepetionCounter:重復(fù)計(jì)數(shù)器,利用它可以很容易控制輸出PWM的個(gè)數(shù)。
    編程步驟(定時(shí)器配置):
    1、使能時(shí)鐘
    2、相關(guān)配置
    3、中斷配置
    4、開啟計(jì)數(shù)器中斷
    5、使能計(jì)數(shù)器
    6、關(guān)閉時(shí)鐘,等待使用時(shí)在開啟。
    編程步驟(主函數(shù)中使用):
    1、調(diào)用配置函數(shù)
    2、開啟時(shí)鐘
    3、編寫中斷函數(shù)
    4、中斷函數(shù)中計(jì)數(shù)變量操作
    5、主函數(shù)中獲取計(jì)數(shù)變量,實(shí)現(xiàn)計(jì)時(shí);
    配置文件(TiM.c):
#include "TiM.h"void NVIC_Config(void) {NVIC_InitTypeDef NVIC_STRUCT;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);NVIC_STRUCT.NVIC_IRQChannel = TIM6_IRQn;NVIC_STRUCT.NVIC_IRQChannelSubPriority = 3;NVIC_STRUCT.NVIC_IRQChannelPreemptionPriority = 0;NVIC_STRUCT.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_STRUCT); }void TIM_Config(void) {TIM_TimeBaseInitTypeDef TIM_Struct;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);TIM_Struct.TIM_Period = 1000;TIM_Struct.TIM_Prescaler = 71;TIM_TimeBaseInit(TIM6,&TIM_Struct);TIM_ClearFlag(TIM6,TIM_FLAG_Update);NVIC_Config();TIM_ITConfig(TIM6,TIM_FLAG_Update,ENABLE);TIM_Cmd(TIM6,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,DISABLE); }

主函數(shù)(main.c):

#include "TiM.h" #include "usart.h"int time; int all_time;int main() {USART1_Config();TIM_Config();RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);while(1){if(time == 1000){time = 0;all_time ++;printf("hello:[%d:%d:%d]\n",all_time/3600,(all_time%3600)/60,all_time%60);}} }void TIM6_IRQHandler(void) {if(TIM_GetFlagStatus(TIM6,TIM_FLAG_Update) != RESET){time++;TIM_ClearFlag(TIM6,TIM_FLAG_Update);} }

運(yùn)行的結(jié)果:

hello:[0:0:1] hello:[0:0:2] hello:[0:0:3] hello:[0:0:4] hello:[0:0:5] hello:[0:0:6]

總結(jié)

以上是生活随笔為你收集整理的基本定时器TIM6和TIM7使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。