最近在用STM32F103R8T6做一个无刷电机的驱动程序,其中用TIM1高级定时器做了一个定时中断,方便做控制。程序的配置上,定时器1工作正常,如果只是调用普通函数是没有问题的,但是在调用有参数返回的函数的时候,中断函数并没有退出。
程序大概如下:
void TIM1_UP_IRQHandler(void)
{
if(TIM_GetITStatus(TIM1 , TIM_IT_Update) == SET)
{
TIM_ClearITPendingBit(TIM1 , TIM_IT_Update);
LED_On_Only(LED1); //程序工作正常
//angle = Get_Angle(); //加上这句的时候程序就死中断里面没有出来
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
可是要调用的函数是在正常工作的,需要调用的这个函数的功能是通过stm32的SPI访问磁编码器获得角度值。
目前这个函数是放在主函数中进行,返回的参数定义为全局变量,中断函数是通过这样的方式访问这些参数的。但是这样的方式采集的值并不是实际值(采集到编码器值的时候电机早就转过去很多了),做位置环控制就比较麻烦
如果中断频率1KHZ, 而你的 Get_Angle(); 运行一遍 却要2mS, 你说 是不是会出问题?
另外 ,很有可能 你的Get_Angle(); 函数 还有另外的问题.
Get_Angle(); 需要这么高的带宽????
一周热门 更多>