stm32死机问题
为什么在VC++6.0调用这个函数没有问题,但是在stm32调用这个函数就死机了?是不是局部变量开的内存太大了??
main函数调用: filter(ram, 900, &max, &min, 1);//返回的最大值是拍好序的第n-1-1,最小值为排好序的第1个
//主函数调用的似乎在这里会死机不懂为什么
/*******************************************************
* 函数名称:Filter_MaxMin
* 功 能: 实现软件滤波,并且取出指定的最大和最小值
* 入口参数: value_pre[]:原始数据
n:原始数据的个数
*pMax:要返回的最大值
*pMin:要返回的最小值
max_min:要返回值的范围。默认是第一个和倒数
* 出口参数: 原始数据的中间值
* 范 例:filter(ram, 10, &max, &min, 0) //返回的最大值是拍好序的第n-1,最小值为排好序的第0个
filter(ram, 10, &max, &min, 1);//返回的最大值是拍好序的第n-1-1,最小值为排好序的第1个
* 说 明:本滤波程序没有改变原始数据,内部有复制原始数据的操作
* 其 他:
*******************************************************/
//总体思路:1. 对原始数据进行复制
// 2.冒泡排序法返回中点值,最大值,最小值
// 3.
char Filter_MaxMin(const char value_pre[], int n, char* pMax, char* pMin, int max_min)
{
char count,i,j,temp;
char value_buf[n];
//总体思路:1. 对原始数据进行复制
for(i=0; i<n; i++)
{
value_buf[i] = value_pre[i];
}
//2.冒泡排序法返回中点值,最大值,最小值
for (j=0;j<n-1;j++)
{
for (i=0;i<n-j-1;i++)
{
if ( value_buf[i]>value_buf[i+1] )
{
temp = value_buf[i];
value_buf[i] = value_buf[i+1];
value_buf[i+1] = temp;
}
}
}
*pMax = value_buf[n-1-max_min];
*pMin = value_buf[max_min];
return value_buf[(n-1)/2];
}
main函数调用: filter(ram, 900, &max, &min, 1);//返回的最大值是拍好序的第n-1-1,最小值为排好序的第1个
//主函数调用的似乎在这里会死机不懂为什么
/*******************************************************
* 函数名称:Filter_MaxMin
* 功 能: 实现软件滤波,并且取出指定的最大和最小值
* 入口参数: value_pre[]:原始数据
n:原始数据的个数
*pMax:要返回的最大值
*pMin:要返回的最小值
max_min:要返回值的范围。默认是第一个和倒数
* 出口参数: 原始数据的中间值
* 范 例:filter(ram, 10, &max, &min, 0) //返回的最大值是拍好序的第n-1,最小值为排好序的第0个
filter(ram, 10, &max, &min, 1);//返回的最大值是拍好序的第n-1-1,最小值为排好序的第1个
* 说 明:本滤波程序没有改变原始数据,内部有复制原始数据的操作
* 其 他:
*******************************************************/
//总体思路:1. 对原始数据进行复制
// 2.冒泡排序法返回中点值,最大值,最小值
// 3.
char Filter_MaxMin(const char value_pre[], int n, char* pMax, char* pMin, int max_min)
{
char count,i,j,temp;
char value_buf[n];
//总体思路:1. 对原始数据进行复制
for(i=0; i<n; i++)
{
value_buf[i] = value_pre[i];
}
//2.冒泡排序法返回中点值,最大值,最小值
for (j=0;j<n-1;j++)
{
for (i=0;i<n-j-1;i++)
{
if ( value_buf[i]>value_buf[i+1] )
{
temp = value_buf[i];
value_buf[i] = value_buf[i+1];
value_buf[i+1] = temp;
}
}
}
*pMax = value_buf[n-1-max_min];
*pMin = value_buf[max_min];
return value_buf[(n-1)/2];
}
...全文
相关推荐
STM32运行RTC时死机问题
然而,在某些情况下,STM32在运行RTC时可能会遇到死机问题,这通常是由于不正确的配置或异常处理引起的。RTC初始化是确保STM32 RTC正常工作的重要步骤。
STM32F2高低温死机问题.pdf-综合文档
针对STM32F2在高低温环境下发生死机的问题,本篇文档探讨了相关的排查与解决方案。首先,文档指出STM32F2的工作温度范围规定在-40°C至+85°C。
一个与STM32F2高低温死机相关的话题
### STM32F2在高低温测试中的死机现象及解决方法#### 一、问题背景STM32F2是一款高性能的32位微控制器,广泛应用于各种嵌入式系统设计中。
应用笔记LAT1151+程序运行在+STM32H750+的外扩+FLASH+上两小时后死机
### 问题现象客户在使用STM32H750VBT6微控制器开发产品时遇到了一个特殊问题。
stm32_i2c-master_Mpu6050死机_STM32F103硬件I2C_
同时,检查STM32的I2C中断处理函数和状态机,确保没有逻辑错误或无限循环。5. **错误处理**:添加适当的错误检测和恢复机制,例如超时重试或复位I2C总线,以防止死机。


单片机/工控
