|
剛開始玩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);//設置計數初值
//中斷優先級 NVIC 設置
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //TIM8 中斷
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占優先級 1 級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //從優先級 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更新中斷發生與否
{
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)
下載附件
2018-10-26 15:23 上傳
|