MSP430F149学习随笔(一)

本文介绍了MSP430F149单片机中的延时函数,讲解了__delay_cycles()函数的工作原理,并探讨了系统时钟的构成,包括LFXT1CLK、XT2CLK和DCOCLK三个时钟源,以及它们如何生成ACLK、MCLK和SMCLK三个时钟信号。同时,提到了延时函数的精度和系统时钟分频设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.延时函数

#define CPU_F ((double)8000000)
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

其中,__delay_cycles((long)(CPU_F*(double)x/1000.0))并不是真正的函数, 只是提供编译器内联展开,该函数并不支持变量参数, 其参数只能是常数。
在头文件intrinsics.h中可以找到如下定义:

  /* Insert a delay with a specific number of cycles. */
  __intrinsic void __delay_cycles(unsigned long __cycles);

intrinsic在英文中是内在的、本质的意思,是MSP430的编译码,能够被MSP430的内核直接识别。
延时函数的原理:
当系统主时钟频率CPU_F为8MHz时:
频率 f = 8MHz = 8,000,000Hz
机器周期 Tm = 1/f = 1/8MHz = 1/8us
也就是说,一个机器周期(nop)的时长是1/8us,所以延时1us即8*Tm,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值