我想用通用定时器延时微秒级别,但是我配置的寄存器始终有问题,
这是定时器初始化: RCC->APB1ENR|=1<<1;//TIM3时钟使能
TIM3->PSC=psc; //预分频器5,得到12Mhz的计数时钟
TIM3->CR1|=0x04; //计数器溢出时,产生更新中断或DMA请求 fac_us= 72/(psc+1);
f ac_ms=(u16)fac_us*1000;
微秒延时函数如下:
TIM3->ARR=(u16)nus*fac_us; //时间加载(SysTick->LOAD为24bit)
TIM3->CNT=0x00; //清空计数器
TIM3->CR1|=0x01; //开始倒数
while(!(TIM3->SR && 0x01)) ;//查询us延时是否到 ;
;//等待
TIM3->SR = 0x00; //清楚更新事件中断标志位
TIM3->CR1=0; //关闭计数器
TIM3->CNT=0x00; //清空计数器
不知道哪里还没有配置好,TIM3->SR的第一位时钟为1 ,即while(!(TIM3->SR && 0x01)) 条件一直为真
[
本帖最后由 suse_lj 于 2011-10-11 20:23 编辑 ]
此帖出自
小平头技术问答
一周热门 更多>