求问怎么用定时器延时36s?

2019-10-15 04:37发布

功能大致是给个值a自减到0,然后等待36s,给接了继电器的一个GPIO引脚一个高低电平来控制继电器的开闭。
但是不会用定时器延时这么长时间……
用的是STM32F1。
谢谢。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
wangzx
2019-10-17 03:37
我这是毫秒和微秒级的延时都行  但是合并在一起就不行
void delay_us(u32 nus)
{               

//        TIM3->CNT = 0;
        TIM3->ARR = nus-1;
        TIM3->PSC = 71;
//        TIM3->EGR = TIM_PSCReloadMode_Immediate;
        TIM_Cmd(TIM3,ENABLE);
        while(TIM3_Flag==RESET)//μè′yê±¼äμ½′ï
        {         
                ;
        }
        TIM_Cmd(TIM3,DISABLE);
        TIM3_Flag = 0;                       
}
//Ñóê±nms
//×¢òanmsμÄ·¶Î§
//SysTick->LOADÎa24λ¼Ä′æÆ÷,ËùòÔ,×î′óÑóê±Îa:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLKμ¥&#206;&#187;&#206;aHz,nmsμ¥&#206;&#187;&#206;ams
//&#182;&#212;72Mì&#245;&#188;t&#207;&#194;,nms<=1864
void delay_ms(u16 nms)
{


                TIM3->CNT = 0;       
          TIM3->ARR = nms*10-1 ;
                TIM3->PSC = 7199;
//        TIM3->EGR = TIM_PSCReloadMode_Immediate;
        TIM_Cmd(TIM3,ENABLE);
        while(TIM3_Flag==RESET)//μè′yê±&#188;&#228;μ&#189;′&#239;
        {         
                ;
        }
        TIM_Cmd(TIM3,DISABLE);
        TIM3_Flag=0;               
}

一周热门 更多>