for里面使用延时函数程序就死了 为什么啊

2019-08-14 04:16发布

volatile u16 i,j;
for(i=0;i<j;i++)
{
  TIM1->CR1 |= TIM_CR1_CEN;
  delay_us(temp1int[2*i]);
  TIM1->CR1 &= (uint16_t)(~((uint16_t)TIM_CR1_CEN));
  delay_us(temp1int[2*i+1]);
}
delay函数使用的原子哥的不采用中断的延时函数


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
支离益
2019-08-15 09:02
void delay_us(u32 nus) {                         u32 tem;                              SysTick->LOAD=nus*fac_us; //时间加载                                    SysTick->VAL=0x00;        //清空计数器         SysTick->CTRL=0x01 ;      //开始倒数                   do         {                 tem=SysTick->CTRL;         }         while(tem&0x01&&!(tem&(1<<16)));//等待时间到达            SysTick->CTRL=0x00;       //关闭计数器         SysTick->VAL =0X00;       //清空计数器          }

一周热门 更多>