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,
关于延时函数的的精确延时摘自:
《[MSP430] 对MSP430单片机__delay_cycles精确延时的说明及改正 》
https://www.cnblogs.com/memset/p/msp430_delay_cycles.html
2.系统时钟
MSP430F149的基本时钟模块包含3个时钟源:
LFXT1CLK:低频/高频时钟源。常用的频率为:32.768kHz。
XT2CLK:高频时钟源。常用频率为:8MHz。
DCOCLK:数字可控制的RC振荡器。其频率可以通过DCOCTL寄存器来设定,通过设定DCOCTL中的高三位(COOx),BCSCTL1基本时钟控制寄存器低四位(RSELx)可以控制DCO振荡器产生100k~20M的时钟频率。
在这三个时钟源的独立工作或相互协调配合下提供了3个时钟信号输出:
ACLK:辅助时钟信号。ACLK是LFXT1CLK信号由1/2/4/8分频器分频后所得到的。由BCSCTL1寄存器设置DIVAx位来决定分频因子。ACLK可用于提供CPU外围功能模块做时钟信号使用。
MCLK:主时钟信号。可以由LFXT1CLK、XT2CLK或DCOCLK信号由1/2/4/8分频器分频后得到。MCLK主要用于MCU和相关系统模块做时钟使用。
SMCLK:子系统时钟。可以由LFXT1CLK、XT2CLK或DCOCLK信号由1/2/4/8分频器分频后得到。SMCLK可用于提供CPU外围功能模块做时钟信号使用。
上一篇:msp430f149单片机串口C程序
下一篇:Launchpad msp430 PWM实验
推荐阅读最新更新时间:2024-11-13 21:23
设计资源 培训 开发板 精华推荐
- 基于 L6986 的 STEVAL-ISA156V1、38V、2A 同步降压开关稳压器评估板
- MIC2005A-1Y固定可调限流配电开关典型应用
- 使用 Alpha and Omega Semiconductor 的 AOZ1094DI 的参考设计
- AM2DM-1205DH60-NZ ±5 Vout、2W 双路输出 DC-DC 转换器的典型应用
- 使用 Analog Devices 的 LTC699 的参考设计
- STM32 144pin adaptive dev board
- SiP2802低功耗电流模式控制器典型应用电路
- AD2700 10伏精密基准的典型应用电路
- 使用 NXP Semiconductors 的 NCX2200 的参考设计
- LT6656AIS6-2.048、2.048V 低功率 ADC 电压基准的典型应用