最后两行这个频率和周期怎么算的啊,麻烦详解一下!

2019-03-23 17:33发布

#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信号周期

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
KCP
1楼-- · 2019-03-24 03:26
 精彩回答 2  元偷偷看……
ienglgge
2楼-- · 2019-03-24 05:10
这就是经过一些乘除运算给变量赋值啊。(STM8_FREQ_MHZ * (u32)1000000) 应该是cpu主频吧。你和实际对应一下。因为这些都包含宏定义。你要确认是否和实际一致。第一条赋值给hArrPwmVal ,你计算出具体值。看看程序中这个变量经过怎样计算给了哪个寄存器。再去手册看寄存器对应的位的含义,就明白了。
柠檬酸钠
3楼-- · 2019-03-24 10:19
hArrPwmVal = 16 *1000000  /  14000     ;大概是1142hz?
hMaxDutyCnt = 1142 -16 * 9500/1000);//PWM信号周期


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

一周热门 更多>