STM32,,怎么控制输出PWM波的频率??比如我用TIM3的CH1和CH2输出两路PWM,,怎么样独立控制这两路频率?
我只知道初始化的时候通过预分频PSC和ARR初始化一个频率,,之后怎么改??我看函数库有一个SetICnPrescaler的,,可惜是输入分频的,,有没有类似控制输出通道...
我只知道初始化的时候通过预分频PSC和ARR初始化一个频率,,之后怎么改??我看函数库有一个SetICnPrescaler的,,可惜是输入分频的,,有没有类似控制输出通道频率的??
就像用TIM_SetCompare2(TIM3,led0pwmval);可以即时改变占空比一样我想能即时改变频率 展开
就像用TIM_SetCompare2(TIM3,led0pwmval);可以即时改变占空比一样我想能即时改变频率 展开
展开全部
这个实验我刚研究过,我说说,看你可能理解我说的!
TIM_SetCompare2(TIM3,led0pwmval);通过这个函数可以往捕获/ 比较寄存器2(TIM3_CCR2)里面写值,当定时器3更新的时候,把led0pwmval写入到TIM3_CCR2里面,然后定时器就会不停的把TIM3_CNT寄存器的值和TIM3_CCR2寄存器里面的值进行比较,假如你设置的是向上计数模式,并且通过这个函数(TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高)把TIM3的输出/比较极性设置为高的时候,那么此时如果TIM3_CNT<TIM3_CCR2那么输出就是低电平,如果TIM3_CNT>=TIM3_CCR2那么输出就是高电平,所以在这里(//输出极性:TIM输出比较极性高)的意思是TIM3_CNT>=TIM3_CCR2时候的极性为高,明白了不?
TIM_SetCompare2(TIM3,led0pwmval);通过这个函数可以往捕获/ 比较寄存器2(TIM3_CCR2)里面写值,当定时器3更新的时候,把led0pwmval写入到TIM3_CCR2里面,然后定时器就会不停的把TIM3_CNT寄存器的值和TIM3_CCR2寄存器里面的值进行比较,假如你设置的是向上计数模式,并且通过这个函数(TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高)把TIM3的输出/比较极性设置为高的时候,那么此时如果TIM3_CNT<TIM3_CCR2那么输出就是低电平,如果TIM3_CNT>=TIM3_CCR2那么输出就是高电平,所以在这里(//输出极性:TIM输出比较极性高)的意思是TIM3_CNT>=TIM3_CCR2时候的极性为高,明白了不?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询