中级会员
 
- 积分
- 249
- 金钱
- 249
- 注册时间
- 2018-10-17
- 在线时间
- 40 小时
|
我這邊寫了一個利用timer計算脈波方波寬度的程式我覺得比原本正點原子的容易懂還比較準
void TIM5_IRQHandler(void)
{
if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)
{
switch(get)
{
case 0:
ARRAYCOUNTER[counter]=TIM_GetCapture1(TIM5);
counter++;
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);//設定成負沿觸發//
get=1;
break;
case 1:
ARRAYCOUNTER[counter]=TIM_GetCapture1(TIM5);
TIM5CH1_CAPTURE_VAL=(page*(65535)+ARRAYCOUNTER[counter])-ARRAYCOUNTER[counter-1];
//printf(".....Pluse Width.....page....counter %d...%d....%d\n",TIM5CH1_CAPTURE_VAL, page, counter);
TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising);//設定成正沿觸發//
counter=0;
get=0;
page=0;
TIM_ClearITPendingBit(TIM5, TIM_IT_CC1); //清除中斷標誌位
break;
}
}
if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)
{
page++;
TIM_ClearITPendingBit(TIM5,TIM_IT_Update); //清除中斷標誌位
}
}
|
|