STM32的通用定时器查询方式问题

2019-03-23 20:16发布

我想用通用定时器延时微秒级别,但是我配置的寄存器始终有问题, 这是定时器初始化: 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 编辑 ] 此帖出自小平头技术问答
0条回答

一周热门 更多>