入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

关于STM32中定义数组的问题

创建时间:2017-07-23 投稿人: 浏览次数:2858

    功能描述:今天做数据采集,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。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像