初级会员

- 积分
- 113
- 金钱
- 113
- 注册时间
- 2014-2-4
- 在线时间
- 22 小时
|
#if defined ( __CC_ARM )
__ASM void delay_clock(unsigned int nCount)
{
Delay1
SUBS R0, R0, #1
BNE Delay1
}
#else
void delay_clock(unsigned int nCount)
{
__ASM volatile(".Delay1:");
__ASM volatile("SUBS R0, R0, #1") ; //
__ASM volatile("BNE .Delay1"); //
}
#endif
void delay_init(void){
RCC->APB1LENR|=1<<0; //TIM2时钟使能
while((RCC->APB1LENR&(1<<0))==0); //等待时钟设置OK
TIM2->ARR=(unsigned int)(-1); //设定计数器自动重装值
TIM2->PSC=CPU_FREQ/2-1; //预分频器
TIM2->SMCR=0; //SMS[3:0]=0000,CK_INT作为时钟源
TIM2->EGR=1;//立即生效
TIM2->CR1|=0x03; //使能定时器2
}
//最大延时值 4e9us=4000s,1小时多点
void delay_us(u32 i){
u32 t;
t=TIM2->CNT;
while((unsigned int)(TIM2->CNT-t)<i);
}
|
|