/*程序描述:切换时钟源*/
#include"stm8s105s4.h"
//函数功能:延时功能
//输入参数:ms--要延时的毫秒数,这里假设cpu的主频为2M
//输出参数:无
//返回参数:无
//备 注: 无
void DelayMs(unsigned int ms)
{
while(ms!=0)
{
unsigned char i;
for(i=0;i<250;i++);
for(i=0;i<75;i++);
ms--;
}
}
void GPIO_Int(void)
{
PD_DDR = 0X18;
PD_CR1 = 0X18;
PD_CR2 = 0X00;
}
_Bool led2 @PD_ODR:3;
_Bool led1 @PD_ODR:4;
main()
{
int i;
GPIO_Int();
for(i=0;i<10;i++)
{
led2 = 1;
led1 = 1;
DelayMs(300);
led2 = 0;
led1 = 0;
DelayMs(300);
}
CLK_ECKR = 0X01;//enable HSE
while((CLK_ECKR & 0x02) == 0x00);//等待HSE
for(;;)
{
CLK_SWCR = CLK_SWCR | 0X02;
CLK_SWR = 0XB4;
while((CLK_SWCR & 0x08) == 0);
CLK_SWCR = CLK_SWCR & 0XFD;
for(i=0;i<10;i++)
{
led2 = 1;
led1 = 1;
DelayMs(300);
led2 = 0;
led1 = 0;
DelayMs(300);
}
CLK_SWCR = CLK_SWCR | 0X02;
CLK_SWR = 0xE1;
while((CLK_SWCR & 0X08) == 0);
CLK_SWCR = CLK_SWCR & 0Xfd;
for(i=0;i<10;i++)
{
led2 = 1;
led1 = 1;
DelayMs(300);
led2 = 0;
led2 = 0;
DelayMs(300);
}
}
我想问一下为什么我这个程序烧录进去之后不能运行?就是只有运行到两个led小灯闪了10次之后就一直在亮了。没有看到其他现象。
还有我想问的是: while((CLK_ECKR & 0x02) == 0x00);//等待HSE
这句话是什么意思?
本人新人一枚,感谢各位老大帮帮忙! |