不唯安 2023-12-15 18:14 采纳率: 62.5%
浏览 47
已结题

stm32串口与pwm初始化冲突导致串口中断函数无法运行

用的串口1,io口是PA9与PA10
pwm输出为PA0 1 6 7
查了一下复用表发现A6 A7的串口可能因为tim1的原因跟A9 A10复用了

img


注释掉相关代码后也发现是A6 A7的初始化代码与串口初始化代码冲突 但是网上搜索遇见的冲突情况都不一致 按照方法解决后也无果
故来求一份不用改变端口也能顺利初始化并运行的代码

  • 写回答

14条回答 默认 最新

  • 技术宅program 2023-12-20 14:09
    关注
    // 关闭串口时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, DISABLE);
    // 关闭串口中断
    NVIC_DisableIRQ(USART1_IRQn);
    // 初始化PWM
    TIM3_CH2_PWM_Init(500-1,72-1); //频率是2KHz
    // 重新打开串口时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
    // 重新打开串口中断
    NVIC_EnableIRQ(USART1_IRQn);
    
    
    

    /

    / 初始化PWM之后,重新配置串口的IO口
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(13条)

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 已采纳回答 12月21日
  • 创建了问题 12月15日