打印

关于STM32指令执行时间问题

[复制链接]
6531|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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个时钟周期,我估计的

使用特权

评论回复
5
guiyizhiyun| | 2014-3-11 16:14 | 只看该作者
这个是不是和流水线有关系啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝