找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3666|回復: 1
打印 上一主題 下一主題
收起左側

STM32F103用TIM2做計數器沒進入中斷

[復制鏈接]
回帖獎勵 5 黑幣 回復本帖可獲得 1 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
ID:340538 發(fā)表于 2018-10-26 15:25 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
剛開始玩STM32,遇到一個問題,定時器做外部計數器用的時候沒起作用。。。
while(1)
{
        delay_ms(100);
        CTR_Write_Config(Test_Address,CTR_Cap_Ceramic);                                        //打開通道
        CTR_Write_Config(COM_Address, CTR_Cap_TIM&CTR_L_GND);                        //打開振蕩頻率計數器,電感端接地
        CTR_Write_Config(Power_Address,CTR_Lo_GND);                                                //測試電容另一端接地
        delay_us(100);                                                                                                                                
                                       
                                               
        TIM2_Count_Init(5000,2);//TIM2初始化
        TIM2_ON();//打開TIM2
        while(1);
}
void TIM2_Count_Init(u16 arr,u16 psc)
{
                TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
                GPIO_InitTypeDef  GPIO_InitStructuer;
               
                TIM_DeInit(TIM2);        //初始化TIM2
                RCC_APB2PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //①時鐘 TIM2 使能
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
                //定時器 TIM2 初始化
                GPIO_InitStructuer.GPIO_Pin=GPIO_Pin_0;
                GPIO_InitStructuer.GPIO_Mode=GPIO_Mode_IN_FLOATING;
                GPIO_InitStructuer.GPIO_Speed=GPIO_Speed_50MHz;
                GPIO_Init(GPIOA,&GPIO_InitStructuer);
               
                TIM_TimeBaseStructure.TIM_Period = arr; //設置自動重裝載寄存器周期的值
                TIM_TimeBaseStructure.TIM_Prescaler =psc; //設置時鐘頻率除數的預分頻值
                TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //設置時鐘分割
                TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM 向上計數
                TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //②初始化 TIM2
                TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted, 0);//不使用采樣濾波  外部時鐘模式2
       
}

void TIM2_ON(void)
{
                TIM_ClearITPendingBit(TIM2,TIM_IT_Update); //清除中斷標志位,避免第一次自動進入中斷一次
                TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE ); //③允許更新中斷
                TIM_SetCounter(TIM2,0);//設置計數初值
                //中斷優(yōu)先級 NVIC 設置       
                NVIC_InitTypeDef NVIC_InitStructure;
                NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //TIM8 中斷
                NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占優(yōu)先級 1 級
                NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //從優(yōu)先級 3 級
                NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道被使能
                NVIC_Init(&NVIC_InitStructure); //④初始化 NVIC 寄存器
               
                TIM_Cmd(TIM2, ENABLE); //⑤使能 TIM8
}


void TIM2_IRQHandler(void)   //TIM2計數器中斷
{
                if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //檢查TIM2更新中斷發(fā)生與否
                {
                                TIM_ClearITPendingBit(TIM2, TIM_IT_Update);                  //清除TIMx更新中斷標志
                                Register_over_count ++;                                                                                                                        //脈沖溢出計數
                                LED1 = ~LED1;
                }
                TIM_ClearITPendingBit(TIM2, TIM_IT_Update);                                  //清除TIMx更新中斷標志
}


計數器程序參考的網上的,結果計數器完全沒進過中斷,PA0口的示波器信號量了沒有問題。




捕獲.PNG (15.58 KB, 下載次數: 28)

捕獲.PNG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:385318 發(fā)表于 2018-10-28 10:14 | 只看該作者
把tim2的初始化放在while(1)的外面
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表