STM32F1学习笔记(六)—SPWM的输出

SPWM就是在PWM的基础上,让PWM的占空比做正弦变化

1、开启新定时器

2、使用软件生成正弦向量表

3、业务代码

    uint16_t sin[] = {
      1800,1913,2025,2137,2247,2356,2462,2566,2667,2764,
      2858,2947,3032,3112,3186,3256,3319,3377,3428,3473,
      3511,3543,3568,3585,3596,3600,3596,3585,3568,3543,
      3511,3473,3428,3377,3319,3256,3186,3112,3032,2947,
      2858,2764,2667,2566,2462,2356,2247,2137,2025,1913,
      1800,1686,1574,1462,1352,1243,1137,1033,932,835,
      741,652,567,487,413,343,280,222,171,126,
      88,56,31,14,3,0,3,14,31,56,
      88,126,171,222,280,343,413,487,567,652,
      741,835,932,1033,1137,1243,1352,1462,1574,1686
      }
    int main()
    {
      HAL_TIM_PWM_Start(&htimx,TIM_CHANNEL_y); // 开启pwm输出
      HAL_TIM_Base_Start_IT(&htimz); //使能刚刚配置的定时器z
      while(1)
      {
      }
    }
    /**
    * @brief 定时器中断的回调函数
    * @param htim 触发中断的定时器
    * @retval None
    */
    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
      static int i = 0;
      if(++i == size) i = 0;
      if (htim->Instance == htim3.Instance)
      {
        __HAL_TIM_SET_COMPARE(&htimx, TIM_CHANNEL_y, sin[i]); //由向量表修改占空比
      }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值