//源文件
//使能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);
/**********************************************************************/