码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • stm32cubemx hal学习记录:TIMER输入捕获


    一、实验功能描述

    使用一个定时器输出一路PWM,然后使用另一个定时器测量出占空比可频率

    二、参数配置

    1、配置RCC、SYS、USART1、时钟84MHz

    2、使用TIM2的CH1通道输出1kHz,占空比为40%的方波

     3、使用TIM3的CH1和CH2的输入捕获功能进行检测占空比和测量频率

    Counter Setting:

    Prescaler(时钟预分频数):84-1  最大捕获频率84MHz/(83+1) = 1MHz

    Counter Period(自动重装载值):65535,设置为最大值,若为32位则设置为4294967295

    Input Capture Channel1:

    Polarity Selection:Rising Edge(上升沿捕获)

    Input Capture Channel2:

    Polarity Selection:Failing Edge(下降沿捕获)

    三、代码编写

    1、TIM2输出一路PWM

    1. HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
    2. __HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,40);

    2、在TIM3代码处启动TIM3 IC

    1. HAL_TIM_IC_Start(&htim3,TIM_CHANNEL_1);
    2. HAL_TIM_IC_Start(&htim3,TIM_CHANNEL_2);

     3、编写输入捕获函数

    1. void TIM3_GetCapture(uint16_t *pucBuf)
    2. {
    3. pucBuf[0]=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_1)+1;
    4. pucBuf[1]=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_2)+1;
    5. }

    4、在main中定义变量和调用函数

    1. uint16_t ucCapt[2];
    2. uint16_t Freq;
    3. uint16_t Duty;
    4. while (1)
    5. {
    6. TIM3_GetCapture(ucCapt);
    7. Freq=1000000/ucCapt[0];
    8. Duty=ucCapt[1]*100/ucCapt[0];
    9. }

    5、进行debug,结果正确

    四、需要背的

    1、输入捕获初始化

    1. HAL_TIM_IC_Start(&htim3,TIM_CHANNEL_1);
    2. HAL_TIM_IC_Start(&htim3,TIM_CHANNEL_2);

    2、输入捕获函数

    1. void TIM3_GetCapture(uint16_t *pucBuf)
    2. {
    3. pucBuf[0]=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_1)+1;
    4. pucBuf[1]=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_2)+1;
    5. }

    3、频率与占空比计算公式

    1. Freq=1000000/ucCapt[0];
    2. Duty=ucCapt[1]*100/ucCapt[0];

  • 相关阅读:
    逆向破解思路和获取app的代码,脱壳操作(四)
    产品经理进阶:外包原因及类型(一)
    代码随想录算法训练营第23期day7| 454.四数相加II 、383. 赎金信 、15. 三数之和、18. 四数之和
    以太网 TCP协议(数据交互过程、窗口机制)
    STM32外部中断
    程序员的护城河
    油/水溶性/CdSe/CdSe/CdS/CdSe-ZnS/InP-ZnS量子点的制备
    Profinet转Modbus网关模块实现PLC和从站Modbus通讯,无需编写程序
    实例分割Yolact边缘端部署 (二) 训练自己的模型-> onnx
    第六章《类的高级特性》第3节:访问修饰符
  • 原文地址:https://blog.csdn.net/ohhjack/article/details/127702944
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号