可以外部中斷(霍爾電平檢測),但是定時(shí)器的中斷進(jìn)不去,編碼器的溢出中斷也進(jìn)不去,晶振正常,有大佬能看看嗎
#include "debug.h"
#include "main.h"
/*********************************************************************
作用:定時(shí)產(chǎn)生中斷,來判斷此時(shí)斯克,電流,速度,距離是否達(dá)到預(yù)計(jì)值,
? ? ? ? ? ? ? ?發(fā)送PID不斷的修正的占空比數(shù)據(jù)給PWM控制函數(shù)。
?*/
?
?static? int i = 0,m;
void TIM2_TI_Init( void )
?{
? ? TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure={0};
? ? NVIC_InitTypeDef NVIC_InitStructure;
? ? RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM2, ENABLE ); //使能定時(shí)器時(shí)鐘
? ? TIM_TimeBaseInitStructure.TIM_Period = 1000-1;? ? ?//重裝載值,計(jì)數(shù)? 1ms
? ? TIM_TimeBaseInitStructure.TIM_Prescaler = 144-1;? ? ?//預(yù)分頻? ? ?1us
? ? TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//采樣
? ? TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//計(jì)數(shù)方式,向上
? ? TIM_TimeBaseInit( TIM2, &TIM_TimeBaseInitStructure);? //初始化時(shí)鐘
TIM_SetCounter(TIM2, 0);? ? ? ? //設(shè)置TIM的計(jì)數(shù)器的值
? ? //產(chǎn)生一次更新事件,使時(shí)基單元的配置生效。之后清除更新事件標(biāo)志
? ? ?TIM_GenerateEvent (TIM2, TIM_EventSource_Update);
? ? ?TIM_ClearFlag (TIM2, TIM_FLAG_Update);
TIM_ITConfig( TIM2, TIM_IT_Update ,ENABLE );
? ? NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;? ? //中斷通道
? ? NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01;? ?//搶占優(yōu)先級
? ? NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x01;? ? ?//比較優(yōu)先級
? ? NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;? ? ? ?//使能
? ? NVIC_Init(&NVIC_InitStructure);
TIM_Cmd( TIM2, ENABLE );
?}
?
?
void? TIM2_IRQHandler(void )? //1ms中斷一次
{
/* 當(dāng)然是處理計(jì)算用 */
?
// if(i%5==0)? //作用:調(diào)整PID計(jì)算的周期,減少進(jìn)入計(jì)算頻率
? ? ? ? motor_pid_control();? ? //三環(huán)PID計(jì)算
? ? ? m= i++;? ?
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
//#if PID_ASSISTANT_EN
//? uint32_t temp = GET_BASIC_TIM_PERIOD();? ? ?// 計(jì)算周期,單位ms?
//? set_computer_value(SEND_PERIOD_CMD, CURVES_CH1, &temp, 1);? ? ?// 給通道 1 發(fā)送目標(biāo)值
//#endif
}