#define LED PC_ODR_ODR1
void GPIO_INIT()//PC1推挽输出
{
PC_DDR_DDR1=1;
PC_CR1_C11=1;
LED=1;//先熄灭LED
}
void TIM2_INIT()
{
TIM2_PSCR_PSC=11;//计数器时钟F_CLK=F_CPU/2的PSC次方,此处是2的11次方
TIM2_ARRH=0X03;//自动重装载高8位
TIM2_ARRL=0XE8;//自动重装载低8位TIM2_ARR=0X03E8=1000,即计数1000次产生一次中断
TIM2_IER_UIE=1;//允许中断更新
TIM2_CR1_CEN=1;//使能计数器
}
#pragma vector=TIM2_OVR_UIF_vector//一旦定时器计数溢出即触发中断
__interrupt void TIM2_OVR_UIF()
{
LED=~LED;//当中断触发时LED值取反
TIM2_SR1_UIF=0;//更新中断标志
}
void main()
{
asm("sim");//关全局中断
GPIO_INIT();
TIM2_INIT();
asm("rim");//开全局中断
while(1);
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』