ccs10.0开发tms320f2812时需要用到延时.这里提供一个写法.
由于tms320f2812的晶振是35MHZ,经过倍频后是150MHZ,所以也就是150M时钟振荡就是一秒钟.那么一次震荡也就是一个时钟周期就是1/(150*10的6次幂)最后得到的结果是0.xxxx秒,那我换算下就是约等于6.67ns纳秒.
这里的进制关系是:一秒=10的9次幂纳秒.
因为asm(" RPT #1 ||NOP");延时是6.67ns,其中的#1就是一个时钟周期,也就是cpu运行一个指令的时间.也就是我们上边提到的6.67纳秒了.
在下面的延时中循环了1000次,所以是6.67us.注意代码rpt前边是有个空格的哦.否则放到编译器中会报错的.
void delay(int k1)// 延时6.67us
{
int k=0;
for( k=0;k
{
asm(" RPT #1 ||NOP");//1个周期.因为是150mhz,所以一个周期是6.67ns.
}
}
下图是这是ccs10.0中的for循环语句进行的延时操作:

这是ccs10.0中的for循环语句进行的延时操作
本文介绍了在CCS10.0环境下,针对TMS320F2812微控制器如何通过ASM指令实现精确延时。通过计算晶振频率和时钟周期,得出每个延时周期为6.67ns。示例代码展示了使用RPT指令和NOP指令进行延时,通过循环次数调整延时微秒级别。这种方法对于实时系统的定时任务非常有用。
3464

被折叠的 条评论
为什么被折叠?



