关闭

STM8S105S4_PKT学习笔记(1) LED灯

标签: delay
2206人阅读 评论(0) 收藏 举报
分类:

工程框图:


环境:STVD + Cosmic


程序:

#include "STM8S207S6.h"

void Delay(unsigned int count)
{
	while(count--);
}

void Gpio_Init(void)
{
	PD_DDR |= 0x0D;
	PD_CR1 |= 0x0D;
	PD_CR2 |= 0x00;
}

void Clock_Init(void)
{
	CLK_SWCR |= 0x02;//使能切换机制
	CLK_ECKR |= 0x01;//外部晶振使能
	while(!(CLK_ECKR & 0x02));//等待HSE准备就绪
	CLK_SWR  = 0xB4;//选择HSE为主时钟
	CLK_CSSR |= 0x01;//时钟安全系统使能
}

main()
{
	Clock_Init();
	Gpio_Init();
	while (1)
	{
		PD_ODR = 0x0D;
		Delay(50000);
		PD_ODR = 0x00;
		Delay(50000);
	}
}

我的这块板子的主芯片是STM8S207S6,反正都是STM8S系列的
上述程序,没有Clock_Init()函数程序也可以运行,只不过LED灯闪烁的频率会比现在低。手册上说:启动时,主时钟源默认为HSI的8分频,即HSI/8=2MHZ
程序中Clock_Init()函数的作用是将主时钟源切换为外部晶振(HSE),这里板子上接的外部晶振为8MHZ,所以用外部晶振作为时钟源是LED的闪烁频率会比用HSI/8作为时钟时的频率高。这里时钟切换采用是自动切换,并且使能了时钟安全系统,(当HSE失效时,HSI/8作为备用时钟源),验证的方法是程序运行了,将外部晶振拔掉,会看到LED闪烁的频率有明显的变化


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:392982次
    • 积分:3190
    • 等级:
    • 排名:第11142名
    • 原创:29篇
    • 转载:99篇
    • 译文:0篇
    • 评论:86条
    文章分类
    最新评论