这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » STM32定时器+两个函数6行代码实现精确的延时功能!

共8条 1/1 1 跳转至

STM32定时器+两个函数6行代码实现精确的延时功能!

工程师
2021-03-12 21:06:04     打赏

直接操作寄存器,两个函数6行代码实现精确的延时功能,源码如下:


  1. 初始化定时器,前提是RCC时钟树配好。
    void TIM3_Config( void )
    {
            RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;

            TIM3->PSC = 36000 - 1;                                                //72M/36000 = 2000Hz(500uS)
            TIM3->ARR = 0xFFFF;                                                //maximum
            TIM3->CR1 |= TIM_CR1_CEN;                                        //start the timer
    }

    2.延时函数
    void Delay_ms(uint32_t UTime)
    {
            TIM3->CNT = 0;

            while (TIM3->CNT <= (UTime << 1));
    }

    3.使用它
    int main(void)
    {
                TIM3_Config();
            while(1)
            {
                    LED_BLU_INV;
                    Delay_ms(200);
            }
    }

    这个延时也是死等,只能被中断打断,合不合适看应用场合吧!






关键词: STM32     定时器     延时    

工程师
2021-03-12 21:51:52     打赏
2楼

建议用SysTick就行了,这样不用多占一个定时器!


工程师
2021-03-12 21:57:33     打赏
3楼
我用STC的STC_ISP软件直接生成的STM32延时函数,一个定时器都不要 。



工程师
2021-03-12 22:04:42     打赏
4楼
STM32CubeMX 它不香吗?HAL库不行还有LL库,寄存器方式虽然简单但是移植性,可读性太差。没办法HAL库是大方向......



工程师
2021-03-12 22:08:10     打赏
5楼

值得借鉴,感谢分享!


工程师
2021-03-13 15:29:12     打赏
6楼

果断收藏


专家
2021-03-16 02:44:48     打赏
7楼

谢谢分享


高工
2021-03-16 07:58:30     打赏
8楼

值得借鉴,感谢分享!


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]