码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 五、Clion和STM32CubeMx---TIM定时器


    目录

    • 准备资料
    • TIM定时器(定时中断)简介
    • 实验步骤
      • 1. 复制下面这个工程模板,自带usart串口重定向
      • 2. 修改工程名,Clion打开工程
      • 3. 打开STM32CubeMx
      • 4. 配置Timers
      • 5. 工程管理
      • 6. 返回Clion编写代码
        • 函数讲解:
        • **例程:**
    • 成品
    • 工程链接

    准备资料

    1. Clion

    2. STM32CubeMx开发环境

    3. STM32定时器

    4. 利用usrat模板工程(下面第三行,手动狗头)

    实验程序已经发布到百度网盘,本文末有链接可以自取

    STM32定时器查看这篇博客STM32定时器

    模板内含usart1重定向https://pan.baidu.com/s/1qzuLn5HftfkaZjsyCmp1Ow?pwd=0000

    工具Clion和STM32CubeMx

    实验程序已经发布到百度网盘,本文末有链接可以自取

    TIM定时器(定时中断)简介

    STM32定时器查看这篇博客STM32定时器

    实验步骤

    1. 复制下面这个工程模板,自带usart串口重定向

    https://pan.baidu.com/s/1qzuLn5HftfkaZjsyCmp1Ow?pwd=0000

    2. 修改工程名,Clion打开工程

    在这里插入图片描述
    使用Clion打开工程
    在这里插入图片描述

    3. 打开STM32CubeMx

    如果什么都不修改 ? 为了刷新一下工程 : 增加一些外设;
    小小的逻辑你应该能看的懂吧(手动狗头)
    在这里插入图片描述

    RCC、时钟树和调试模式都已经配好,如需修改请到:Clion和STM32CubeMx新建项目查看

    4. 配置Timers

    在这里插入图片描述

    1. 选择TIM2

    2. 定时器时钟选择内部时钟

    Clock Source(时钟来源)

    • 选项1 :Internal Clock 内部时钟
    • 选项2 : ETR2 外部触发输入(ETR)(仅适用TIM2,3,4)

    在这里插入图片描述

    Prtscaler (定时器分频系数) : 7199
    Counter Mode(计数模式) Up(向上计数模式)

    Counter Period(自动重装载值) : 4999

    CKD(时钟分频因子) : No Division 不分频

    • 选项: 可以选择二分频和四分频

    auto-reload-preload(自动重装载) : Enable 使能

    TRGO Parameters 触发输出 (TRGO) 不使能
    TRGO: 定时器的触发信号输出 在定时器的定时时间到达的时候输出一个信号(如:定时器更新产生TRGO信号来触发ADC的同步转换,)
    在这里插入图片描述
    这两个为定时器主从模式配置,很少用到,我们用不到,所以全部关闭

    使能定时器中断:
    在这里插入图片描述
    这里我们配置的是Time1是一个高级定时器所以具有刹车功能,(但是我们不用)
    启动溢出中断
    定时器溢出时间:
    在这里插入图片描述

    这里我们 arr=4999 psc=7199 Tclk=72Mhz Tout = (5000*7200)/72 us = 500ms

    5. 工程管理

    设置完MCU的各个配置之后,第三个就是工程文件的设置了
    在这里插入图片描述

    • 设置项目名称
    • 设置存储路径
    • 选择所用IDE(这里用的是Clion,所以用STM32CubeIDE或者SW4STM32都可以)
      在这里插入图片描述
      然后点击上方GENERATE CODE 创建工程
      在这里插入图片描述

    6. 返回Clion编写代码

    配置文件什么的都已经在工程模板里面配置完毕,大家直接使用即可,Clion和STM32CubeMx新建项目这里也有配置代码

    函数讲解:

    在这里插入图片描述

    HAL_TIM_IRQHandler(&htim1);
    
    • 1

    定时器中断处理函数 在stm32f4xx_it.c的 TIM1_IRQHandler()定时器中断服务函数中
    在这里插入图片描述

    这个函数的具体作用是判断中断是否正常,然后判断产生的是哪一类定时器中断(溢出中断/PWM中断…),然后进入相应的中断回调函数

    在这里插入图片描述

    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    
    • 1

    在HAL库中,每进行完一个中断,并不会立刻退出,而是会进入到中断回调函数中,

    这里我们是使用定时器溢出中断回调函数

    1. void TIM1_IRQHandler(void) 首先进入中断函数
    2. HAL_TIM_IRQHandler(&htim1);之后进入定时器中断处理函数
    3. 判断产生的是哪一类定时器中断(溢出中断/PWM中断…) 和定时器通道
    4. void HAL_TIM_PeriodElapsedCallback(&htim1); 进入相对应中断回调函数
    5. 在中断回调函数中添加用户代码

    在这里插入图片描述

    例程:

    定时器溢出时间为500ms,LED点亮延时500ms闪烁

    在main.c主函数上方初始化使能定时器1

    /*使能定时器1中断*/
        HAL_TIM_Base_Start_IT(&htim1);
    
    • 1
    • 2

    在main.c主函数下方添加中断回调函数

    /*中断回调函数*/
    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
        static unsigned char ledState = 0;
        if (htim == (&htim1)) {
            if (ledState == 0)
                HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
            else
                HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
            ledState = !ledState;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    成品

    在这里插入图片描述

    工程链接

    链接:https://pan.baidu.com/s/1urTtEBtaYhP6-0SeweSMXQ 提取码:0000

  • 相关阅读:
    导出与导入(require,import,module.exports,exports,export,export default)
    Java常用类(二)
    瑞云介绍使用ZBrush和Marmoset工具包制作的风格化巨怪战斗机
    具有mDNS功能的串口服务器
    PageHelper插件使用Mybatis二级缓存完美解决分页查询慢问题
    Visual Studio Code+drawio扩展插件的安装和使用,免费的软件构图神器
    在线升级 redis 到7.2.2
    【Java设计模式 规范与重构】 六 代码重构小结
    python二级题库(百分之九十原题) 刷题软件推荐
    Chapter8.2:非线性控制系统分析
  • 原文地址:https://blog.csdn.net/weixin_55999942/article/details/126481005
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号