系统时钟sysclk已设置为72MHz,做了一个试验,在程序中有以下的代码
GPIOB ->BSRR = GPIO_Pin_14; //PB14 = 1
GPIOB ->BRR = GPIO_Pin_14; //PB14 = 0
用示波器测量PB14,发现高电平持续时间为8个sysclk,然后将代码改成如下
GPIOB ->BSRR = GPIO_Pin_14;
__disable_irq();
__disable_irq();
__disable_irq();
__disable_irq();
__enable_irq();
GPIOB ->BRR = GPIO_Pin_14;
中间增加了5条单周期的16位指令,再测量PB14,
发现高电平持续时间变成18个sysclk,增加了10个sysclk,这是为何呢?哪位高人能解答下吗? |