可以外部中断(霍尔电平检测),但是定时器的中断进不去,编码器的溢出中断也进不去,晶振正常,有大佬能看看吗
#include "debug.h"
#include "main.h"
/*********************************************************************
作用:定时产生中断,来判断此时斯克,电流,速度,距离是否达到预计值,
发送PID不断的修正的占空比数据给PWM控制函数。
*/
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 ); //使能定时器时钟
TIM_TimeBaseInitStructure.TIM_Period = 1000-1; //重装载值,计数 1ms
TIM_TimeBaseInitStructure.TIM_Prescaler = 144-1; //预分频 1us
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//采样
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//计数方式,向上
TIM_TimeBaseInit( TIM2, &TIM_TimeBaseInitStructure); //初始化时钟
TIM_SetCounter(TIM2, 0); //设置TIM的计数器的值
//产生一次更新事件,使时基单元的配置生效。之后清除更新事件标志
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; //抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x01; //比较优先级
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd( TIM2, ENABLE );
}
void TIM2_IRQHandler(void ) //1ms中断一次
{
/* 当然是处理计算用 */
// if(i%5==0) //作用:调整PID计算的周期,减少进入计算频率
motor_pid_control(); //三环PID计算
m= i++;
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
//#if PID_ASSISTANT_EN
// uint32_t temp = GET_BASIC_TIM_PERIOD(); // 计算周期,单位ms
// set_computer_value(SEND_PERIOD_CMD, CURVES_CH1, &temp, 1); // 给通道 1 发送目标值
//#endif
}