OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7223|回复: 8

stm32 PWM输出,在中断中改占空比,怎么不行啊。

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-7-4
在线时间
0 小时
发表于 2014-7-8 14:03:42 | 显示全部楼层 |阅读模式
5金钱
 回复【5楼】 x1213378204 :
---------------------------------
请问下,我在中断改占空比,我的想法是第一周期是50%占空比,第二个70%占空比,如此循环下去,怎么出来,只有一个占空比。求各位大神,这个我琢磨好多天了,不是一个周期后进入中断吗?
程序在下面:
void TIM2_PWMOUTPUT_INIT(void){
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
  /* GPIOA and GPIOB clock enable */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
  /*--------------------------------- GPIO Configuration -------------------------*/
  /* GPIOA Configuration: Pin 6 and 7 */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_40MHz;

  GPIO_Init(GPIOB, &GPIO_InitStructure);
  GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_TIM4);
  //GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_TIM3);


 
  /* Compute the prescaler value */
  PrescalerValue = (uint16_t) (SystemCoreClock / 8000000) - 1;
  /* Time base configuration */
 TIM_TimeBaseStructure.TIM_Period = 7999;
  TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
    
    
  NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
 // TIM_OCInitStructure.TIM_Pulse =5199;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

  TIM_OC3Init(TIM4, &TIM_OCInitStructure);
  TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);

  TIM_ARRPreloadConfig(TIM4, ENABLE);

  /* TIM3 enable counter */
  TIM_Cmd(TIM4, ENABLE);
 TIM_ITConfig(TIM4,TIM_IT_CC3|TIM_IT_Update,ENABLE);

   }
void TIM4_IRQHandler(void)
{  //TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    
    
        if (TIM_GetITStatus(TIM4, TIM_IT_CC3|TIM_IT_Update) != RESET)
    {    TIM_ClearITPendingBit(TIM4, TIM_IT_CC3|TIM_IT_Update);
        
              capture=zkb[t];
        
          TIM_SetCompare3(TIM4,capture);
                  t++;
            if(t == 2)
                      t = 0;}}

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-8 14:03:43 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-7-4
在线时间
0 小时
 楼主| 发表于 2014-7-8 14:56:58 | 显示全部楼层
没有人能回答下吗?
回复

使用道具 举报

9

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2014-6-21
在线时间
2 小时
发表于 2014-7-8 16:39:43 | 显示全部楼层
坐等牛人回答 帮顶一个
Email:lancher@yeah.net QQ: 838603205
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-8 22:38:28 | 显示全部楼层
一定要用PWM模式,那就开启中断,在中断里面修改CCRx的值,控制占空比.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2013-10-15
在线时间
0 小时
发表于 2014-7-9 09:05:29 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
用了PWM模式  但是还是出不来,在主程序中该怎么写呢
书山有路,悬崖辅路
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-7-4
在线时间
0 小时
 楼主| 发表于 2014-7-9 09:21:59 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
我需要频率是一致的,我的程序已经在中断中不断修改占空比,可是不理想呀。
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-7-4
在线时间
0 小时
 楼主| 发表于 2014-7-9 09:25:45 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子大哥,你能给一个思路,用输出比较,占空比一定的情况下,频率无缝切换的编程思路。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-9 21:06:18 | 显示全部楼层
回复【8楼】stm32怎么搞啊:
---------------------------------
什么叫无缝切换???
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-6 06:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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