你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

time3输出PWM问题

[复制链接]
fall556 提问时间:2012-11-14 13:32 /
 
想在PB6为低电平的时候,PA.6输出PWM波形,PB6高电平的时候,PA.6没有输出。仿真的时候是正确的,可下载到PCB的时候,无论PB6是什么状态,PA6都有输出,下面是程序,大家帮忙看看,问题出在了那里
 
#include "stm32f10x.h"
//自定义函数声明
void RCC_Configuration(void);
void GPIO_Configuration(void);
//void TIM_Configuration(void);
 ErrorStatus HSEStartUpStatus;
/*
 * 函数名:main
 * 描述  : 主函数
 * 输入  :无
 * 输出  : 无
 */
                       int main(void)
               {    
          
                       //void TIM_Configuration(void);            //   设置TIM
     
    if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_6)==RESET)
        {
               TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;     //定义TIM_TimeBase初始化结构体TIM_TimeBaseStructure
         TIM_OCInitTypeDef TIM_OCInitStructure;             //定义TIM_OCInit初始化结构体TIM_OCInitStructure
           RCC_Configuration();            // 设置系统时钟
                              GPIO_Configuration();           // 设置GPIO端口
            // time=1;
                              /*  PWM输出频率为1200HZ */
         //计数重载值为60000,预分频值为(0+1=1),时钟分割0,向上计数模式
         TIM_TimeBaseStructure.TIM_Period =0xFFFF;
                              TIM_TimeBaseStructure.TIM_Prescaler = 0x02;
                              TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
                              TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
                              TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
          //设置OC1通道,工作模式为PWM1输出模式,使能比较匹配输出极性,时钟分割0,向上计数模式
                              TIM_OCInitStructure.TIM_OCMode =TIM_OCMode_PWM1; 
                              TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
                              TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
                              TIM_OCInitStructure.TIM_Pulse =0x8000;
                              TIM_OC1Init(TIM3, &TIM_OCInitStructure);
 
          //使能预装载寄存器
         TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
                              TIM_ARRPreloadConfig(TIM3, ENABLE);
                              TIM_Cmd(TIM3, ENABLE);          //启动TIM计数    
          }
     else
            {
           TIM_Cmd(TIM3, DISABLE); 
         }
      
        }                              
   
             
  /*
 * 函数名:RCC_Configuration
 * 描述  : 设置系统各部分时钟
 * 输入  :无
 * 输出  : 无
 */
     void RCC_Configuration(void)
           {  
               /* RCC system reset(for debug purpose) */
               RCC_DeInit();
               /* Enable HSE */
               RCC_HSEConfig(RCC_HSE_ON);
               /* Wait till HSE is ready */
               HSEStartUpStatus = RCC_WaitForHSEStartUp();
               if(HSEStartUpStatus == SUCCESS)
                {
                   /* Enable Prefetch Buffer */
                   FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
                   /* Flash 2 wait state */
                   FLASH_SetLatency(FLASH_Latency_2);
 
                   /* HCLK = SYSCLK */
                   RCC_HCLKConfig(RCC_SYSCLK_Div1);
 
                   /* PCLK2 = HCLK */
                   RCC_PCLK2Config(RCC_HCLK_Div1);
                   /* PCLK1 = HCLK/2 */
                   RCC_PCLK1Config(RCC_HCLK_Div2);
                   /* PLLCLK = 8MHz * 9 = 72 MHz */
                   RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
                   /* Enable PLL */
                   RCC_PLLCmd(ENABLE);
                   /* Wait till PLL is ready */
                   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
                     {
                     }
   
                   /* Select PLL as system clock source */
                   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
                   /* Wait till PLL is used as system clock source */
                   while(RCC_GetSYSCLKSource() != 0x08)
                      {
                      }
                }
                /* GPIOB clock enable */
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
                          
                      
                   
                           /* GPIOA clock enable */
                     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
                           /* TIM2 clock enable */
                    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
                           /* Enable AFIO clock */
                    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
             }
  
     /*
     * 函数名:GPIO_Configuration
     * 描述  : 配置GPIO参数
     * 输入  :无
     * 输出  : 无
     */   
                                 void GPIO_Configuration(void) 
          {             
              GPIO_InitTypeDef   GPIO_InitStructure;
          /* GPIOA.0 Configuration:TIM2 Channel1 in Output */
                              GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
                              GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
                              GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                              GPIO_Init(GPIOA, &GPIO_InitStructure);
      
                //配置GPIOB.6为浮动输入///
               GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
                              GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;
                               GPIO_Init(GPIOB, &GPIO_InitStructure); 
        
       }
收藏 评论1 发布时间:2012-11-14 13:32

举报

1个回答
xieyuanfu 回答时间:2012-11-15 13:07:59

RE:time3输出PWM问题

你最好用调试的方法 最能够 看出问题 ,
你看看 你吧IO 拉低的时候 你的程序 、
有没有进入
else
            {
           TIM_Cmd(TIM3, DISABLE);
         }
这个部分
还有  你可以设置PB6为上拉的模式 试试看

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版