STM32频率和占空比(可调)

STM32频率和占空比(可调)
/设置频率*****/

/*
//公式
T= (arr+1) (PSC+1)/Tck
f=Tck/(psc+1)
(arr+1)

//举例
主频为72000000,设置频率为 1000Hz

*psc=0;
(arr+1) = (Tck/(*psc+1)) / f;

(arr+1) = (72000000/(0+1)) / 1000;

(arr+1) = 72000000 / 1000;

(arr+1) = 72000;

*psc=1;
(arr+1) = (Tck/(*psc+1)) / f;

(arr+1) = (72000000/(1+1)) / 1000;

(arr+1) = 36000000 / 1000;

(arr+1) = 36000;

*arr = 35999;
*psc = 1;
*/

/*
//验证
主频为72000000,设置频率为:1000Hz == 周期为:1ms == 0.001s
*psc = 1;

//公式
T= (arr+1) *(PSC+1)/Tck

0.001 = (arr+1) *(1+1)/72000000
0.001 = (arr+1) 2/72000000
0.001
72000000= (arr+1) *2
72000 = (arr+1) *2
72000/2 = arr+1
36000 = arr+1
arr = 35999

*/

void Calculate_TimerArg(uint32_t workFreq,uint32_t f,uint16_t *arr,uint16_t psc)
{
double d_arr=0;
psc=0;
do
{
d_arr=(workFreq/(psc+1))/f;
if(d_arr>65500)
{
(psc)++;
}
else
{
break;
}
}while(1);
uint16_t t=d_arr-0.5;
arr=t;
}
/设置频率
/

/设置占空比*****/
//0.1 - 1 (1000 - 10000) duty变量之前放大了100倍 输出占空比范围为 0 - 100%

TIM_SetCompare1(TIM2,(TIM2->ARR+1)*duty/10000);

/设置占空比*****/

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值