×
嵌入式 > 技术百科 > 详情

STM8 HSI与HSE手动切换时钟源

发布时间:2020-12-17 发布时间:
|

实验平台:思修电子工作室"祥云小王子"开发版


int main(void)

{

  PI_DDR_DDR0=1;//配置PI0端口为输出模式

  PI_CR1_C10=1; //配置PI0端口为推挽输出模式

  PI_CR2_C20=0; //配置PI0端口低速率输出

  led1=1; //PI0输出为高电平,D1熄灭

  while(1)

  {

    //************HSI->HSE时钟手动切换流程及注释说明************

    //如果CLK_CMSR中的主时钟源为HSI,则CLK_CMSR=0xE1

    //如果CLK_CMSR中的主时钟源为LSI,则CLK_CMSR=0xD2

    //如果CLK_CMSR中的主时钟源为HSE,则CLK_CMSR=0xB4

    //1.首先开启时钟切换中断使能,也就是时钟切换寄存器CLK_SWCR中的SWIEN=1

    CLK_SWCR|=0x04;

    //2.选择主时钟源,对主时钟切换寄存器CLK_SWR写入欲切换时钟

    CLK_SWR=0xB4;//配置CLK_CMSR中的主时钟源为HSE

    //3.开启全局中断

    asm("rim");

    //************************************************************

    led();//图10.13所示【A】区域电平状态

    //************************************************************

    //************HSE->HSI时钟手动切换流程及注释说明************

    //如果CLK_CMSR中的主时钟源为HSI,则CLK_CMSR=0xE1

    //如果CLK_CMSR中的主时钟源为LSI,则CLK_CMSR=0xD2

    //如果CLK_CMSR中的主时钟源为HSE,则CLK_CMSR=0xB4

    //1.首先开启时钟切换中断使能,也就是时钟切换寄存器CLK_SWCR中的SWIEN=1

    CLK_SWCR|=0x04;

    //2.选择主时钟源,对主时钟切换寄存器CLK_SWR写入欲切换时钟

    CLK_SWR=0xE1;//配置CLK_CMSR中的主时钟源为HSI

    //3.开启全局中断

    asm("rim");

    //************************************************************

    //CLK_CKDIVR=(u8)0x10;//用户调整HSI时钟源分频因子

    //************************************************************

    led();//图10.13所示【B】区域电平状态

    //************************************************************

  }

}

//************************中断函数区域****************************

#pragma vector=4

__interrupt void CLK_IRQHandler(void)//时钟源切换中断函数

{

  CLK_SWCR &= 0xF7;//清除SWIF中断标志位

  CLK_SWCR |= 0x02;//对SWEN位置“1”,启动切换

}


 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
实时控制.安全.如何加速实现未来工厂落地?