打印
[STM32F1]

频率和周期怎么算的

[复制链接]
8134|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengf|  楼主 | 2021-6-7 23:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define STM8_FREQ_MHZ 16
#define PWM_FREQUENCY 14000
#define MINIMUM_OFF_TIME  9500  // (unit ns)

static const u16 hArrPwmVal = ((u16)((STM8_FREQ_MHZ * (u32)1000000)/PWM_FREQUENCY));
static const u16 hMaxDutyCnt = hArrPwmVal - (((u32)STM8_FREQ_MHZ * MINIMUM_OFF_TIME)/1000);//PWM信号周期

使用特权

评论回复
沙发
gongche| | 2021-6-7 23:44 | 只看该作者
就是经过一些乘除运算给变量赋值啊

使用特权

评论回复
板凳
wuhany| | 2021-6-7 23:46 | 只看该作者
(STM8_FREQ_MHZ * (u32)1000000) 应该是cpu主频吧。你和实际对应一下。因为这些都包含宏定义。你要确认是否和实际一致。第一条赋值给hArrPwmVal ,你计算出具体值。看看程序中这个变量经过怎样计算给了哪个寄存器。再去手册看寄存器对应的位的含义,就明白了。

使用特权

评论回复
地板
jiajs| | 2021-6-7 23:49 | 只看该作者

hArrPwmVal = 16 *1000000  /  14000     ;大概是1142hz?
hMaxDutyCnt = 1142 -16 * 9500/1000);//PWM信号周期


不知道是不是这样   ,烧完程序用示波器看下就知道了

使用特权

评论回复
5
lizye| | 2021-6-7 23:52 | 只看该作者
应该是一个默认的初始数据,为了以后容易修改,写成这样了而已。

使用特权

评论回复
6
pengf|  楼主 | 2021-6-7 23:58 | 只看该作者
好的,我明天去单位试一下,多谢各位大侠了哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝