⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stm8+

📁 STM8例程演示一个LED闪烁
💻
字号:
#include "STM8S105S4.H"
#include "STM8_include.H"
unsigned char  ceshi_CLK;//用于测试中断是发生在哪个
/*
中断
		CSSD :HSE失效使能
		SWIF :切换时钟使用
*/
void init_system_clock(void)
{
	CLK_SWCR =0x06;	
/*CLK_SWCR =00000110;
	BIT3 0:有时钟切换事件发生中断标志位,软件写0清除中断标志
	BIT2 1:时钟切换中断使能
	BIT1 1:使能时钟切换
	BIT  0: 切换时钟未进行
*/	
	
	CLK_SWR = 0XB4;//HSE作为主时钟源
 
	CLK_ICKR=0x07;
/*CLK_ICKR=00000111;
	BIT5 0:活跃停机模式主电压调节器开
	BIT4 只读位
	BIT3 1:LSI使能
	BIT2 1:从停机或者活跃停机模式快速唤醒使能
  BIT1 只读位
	BIT0 1:内部高速RC开,CCS被激活作为备用震荡器
*/

	CLK_ECKR=0x01;
/*CLK_ECKR
	BIT1 只读位,判断HSE是否准备就绪
	BIT0 1:HSE开
*/

/*CLK_CMSR 只读寄存器*/

	CLK_CKDIVR=0x00;
/*
	BIT[4:3] 00:高速内部时钟预分频器为1
	BIT[2:0] 000:CPU预分频因子为1
*/
	CLK_PCKENR1=0XFF;
/*
	BIT7 TIM1
	BIT6 TIM3 
	BIT5 TIM2
	BIT4 TIM4
	BIT3 UART2/3
	BIT2 UART1	BIT1 SPI
	BIT0 I2C
*/	
	CLK_PCKENR1=0XFF;
/*
	BIT7 CAN
	BIT6 X
	BIT5 X
	BIT4 X
	BIT3 ADC
	BIT2 AWU	BIT1 X
	BIT0 X
*/	
	CLK_CSSR=0x05;
/*CLK_CSSR=00000101;
	BIT3  0:为HSE失效中断标志位
	BIT2  1:时钟安全系统检测中断使能
	BIT1  只读位,读取是否辅助振荡器开
	BIT0  1:时钟安全系统开

*/
	CLK_CCOR=0x1E;
/*CLK_CCOR=00011110;
	BIT6 只读位
	BIT5 只读位
	BIT[4:1] 1111输出CPU时钟
	BIT0 0:禁止CCO输出	
*/		
	ITC_SPR1 &= 0XCF;//优先级2级
}

@far @interrupt void System_Clock_IRQ (void)
{
	if((CLK_SWCR & 0x08) == 0x08)//如果切换时钟发生
	{
		 CLK_SWCR &= 0x05;//清除SWIF标志位,并且禁止切换时钟
		 //CLK_ICKR &= 0XFE;
//清除ICKR第0位,关闭HSI,减小功耗(不知道关闭HSI会不会影响时钟安全系统CCS)
		 ceshi_CLK=1;
	}
	if((CLK_CSSR & 0x08) == 0x08)//如果HSE失效,使用HSI 16M
	{
		CLK_CSSR =0x05;//清除HSE失效标志位
		CLK_CKDIVR = 0X00;
		/*
			BIT[4:3] 00:高速内部时钟预分频器为1
			BIT[2:0] 000:CPU预分频因子为1
		*/
		ceshi_CLK=2;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -