使用IAR的cyclecounter查看编写的C语句段执行的时间 疑问

使用IAR的cyclecounter查看编写的C语句段执行的时间 疑问,第1张

亲,仿真时间和实际时间不一致的,一版PC仿真比较慢的,

也就是说你秒表掐20秒,PC仿真时间还不到20秒,

建议,写一段测试代码段,段头段尾加标志(拉高拉低IO,让示波器能够捕捉),仿真计算出经过两个标志位的机器周期数,然后示波器量测这两个标志位时间(代码实际运行时间)。这样子在计算频率。

如果是用keil的话,可以按菜单上的debug进入调试模式,然后可以看到左边多了一个窗口,里面会显示当前各个寄存器、堆栈、PC指针的值,其中有一个项是sec,就是表示程序运行时间的。

想知道一条指令的执行时间,可以把PC指针指向这条指令,然后在下一条指令处设置断点,先按“reset”清零一下sec的值,再按“RUN”运行程序,从sec处就可以知道这条指令的运行时间了。

你的程序主体是循环吧

循环检测温度和显示,在检测结束之后,if 温度超过预定 就启动蜂鸣器,else关闭蜂鸣器,建议你取一个范围,否则温度变化频繁,不太好。这种方法最简单,但是也有问题,假如每次都超过预定,那每次都发出启动指令,这不合理。可以第一次超过的时候启动然后弄个标志位,下一次判断一下标志位,是不是驱动状态,如果是,跳过去,往后执行,如果不是启动状态,那么启动。这就合理了。另外也可以更改整体的程序结构

你测试温度,时间要求不太高吧 可以设个定时器,到定时器时间了 检测一次。这是在定时中断执行的,主程序里,就循环显示和判断,是否超过预定了,超过就启动蜂鸣器,方法和前面的一样。

#include <msp430x14xh>

#define CPU_F ((double)8000000)

#define delay_us(x) __delay_cycles((long)(CPU_F(double)x/10000000))

#define delay_ms(x) __delay_cycles((long)(CPU_F(double)x/10000))

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

#define LED P3OUT //LED灯接在P34、P35上

uchar key;

//

// 系统时钟初始化

//

void Clock_Init()

{

uchar i;

BCSCTL1&=~XT2OFF; //打开XT振荡器

BCSCTL2|=SELM1+SELS; //MCLK为8MHZ,SMCLK为8MHZ

do{

IFG1&=~OFIFG; //清除震荡标志

for(i=0;i<100;i++)

_NOP(); //延时等待

}

while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待

IFG1&=~OFIFG;

}

//

// MSP430内部看门狗初始化

//

void WDT_Init()

{

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

}

//

//初始化IO口子程序

//

void Port_init()

{

P1SEL = 0x00; //P1普通IO功能

P1DIR = 0xF0; //P10~P13输入模式,外部电路已接上拉电阻

P3SEL = 0x00; //P3口普通IO功能

P3DIR = 0xFF; //P3口输出模式

}

//

//主程序

//

void main(void)

{

WDT_Init(); //看门狗设置

Clock_Init(); //系统时钟设置

Port_init(); //系统初始化,设置IO口属性

delay_ms(100); //延时100ms

while(1)

{

LED=0xEF; //给不同的键赋键值,键值1,亮1个LED灯D1

//LED=0xDF; //给不同的键赋键值,键值2,亮1个LED灯D2

//LED=0xCF;

// case 4: LED=0xFF;break;//给不同的键赋键值,键值4,亮0个LED灯

}

}

1 可以通过iar软件编程控制4个灯的亮灭

2 首先需要了解每个灯的控制引脚,然后在iar软件中编写相应的控制代码,通过控制引脚的高低电平来控制灯的亮灭。

3 可以通过编写循环语句和延时语句,让4个灯依次或同时亮灭,实现不同的灯光效果。

同时,也可以通过添加传感器等外部设备,实现更多的功能。

以上就是关于使用IAR的cyclecounter查看编写的C语句段执行的时间 疑问全部的内容,包括:使用IAR的cyclecounter查看编写的C语句段执行的时间 疑问、STM32 怎么在IAR得到一条指令的执行时间、请问一下,我想在iar里面在一个工程里面调用另一工程的功能,该怎么实现呢(我用的是msp430f149)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10073448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存