问题是在系统时钟配置函数里面的
system_stm32f10x.c
/* Enable Prefetch Buffer */
FLASH->ACR |= FLASH_ACR_PRFTBE;
/* Flash 2 wait state */
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;
这三条指令是什么意思?
第1条,是使能预取指,
第二条中,FLASH_ACR_LATENCY宏定义是0x03,即011,取反后,为100,这条指令,把FLASH->ACR的低2位清零?
第三条指令,FLASH_ACR_LATENCY_2宏定义是0x02,即010,这条指令,是把FLASH->ACR的低3位设成010?
这三条指令中的第二条,是不是不够严谨。
我认为它是想把FLASH->ACR的低3位清零,那么FLASH_ACR_LATENCY的宏定义应该是0x07,即0111才比较合适。 |