1. 打开cubeMX找到定时器,这里我们用通用定时器TIM3。(通用定时器TIM2-TIM5,高级定时器TIM1和TIM8,基本定时器TIM6和TIM7)
  2. Prescaler(预分频器)Period(自动重载值)
    Prescaler = 72 - 1    
    把 72MHz 时钟分频成 1MHz(1us 每计一次)
    Period    = 1000 - 1   让定时器数到 1000us 就溢出,产生 1ms 中断
  3. 打开NVIC嵌套向量中断控制器(NVIC 是管理“所有中断”的大脑,负责中断的开关、优先级、响应方式等。)
  4. 生成代码打开keil5
  5. 在生成的目录文件中产生tim.c文件,里面就是定时器的配置
  6. 这里可以看到刚刚配置的参数
  7. 在main.c文件中编写定时器的延时函数。
    一毫秒延时函数,不用调用,hal库自动运行的,溢出自动重载
    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
        if (htim->Instance == TIM3)   // 注意:你现在用 TIM3
        {
            tim3_ms++;   // 每 1ms +1
        }
    }
    void delay_100ms(uint32_t n)
    {
        uint32_t start = tim3_ms;
        while ((tim3_ms - start) < (n * 100));
    }

下面这个就是按100ms延时的函数,可以直接调用使用,如果放在main函数后面记得记得函数声明。
谢谢大家,我会继续加油写博客

更多推荐