关于STM32中定义数组的问题
功能描述:今天做数据采集,TIM2定时中断20ms采集一次数据,并存入一个数组中。采集完4000个数据后,用串口将这4000个数据依次发送给上位机。
问题描述:DEBUG中对数组指针add watch,发现指针由0增加至1后就不再增加,怀疑TIM2配置有问题,只进了一次中断。于是查了半天关于定时中断配置及清除中断标志位的问题,一直得不到解决。
void TIM2_IRQHandler(void) { if(TIM_GetITStatus(TIM2,TIM_IT_Update)!=RESET) { TIM_ClearITPendingBit(TIM2,TIM_IT_Update); Read_Vel_Pulse_num=Vel_Pulse_num; Vel_Pulse_num=0; Vel_Value[PWM_Count]=Read_Vel_Pulse_num*6;//r/min PWM_Count++; TIM_SetCompare1(TIM3,PWM_Count); if(PWM_Count==4000) { TIM_Cmd(TIM2,DISABLE); Send_Start=1; }
在TIM2中断函数处设置断点,DEBUG发现中断进入没问题,但每次指针增加到1后就会在下次中断时又变为0,确定了中断没有问题,那就应该是指针、数组定义的问题了。
解决方法:将数组定义改为
u32 Vel_Value[3999]={0};
即可解决问题。即,数组大小一定要明确定义,不能为空。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了