//源文件 //使能CPU的L1-Cache void Cache_Enable(void) { SCB_EnableICache(); // 使能I-Cache SCB_EnableDCache(); // 使能D-Cache SCB->CACR|=1<<2; // 强制D-Cache透写,如不开启,实际使用中可能遇到各种问题 } //判断I_Cache是否打开 //返回值:0 关闭,1 打开 uint8_t Get_ICahceSta(void) { uint8_t sta; sta=((SCB->CCR)>>17)&0X01; return sta; } //判断I_Dache是否打开 //返回值:0 关闭,1 打开 uint8_t Get_DCahceSta(void) { uint8_t sta; sta=((SCB->CCR)>>16)&0X01; return sta; } //THUMB指令不支持汇编内联 //采用如下方法实现执行汇编指令WFI void WFI_SET(void) { __ASM("WFI"); } //关闭所有中断(但是不包括fault和NMI中断) void INTX_DISABLE(void) { __ASM("CPSID I"); __ASM("BX LR"); } //开启所有中断 void INTX_ENABLE(void) { __ASM("CPSIE I"); __ASM("BX LR"); } //设置栈顶地址 //addr:栈顶地址 void MSR_MSP(uint32_t addr) { __ASM("MSR MSP, r0"); //set Main Stack value __ASM("BX r14"); } //头文件 /*****************************cpu**************************************/ void Cache_Enable(void); uint8_t Get_ICahceSta(void); uint8_t Get_DCahceSta(void); void WFI_SET(void); void INTX_DISABLE(void); void INTX_ENABLE(void); void MSR_MSP(uint32_t addr); /**********************************************************************/
标签:__,WFI,void,Cache,SCB,nulceo144,STM32F6xx,cpu,ASM From: https://www.cnblogs.com/lum0126/p/16883455.html