keil5工具,定义一个静态或全局数组uint8_t arr[8],若以32位*((uint32_t *)arr)或64位*((uint64_t *)arr)访问将产生硬件中断,程序无法继续运行,但按16位方式访问正常,若将数组改为uint8_t arr[9]或者在这个数组的前或后面再加定义一个静态或者全局变量也正常了;再将arr改成uint16_t arr[4],以32位*((uint32_t *)arr)或64位*((uint64_t *)arr)访问也将产生硬件中断,将数组元素增加到5个,则正常;得出结论:对数组以32位*((uint32_t *)arr)或64位*((uint64_t *)arr)访问时,需要分配已32位为大小并多1字节空间才行。 |