搜索
bottom↓
回复: 5

为什么STM32F407ZE的PA8、9、10、11配置成TIM1没有输出?

[复制链接]

出0入0汤圆

发表于 2018-8-16 16:51:28 | 显示全部楼层 |阅读模式
如题:为什么STM32F407ZE的PA8、9、10、11配置成TIM1没有输出???请高手指点!谢谢!!!
程序如下:
void TIM_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA, ENABLE);
       
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_TIM1);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_TIM1);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_TIM1);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_TIM1);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
}

/*·ÖƵºÍÖÜÆÚ¼ÆË㹫ʽ:
  Prescaler = (TIMxCLK / TIMx counter clock) - 1;
  Period = (TIMx counter clock / TIM3 output clock) - 1
  TIMx counter clockΪÄãËùÐèÒªµÄTXMµÄ¶¨Ê±Æ÷ʱÖÓ
  */
void PWM_OUT(void)
{
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
        TIM_OCInitTypeDef TIM_OCInitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
        TIM_DeInit(TIM1);

        TIM_TimeBaseStructure.TIM_Period = 699; //×Ô¶¯×°ÔØÖµ
        TIM_TimeBaseStructure.TIM_Prescaler = 3;//¶¨Ê±Æ÷·ÖƵ
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;//ʱÖÓ·ÖƵ
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//ÏòÉϼÆʱ
        TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

        TIM_OCStructInit(&TIM_OCInitStructure);
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_Pulse = 350;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//TIM_OCPolarity_High;
        TIM_OC1Init(TIM1, &TIM_OCInitStructure);
        TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
       
        TIM_OCStructInit(&TIM_OCInitStructure);
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_Pulse = 350;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//TIM_OCPolarity_High;
        TIM_OC2Init(TIM1, &TIM_OCInitStructure);
        TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);
       
        TIM_OCStructInit(&TIM_OCInitStructure);
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_Pulse = 350;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//TIM_OCPolarity_High;
        TIM_OC3Init(TIM1, &TIM_OCInitStructure);
        TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);
       
        TIM_OCStructInit(&TIM_OCInitStructure);
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_Pulse = 350;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//TIM_OCPolarity_High;
        TIM_OC4Init(TIM1, &TIM_OCInitStructure);
        TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);

        TIM_ARRPreloadConfig(TIM1, ENABLE);
        TIM_Cmd(TIM1, ENABLE);
}


void Sys_HSEClk_Init(void)
{
        RCC_DeInit();   
  RCC_HSEConfig(RCC_HSE_ON);
  if(RCC_WaitForHSEStartUp() == SUCCESS)
  {
     RCC_PLLCmd(DISABLE);
     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
     RCC_HCLKConfig(RCC_SYSCLK_Div1);
     RCC_PCLK1Config(RCC_HCLK_Div4);
     RCC_PCLK2Config(RCC_HCLK_Div2);
     RCC_PLLConfig(RCC_PLLSource_HSE,25,336,2,7);
     RCC_PLLCmd(ENABLE);
     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  
  }
        while(RCC_GetSYSCLKSource() != 0x08);
}

void GPIO_Conf(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC, ENABLE);
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
  GPIO_Init(GPIOA, &GPIO_InitStructure);//A12
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
  GPIO_Init(GPIOC, &GPIO_InitStructure);//C10
       
}


int main(void)
{       
        Sys_HSEClk_Init();
        GPIO_Conf();
        TIM_Config();
        PWM_OUT();
       
//        GPIO_ResetBits(GPIOA,GPIO_Pin_12);
//        GPIO_ResetBits(GPIOC,GPIO_Pin_10);
       
        while(1)
        {
        }//while end */

}//main end

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入24汤圆

发表于 2018-8-16 16:54:10 | 显示全部楼层
因为你少了一个函数啊
TIM_CtrlPWMOutputs(TIM1, ENABLE);
高级定时器多了一些东西,需要单独配置才行

出0入0汤圆

 楼主| 发表于 2018-8-16 17:02:27 | 显示全部楼层
20061002838 发表于 2018-8-16 16:54
因为你少了一个函数啊
TIM_CtrlPWMOutputs(TIM1, ENABLE);
高级定时器多了一些东西,需要单独配置才行 ...

谢了高手!结贴了,没想到这么快!!!

出0入0汤圆

发表于 2018-8-16 17:09:54 | 显示全部楼层

出0入0汤圆

发表于 2018-8-24 11:57:57 来自手机 | 显示全部楼层
我也没想到这么快结贴了

出0入0汤圆

发表于 2019-7-29 11:13:53 | 显示全部楼层
也帮我解决问题了,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-3 21:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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