我正在迁移到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)
// {
.
.
.
}