STM8固件库+IAR 之--CLK
2011-03-31 14:08
253 查看
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);
}
}
#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);
}
}
相关文章推荐
- STM8固件库+IAR 之--环境
- STM8固件库+IAR 之--GPIO
- STM8固件库+IAR 之--UART3
- stm8库中assert_param的使用
- FPGA 使用Active-HDL仿真时出现Cannot access SLP signal `/clk'. Use switch +access +r for this region.
- 20121303-STM8单片机STVD环境新建工程笔记
- stm8开发环境配置及测试
- 20130912-STM8在IAR环境的新建工程标准
- 上课不听讲下课来补习系列之-玩转单片机STM8(二)
- Measuring the Average Unhalted Frequency(讲CPU_CLK_UNHALTED.THREAD和CPU_CLK_UNHALTED.REF关系)
- 玩了下STM8单片机
- STM8的EEPROM解锁是可以重复进行的
- STM8,COSMIC中的强制类型转换
- stm8 外部中断
- STM8_GPIO 外部中断输入
- clk prepare和enable的问题
- stm8 io口 spi模拟,可用于RC522
- iar for stm8 报错Error[Li005]: no definition for "assert_failed"解决方案
- STM8开发环境搭建(修订版)
- STM8 寄存器与官方库的组合使用