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

STM8固件库+IAR 之--CLK

发布时间:2024-05-09 发布时间:
|

STM8的时钟控制十分强大,用户可独立地管理各个时钟源,并将它们分配到CPU或各个外设。主时钟和CPU时钟均带有预分频器。具有安全可靠的无故障时钟切换机制,可在程序运行中将主时钟从一个时钟源切换到另一个时钟源。本程序是更改内部2M或者外部8M晶振,让led2闪灯,通过不同初始化,能观察出led的快慢,上代码:


#include "stm8s.h"


/*========内部高速时钟初始化========*/

void init_hsiclk(void)

{

CLK_DeInit(); //寄存器复位

CLK_HSICmd(ENABLE); //内部高速时钟使能

CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8); //内部8分频 2M

}


/*==========外部高速时钟初始化=======*/

void init_hseclk(void)

{

CLK_HSECmd(ENABLE); //外部时钟开 8M

CLK_ClockSwitchCmd(ENABLE); //切换使能

CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO ,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_DISABLE); //切换配置

CLK_ClockSecuritySystemEnable(); //开启时钟安全系统 当外部晶振损坏,自动转为内部2M时钟,牛X

}


/*========GPIO初始化========*/

void init_gpio(void)

{

GPIO_DeInit(GPIOD); //PD口复位

GPIO_Init(GPIOD , GPIO_PIN_2 , GPIO_MODE_OUT_PP_LOW_SLOW); // LED2初始化 推挽输出

}


/*========延时函数===========*/

void delay(u16 n)

{

u16 i=0;

while(n--)

{

for(i=0;i<330;i++);

}

}


/*========主函数===========*/

void main(void)

{

init_hsiclk(); //更换成init_hseclk();观察led闪灯速度

init_gpio();

while (1)

{

GPIO_WriteReverse(GPIOD,GPIO_PIN_2);

delay(1000);

}

}


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

热门文章 更多
家庭网络:从带宽共享走向内容共享