关于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};

    即可解决问题。即,数组大小一定要明确定义,不能为空。


  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值