STM32 Hardfault错误
    https://blog.csdn.net/electrocrazy/article/details/78173558
    STM32F4xx FPU和DSP库的使用
    https://blog.csdn.net/electrocrazy/article/details/73456697
    STM32定义变量位于指定的SRAM地址
    1、定义一个数组比如value[],让数组的首地址指向特定的SRAM地址,比如0x20000100
    1)align(8) uint8_t value[20] attribute((at(0x20000100))); MDK中定义
    2)int value[]
    attribute((section(“.ARM.at0x20000100”))) = {0x01, 0x02}; GCC中定义
    2、指定函数的存放地址
    void func (void) _attribute
    ((section(“.ARM.__at_0x00000200”)));
    STM32——.bss .data .text 与Code, RO-data , RW-data, ZI-data的关系
    https://blog.csdn.net/u012564117/article/details/95170275
    STM32的堆栈与内存
    https://blog.csdn.net/wangzibigan/article/details/81333492
    (1)栈区(stack):由编译器自动分配和释放,存放函数的参数与返回值、局部变量等,其操作方式类似于数据结构中的栈。
    (2)堆区(heap):由程序员分配管理。
    (3)全局区与静态区:存储全局变量和静态变量,其中初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。
    (4)文字常量区:常量字符串存放。
    (5)程序代码区:存放程序代码。