最近在学习MSP430F149,考虑到实用简便性,急需精确的软件延时程序。
在此附上IAR for AVR 的软件精确延时程序
#ifndef __delay_h
#define __delay_h
#include <intrinsics.h>
#define XTAL 11.0592 //可定义为你所用的晶振频率(单位Mhz)
#define delay_us(x) __delay_cycles ( (unsigned long)(x * XTAL) )
#define delay_ms(x) __delay_cycles ( (unsigned long)(x * XTAL*1000) )
#define delay_s(x) __delay_cycles ( (unsigned long)(x * XTAL*1000000) )
#endif
但是IAR for MSP430内没有 intrinsics.h这个文件,不能用__delay_cycles()这个指令。。。。
希望有解决办法的大牛们帮个忙!!
为何会没有intrinsic.h文件呢?这还是不是430呀?
回复 楼主 aida66 的帖子
我的f2274也有这个问题
我感觉实现起来不太现实,因为cpu运行的时候可以有好几个时钟选择,这要看你具体选择哪一个时钟了,计算出你想要的时间,再去用这个延时函数,个人感觉还是用定时器比较好,选一个比较容易分频的时钟,稍微计算下就好,还有就是在cpu启动的时候默认是dco,这个内部晶振频率是一个范围,没有外部晶振来的精确,受温度电压影响较大(资料写的),很不好控制。
回复 楼主 aida66 的帖子
LZ,你好
IAR for MSP430内没有 intrinsics.h这个文件,一般IAR是自带的,你可以在I\AR Systems\Embedded Workbench 6.0 Evaluation\430\inc
下查找下。
430有多个时钟信号,这个延时函数用的是MCLK信号~