stm32f103内部中断无法达到所需的频率(350ns)(最低达到4us)

问题描述 投票:0回答:1

我正在尝试通过使用TIMER1产生的中断将GPIO引脚拉高和拉低来产生PWM信号,为什么我这样做是一个完全不同的故事,所以我需要每350ns产生一个中断,我计算得出预分频器和72MHz的ARR,我发现我需要一个1的预分频器和25的ARR,所以我根据这些值设置参数,现在我有25个时钟周期可以在下一次中断触发之前执行所需的操作,因此在每次中断时,指定的引脚都必须更改状态(从高到低或从低到高),我正在使用示波器查看输出信号,并且卡住了8us的输出(这意味着每4 us发生一次中断),我可以解决这个问题吗?我在哪里失败?我可能做错了什么?这是我在中断函数中所做的事情:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if ((GPIOC->ODR & GPIO_PIN_13) != 0x00u)
    {
        GPIOC-> ODR = 0x0000;
    }
    else
    {
        GPIOC-> ODR = 0x2000;
    }
  }

这里是输出信号的照片:Oscilloscope output

中断内部的代码是否可能超过25个时钟周期?如果可以的话,我该如何做?谢谢

timer interrupt stm32 pwm bluepill
1个回答
0
投票

中断中的代码是否可能超过25个时钟周期?如果可以的话,我该如何做?谢谢

© www.soinside.com 2019 - 2024. All rights reserved.