#include "stm32f0xx.h"void SysInit(void); uint8_t array1[260] = {0};uint8_t array2[260] = {0};uint16_t test;int main(void) { SysInit(); for(uint16_t i = 0; i < 260; i++) array1[i] = i & 0xFF; test = *(uint16_t*)&array1[0xEA]; test = *(uint16_t*)&array1[0xEC]; test = *(uint16_t*)&array1[0xEB]; while(1);}void SysInit(void) { FLASH->ACR |= FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY; RCC->CR2 |= RCC_CR2_HSI48ON; while(!(RCC->CR2 & RCC_CR2_HSI48RDY)) {}; RCC->CFGR &= ~(RCC_CFGR_PPRE | RCC_CFGR_HPRE | RCC_CFGR_SW); RCC->CFGR |= RCC_CFGR_PPRE_DIV16 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_HSI48; while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI48) {}; RCC->CFGR &= ~RCC_CFGR_PPRE; RCC->CFGR |= RCC_CFGR_PPRE_DIV1; SystemCoreClockUpdate();}
数组array1 的所有其他有效读数都正常工作( 0xEB 除外)。几乎尝试了所有方法。(volatile、optimizer、additional variables、memory aglin 等)
此代码可在其他 ARM 设备上正常工作。
|