使用STM32F103C8T6定时器实现精确时间控制

文章目录

  • 1.STM32CubeMX新建工程
  • 2.配置RCC
  • 3.配置SYS
  • 4.设置io
  • 5.配置定时器2
  • 6.设置中断
  • 7.配置时钟
  • 8.USART
  • 9.代码添加
  • 10.参考
  • 1.STM32CubeMX新建工程


    芯片选择STM32F103C8

    2.配置RCC

    3.配置SYS

    4.设置io

    C15设置为GPIO_Output
    User Label设置为D1

    5.配置定时器2

    Clock Source设置为Internal Clock
    分频系数设为71,系统在处理时会自动加1,所以实际上分频是72。
    由于时钟我们一般会配置为72MHZ,所以72分频后得到1MHZ的时钟。
    1MHZ的时钟,计数5000次,得到时间5000/1000000=0.005秒。也就是每隔0.005秒定时器2会产生一次定时中断。

    6.设置中断


    7.配置时钟

    8.USART

    Model选择Asynchronous

    9.代码添加

    1.在创建的项目main.c中添加

    HAL_TIM_Base_Start_IT(&htim2);
    
    1. 5秒的定时器,每隔5秒从串口发送“hello windows!”;同时设置一个2秒的定时器,让LED等周期性地闪烁。

      该函数为定时器的中断回调函数,当产生定时中断的时候,会自动调用这个函数。在函数内部定义了一个静态变量:time_cnt和time_call。当它大于等于400的时候,才会执行if里面的代码。也就是说需要发生400次中断,才会让LED的状态翻转。前面已经算过了,一次定时中断的时间是0.005秒,所以400次中断的时间是0.005*400=2秒。也就是说每隔2秒,LED的状态翻转一次。

    3.构建,烧录,上电

    10.参考

    http://www.mcublog.cn/stm32/2021_01/stm32cubemx-dingshiqi-led/

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用STM32F103C8T6定时器实现精确时间控制

    发表评论