实时显示方波的频率和占空比

可以解决电赛练习里面的第四题

输入捕获模式

当相应的引脚检测到跳变沿之后,TIMx_CCR 储存 CNT 的值

PWM 输入模式

从 TIx 检测输入波的跳变沿,遇到上升沿的时候,IC1 捕获、IC2 捕获、CNT 写入 CCR1,复位计数器重新开始数,下降沿时候 IC2 捕获脉冲宽度 CNT 写入 CCR2(即 high),下一次的上升沿 IC1 捕获测量周期 T

所以此时,我们已经得到周期 T,那么通过 f=1/T=84M/CCR1 就可以得到频率,通过 duty=high/T*100%=CCR2/CCR1*100% 就可以得到占空比了。

基于 CUBEMX 操作

操作一、

新建工程并做好基本配置(调整时钟频率等)

在这里笔者使用 TIM2,并配置

还有重要的一点是要打开中断,因为捕获到了之后要中断一下计算频率的频率和占空比,然后再回去

然后生成代码,打开工程。

在 USER CODE BEGIN 2 的位置写

 HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
 HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);

作为 IC1 和 IC2 开始捕获得到的 PWM 波,那么按照上面说的,我们开始计算波的频率和占空比

在 USER CODE BEGIN PFP 的位置写

 void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim){
  static float freq=0,duty=0;
  freq=84000000.0/TIM2->CCR1;
  duty=TIM2->CCR2/TIM2->CCR1;
 }

得到的 freq 和 duty 即为 PWM 的频率和占空比

操作二、

生成代码后的步骤同一

评论

  1. 1年前
    2022-1-01 2:33:26

    强强哒

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇