首页 > 其他分享 >STM32F6xx外设驱动8-cpu(寄存器)nulceo144

STM32F6xx外设驱动8-cpu(寄存器)nulceo144

时间:2022-11-12 12:23:10浏览次数:60  
标签:__ WFI void Cache SCB nulceo144 STM32F6xx cpu ASM

//源文件

//使能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

相关文章