关于STM32指令执行时间问题

[复制链接]
 楼主| chinhj 发表于 2011-5-12 23:49 | 显示全部楼层 |阅读模式
系统时钟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,这是为何呢?哪位高人能解答下吗?
香水城 发表于 2011-5-13 13:51 | 显示全部楼层
先说说你的分析和结论,然后别人才好评判哪里出了问题。
 楼主| chinhj 发表于 2011-5-13 18:46 | 显示全部楼层
按我的理解,增加了5条单周期指令,高电平持续时间应该只增加5个sysclk才对,但实际却增加了10个,岂不是执行一条单周期指令要2个时钟周期?
mentlely 发表于 2011-5-19 22:51 | 显示全部楼层
指令从FLASH读出来一般都要2个时钟周期,我估计的
guiyizhiyun 发表于 2014-3-11 16:14 | 显示全部楼层
这个是不是和流水线有关系啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部