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

查看: 2490|回复: 1

time3输出PWM问题

[复制链接]

1

主题

8

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-11-14 13:32:58 | 显示全部楼层 |阅读模式
 
想在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); 
        
       }
回复

使用道具 举报

8

主题

206

回帖

0

蝴蝶豆

中级会员

最后登录
2019-10-23
发表于 2012-11-15 13:07:59 | 显示全部楼层

RE:time3输出PWM问题

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

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版