年年岁岁花相似,岁岁年年人不同。一样定时,不一样的处理器(STM8)…
时钟可以用默认的2Mz,当然可以和下文一样,设置成为外部晶振(我搭载的是8M).
不说了,贴一代码,留作纪念,不做学习用,因为没什么好学的,呵呵…
#include "stm8s003f3.h"
#include "sys.h"
_Bool LED @PA_ODR:3;
void SCLK_INIT(void);
void TimerInit(void);
main()
{
SCLK_INIT();
PortInit();
TimerInit();
while (1);
}
void SCLK_INIT(void) //系统时钟配置,外部时钟8MHZ
{
CLK_ECKR = 0x01; // 使能外部高速晶振
while((CLK_ECKR & 0x02) == 0x00); // 等待外部晶振稳定
CLK_SWCR |=0x02; // SWEN <- 1
CLK_SWR = 0xB4; // 外部时钟为主时钟
while((CLK_SWCR & 0x08) == 0); // 等待切换成功
CLK_SWCR &= 0xFD; // 清除切换标志
CLK_CKDIVR = 0x00; // CPU不分频
}
void TimerInit(void)
{
TIM4_PSCR = 0x07; // 计数器时钟=主时钟/(2^7)128 = 8MHZ/128
TIM4_ARR = 0xff; // 设定重装载时的寄存器值255
TIM4_CR1 |= 0x01; // 允许计数器工作
TIM4_IER |= 0x01; // 允许更新中断
_asm("rim"); // 允许CPU全局中断
}
@far @interrupt void TIM4_UPD_OVF_IRQHandler(void)
{
unsigned char i_Count;
TIM4_SR &= 0xFE;
i_Count++;
if(15 == i_Count)
{
i_Count = 0;
LED =~ LED;
}
}
下面在附上简单的要死的端口配置子程序:
void PortInit(void)
{
/* 设置PA3为推挽输出模式 */
PA_DDR |= 0x08;
PA_CR1 |= 0x08;
}
老大,我还有退路吗???
文章评论(0条评论)
登录后参与讨论