令人困惑的是为什么变量无法更新,导致可怕的HardFault?

时间:2017-05-07 14:02:53

标签: variables malloc stm32 keil

我正在迁移到STM32,用Keil MDK5调试STM32F103C8T6,运行频率为72 MHz。总RAM仅小于200字节,启用C99模式。我有一个如下所示的函数,我不明白为什么变量new_data_Length在大多数时间内无法更新,仍然为ZERO,导致HardFault_Handler()捕获HardFault异常。作为STM32和Keil MDK的新手,也许还有我想念的东西。有什么想法吗?

uint8_t size_A = 22; // globally declared
uint8_t data_Length = someValue; // globally declared

someFunction(dData, data_Length, size_A);
.
.

在其他文件中......

void someFunction(uint8_t* rData, uint8_t dLength, uint8_t sizeA)
{
  uint8_t new_data_Length = dLength + sizeA + 1;
  unit8_t newData[new_data_Length]; // <<--malloc fails because new_Data_Length is 0

  // unit8_t* newData;
  // newData = malloc(new_data_Length); // <<--malloc fails here too... 
  // if (newData == 0) 
  // {
  .
  .
  .

}

0 个答案:

没有答案
相关问题