找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1312|回复: 1
打印 上一主题 下一主题
收起左侧

bsp_pwm_output

[复制链接]
跳转到指定楼层
楼主
ID:583158 发表于 2019-7-19 14:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include "bsp_pwm_output.h"

  2. /**
  3.   * @brief  配置TIM3复用输出PWM时用到的I/O
  4.   * @param  无
  5.   * @retval 无
  6.   */
  7. static void TIMx_GPIO_Config(void)
  8. {
  9.   GPIO_InitTypeDef GPIO_InitStructure;
  10.    
  11.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO,ENABLE);
  12.     GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE);  //PB4
  13.     GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
  14.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  15.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  16.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  17.     GPIO_Init(GPIOB, &GPIO_InitStructure);

  18. //  /*GPIOB Configuration: TIM3 channel 2 as alternate function push-pull */
  19. //  GPIO_InitStructure.GPIO_Pin =  macTIM_CH2_PIN;
  20. //  GPIO_Init(macTIM_CH2_PORT, &GPIO_InitStructure);


  21. }

  22. /**
  23.   * @brief  配置TIM3输出的PWM信号的模式,如周期、极性、占空比
  24.   * @param  无
  25.   * @retval 无
  26.   */
  27. /*
  28. * TIMxCLK/CK_PSC --> TIMxCNT --> TIMx_ARR --> TIMxCNT 重新计数
  29. *                    TIMx_CCR(电平发生变化)
  30. * 信号周期=(TIMx_ARR +1 ) * 时钟周期
  31. * 占空比=TIMx_CCR/(TIMx_ARR +1)
  32. */
  33. static void TIMx_Mode_Config(void)
  34. {
  35.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  36.         TIM_OCInitTypeDef  TIM_OCInitStructure;

  37.         /* PWM信号电平跳变值 */
  38.         u16 CCR1_Val = 500;        
  39.         u16 CCR2_Val = 0;
  40. //         u16 CCR3_Val = 250;
  41. //         u16 CCR4_Val = 125;

  42. /* -----------------------------------------------------------------------
  43.     macTIMx Channel1 duty cycle = (macTIMx_CCR1/ macTIMx_ARR+1)* 100% = 50%
  44.     macTIMx Channel2 duty cycle = (macTIMx_CCR2/ macTIMx_ARR+1)* 100% = 37.5%
  45.     macTIMx Channel3 duty cycle = (macTIMx_CCR3/ macTIMx_ARR+1)* 100% = 25%
  46.     macTIMx Channel4 duty cycle = (macTIMx_CCR4/ macTIMx_ARR+1)* 100% = 12.5%
  47.   ----------------------------------------------------------------------- */

  48.   /* Time base configuration */                 
  49.   TIM_TimeBaseStructure.TIM_Period = 999;       //当定时器从0计数到999,即为1000次,为一个定时周期
  50.   TIM_TimeBaseStructure.TIM_Prescaler = 0;            //设置预分频:不预分频,即为72MHz
  51.   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;        //设置时钟分频系数:不分频(这里用不到)
  52.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数模式
  53.   TIM_TimeBaseInit(macTIMx, &TIM_TimeBaseStructure);

  54.   /* PWM1 Mode configuration: Channel1 */
  55.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            //配置为PWM模式1
  56.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;       
  57.   TIM_OCInitStructure.TIM_Pulse = CCR1_Val;           //设置跳变值,当计数器计数到这个值时,电平发生跳变
  58.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  //当定时器计数值小于CCR1_Val时为高电平
  59.   TIM_OC1Init(macTIMx, &TIM_OCInitStructure);         //使能通道1
  60.   TIM_OC1PreloadConfig(macTIMx, TIM_OCPreload_Enable);

  61. //  /* PWM1 Mode configuration: Channel2 */
  62.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  63.   TIM_OCInitStructure.TIM_Pulse = CCR2_Val;          //设置通道2的电平跳变值,输出另外一个占空比的PWM
  64.   TIM_OC2Init(macTIMx, &TIM_OCInitStructure);          //使能通道2
  65.   TIM_OC2PreloadConfig(macTIMx, TIM_OCPreload_Enable);


  66.   TIM_ARRPreloadConfig(macTIMx, ENABLE);                         // 使能TIM3重载寄存器ARR

  67.   /* TIM3 enable counter */
  68.   TIM_Cmd(macTIMx, ENABLE);                   //使能定时器3
  69. }

  70. /**
  71.   * @brief  TIM3 输出PWM信号初始化,只要调用这个函数
  72.   *         TIM3的四个通道就会有PWM信号输出
  73.   * @param  无
  74.   * @retval 无
  75.   */
  76. void TIMx_PWM_Init(void)
  77. {
  78.         TIMx_GPIO_Config();
  79.         TIMx_Mode_Config();       
  80. }

  81. /*********************************************END OF FILE**********************/
复制代码

PwmOutput.zip

2.27 KB, 下载次数: 3, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-7-20 03:14 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表