OpenEdv-开源电子网

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

STM32F103定时器互补PWM状态受串口影响,这是我配置部分代码,大神帮看看。

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-4-1
在线时间
4 小时
发表于 2016-4-1 09:16:47 | 显示全部楼层 |阅读模式
void send_gpio_2(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);//使能GPIOA及功能复用IO时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);//使能TIM2时钟
       
        GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1, ENABLE);
       
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//I/O时钟为50MHz
          GPIO_Init(GPIOA, &GPIO_InitStructure);//根据上面指定参数初始化GPIO结构体
       
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//I/O时钟为50MHz
          GPIO_Init(GPIOA, &GPIO_InitStructure);//根据上面指定参数初始化GPIO结构体
}

void pwm(uint32_t t,uint32_t w)                         /* 6000/3000/5760/2880 */
{
        TIM_TimeBaseInitTypeDef  TIM1_TimeBaseStructure;
     TIM_OCInitTypeDef  TIM1_OCInitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
TIM1_TimeBaseStructure.TIM_Period =t-1;//计数值为1000
        TIM1_TimeBaseStructure.TIM_Prescaler = 1-1;//3分频
        TIM1_TimeBaseStructure.TIM_ClockDivision = 0;//采样分频0
        TIM1_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数
        TIM_TimeBaseInit(TIM1, &TIM1_TimeBaseStructure);

TIM1_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//定时器配置为PWM1模式
       
        TIM1_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//TIM输出比较极性高
        TIM1_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_High;
       
        TIM1_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//通道1输出使能
        TIM1_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
       
        TIM1_OCInitStructure.TIM_Pulse =w;//脉宽值为200
        TIM_OC1Init(TIM1,&TIM1_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化TIM1
       
       
       
        TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); //使能TIM1在CCR1上的预装载寄存器
        TIM_ARRPreloadConfig(TIM1, ENABLE);//使能TIM2在ARR上的预装载寄存器
//          TIM_ClearITPendingBit(TIM1, TIM_IT_CC1);//预先清除所有中断位
        TIM_Cmd(TIM1, ENABLE);//使能定时器2       
TIM_CtrlPWMOutputs(TIM1, ENABLE);

}
void dwin(void)
{/*********************************************************************
                          定义结构体
        *********************************************************************/

        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        USART_ClockInitTypeDef USART_ClockInitStructure;
        /*********************************************************************
                         使能时钟
        *********************************************************************/
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
                RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
        /*********************************************************************
                          IO配置及其初始化
        *********************************************************************/
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
         GPIO_Init(GPIOA, &GPIO_InitStructure);
       
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
         GPIO_Init(GPIOA, &GPIO_InitStructure);
        /*********************************************************************
                          串口配置
        *********************************************************************/
         USART_InitStructure.USART_BaudRate = 115200;
         USART_InitStructure.USART_WordLength = USART_WordLength_8b;
         USART_InitStructure.USART_StopBits = USART_StopBits_1;
         USART_InitStructure.USART_Parity = USART_Parity_No ;
         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        /*********************************************************************

        *********************************************************************/
         USART_ClockInitStructure.USART_Clock=USART_Clock_Disable;
         USART_ClockInitStructure.USART_CPOL=USART_CPOL_Low;
         USART_ClockInitStructure.USART_CPHA=USART_CPHA_2Edge;
         USART_ClockInitStructure.USART_LastBit=USART_LastBit_Disable;
         
        /**********************初始化结构体**************************/  
         USART_ClockInit(USART2,&USART_ClockInitStructure);
         USART_Init(USART2, &USART_InitStructure);
         USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
         USART_Cmd(USART2, ENABLE);
        /**********************END**************************/
}
void NVIC_dwin_Config(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //采用组别2         

        NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;//配置串口中断
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//占先式优先级设置为0
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //副优先级设置为0
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//中断使能
        NVIC_Init(&NVIC_InitStructure);//中断初始化
}
int fputc(int ch, FILE *f)                                  /* printf重新定向 */
{
  /* Write a character to the USART */
  USART_SendData(USART2, (u8) ch);

  /* Loop until the end of transmission */
  while(!(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == SET))
  {
  }

  return ch;
}



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

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-4-1
在线时间
4 小时
 楼主| 发表于 2016-4-1 09:36:58 | 显示全部楼层
怎么没人来啊?自己顶一下
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 14:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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