STM8S外部晶振使能
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 實(shí)驗(yàn)平臺(tái): STM8S103F2P6 FM 接收實(shí)驗(yàn)核心板
+ 硬件 : STM8S103F2P6
+ 開(kāi)發(fā)平臺(tái): IAR For STM8 1.10
+ 仿真器 : ST-Link
+ 日期 : 2010-6-22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "stm8s.h"
/*******************************************************************************
* ==啟用外部晶振函數(shù)==
* CLK_DeInit(); --> 時(shí)鐘各變量初始化
* CLK_HSECmd(ENABLE); --> 外部高速晶振使能
* while(SET != CLK_GetFlagStatus(CLK_FLAG_HSERDY)); --> 測(cè)試外部高速晶振位是不是使能
* CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); --> 外部時(shí)鐘預(yù)分頻器,1分頻
* CLK_ClockSwitchCmd(ENABLE); --> 使能時(shí)鐘切換功能
* CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
--> 時(shí)鐘切換 ( 自動(dòng)切換模式 , 切換到外部高速晶振 , 禁止切換中斷 , 當(dāng)前鐘狀態(tài)為使能 )
*******************************************************************************/
voidHSE_CLK_INIT(void)
{
CLK_DeInit();
CLK_HSECmd(ENABLE);
while(SET!=CLK_GetFlagStatus(CLK_FLAG_HSERDY));
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
CLK_ClockSwitchCmd(ENABLE);
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
}
/*******************************************************************************
* ==Main函數(shù)==
* CLK_GetSYSCLKSource();
*******************************************************************************/
CLK_Source_TypeDefCLK_STATE;
voidmain(void)
{
HSE_CLK_INIT();
while(1)
{
CLK_STATE=CLK_GetSYSCLKSource();
}
}
+ 實(shí)驗(yàn)平臺(tái): STM8S103F2P6 FM 接收實(shí)驗(yàn)核心板
+ 硬件 : STM8S103F2P6
+ 開(kāi)發(fā)平臺(tái): IAR For STM8 1.10
+ 仿真器 : ST-Link
+ 日期 : 2010-6-22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "stm8s.h"
/*******************************************************************************
* ==啟用外部晶振函數(shù)==
* CLK_DeInit(); --> 時(shí)鐘各變量初始化
* CLK_HSECmd(ENABLE); --> 外部高速晶振使能
* while(SET != CLK_GetFlagStatus(CLK_FLAG_HSERDY)); --> 測(cè)試外部高速晶振位是不是使能
* CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); --> 外部時(shí)鐘預(yù)分頻器,1分頻
* CLK_ClockSwitchCmd(ENABLE); --> 使能時(shí)鐘切換功能
* CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
--> 時(shí)鐘切換 ( 自動(dòng)切換模式 , 切換到外部高速晶振 , 禁止切換中斷 , 當(dāng)前鐘狀態(tài)為使能 )
*******************************************************************************/
voidHSE_CLK_INIT(void)
{
CLK_DeInit();
CLK_HSECmd(ENABLE);
while(SET!=CLK_GetFlagStatus(CLK_FLAG_HSERDY));
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
CLK_ClockSwitchCmd(ENABLE);
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
}
/*******************************************************************************
* ==Main函數(shù)==
* CLK_GetSYSCLKSource();
*******************************************************************************/
CLK_Source_TypeDefCLK_STATE;
voidmain(void)
{
HSE_CLK_INIT();
while(1)
{
CLK_STATE=CLK_GetSYSCLKSource();
}
}
下圖是仿真的效果:
評(píng)論