堆栈拥有先进后出的特性;
函数跳转时的现场保护和恢复和堆栈息息相关;
代码如下:
stack.h
#ifndef __STACK_H__
#define __STACK_H__
#include "stm32f10x.h"
#include <string.h>
#define ListStack 0x00
#define StaticStack 0x01
#define UpStack 0x00
#define DownStack 0x01
#define MaxStackLength 20
#define StackMode ListStack
#define StackGrowMode DownStack
#if StackMode == ListStack
#include "list.h"
#define ListStackMode 1
typedef struct
{
ListNode * pHead;
uint32_t length;
}Str_Stack;
#endif
#if StackMode == StaticStack
#define StaticStackMode 1
typedef struct
{
uint32_t array[MaxStackLength];
uint32_t Location;
uint32_t length;
}Str_Stack;
#endif
typedef unsigned int StackStates;
StackStates Stack_Init(Str_Stack *pStack);
StackStates Stack_Pop (Str_Stack *pStack , uint32_t *pBuffer);
StackStates Stack_Push(Str_Stack *pStack , const uint32_t value);