历史上的今天
今天是:2025年07月12日(星期六)
2019年07月12日 | 关于STM32中定义数组的问题
2019-07-12 来源:eefocus
功能描述:今天做数据采集,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};
即可解决问题。即,数组大小一定要明确定义,不能为空。
史海拾趣
|
首先是IoAttachDevice 这一个函数 是不是已经被 过滤设备 绑定 硬件设备 ?不用再用 IoAttachDeviceToDeviceStacksaSafe 和 IoGetDeviceObjectPointer 了 如果了解错误 请高手把下边的流程排列下 实在想法没路。感激不尽。 生成过滤设备 过滤 ...… 查看全部问答> |
|
在下刚学习驱动。 请问编制bootloader时注意些什么? 我编制了一个nxp 3250 的bootloader,老是下载不成功,可能是nand flash的问题,应注意些什么?… 查看全部问答> |
|
这两天在看S3C2410 Eboot里的am29lv800.c文件,这个文件实现对 AMD29LV800BB芯片的初始化、擦除、读、写等操作。 我的开发板使用的NorFlash是SST39VF1601,配套的Eboot里没有找到类似的初始化这块芯片的文件,生成的Eboot 直接烧到NorFlash中不能 ...… 查看全部问答> |
|
The S6 switch H/W setting。。。。。。,H/W是什么意思 这是一个电路板的使用说明上说道,是关于开关的方面的.The S6 switch H/W setting。。。。。。,H/W是什么意思… 查看全部问答> |
|
大家好,当我使用SOPC的IP核生成了一个工程文件(暂时把这个顶层叫vip吧)之后,想要将vip模块作为我一个子模块例化一下。可是这样做了之后编译不能通过,报错如下:Error (10613): VHDL syntax error at video_conver_top.vhd(153): experienced u ...… 查看全部问答> |




