历史上的今天
返回首页

历史上的今天

今天是:2025年02月04日(星期二)

2021年02月04日 | 关于MSP430的精准延时__delay_cycles的分析

2021-02-04 来源:eefocus

首先我们先看以下代码:


#define CPU_F                            ((double)8000000) //CPU_F代表系统选用的主时钟大小,单位Hz   

#define delay_us(x)                      __delay_cycles((long)(CPU_F*(double)x/1000000.0)) 

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


分析上述代码:


一、8000000为MSP430板载的外部高速晶振提供的8MHz的主时钟频率,单位为Hz


二、__delay_cycles是编译器提供的一个内联的精准延时函数,该函数的原型是:


__intrinsic void __delay_cycles(unsigned long __cycles);   //__cycles是CPU运行周期的个数,即时钟/机器周期的个数

分析


1、在MSP430单片机中,一个时钟周期 = MCLK晶振的倒数

例如:如果MCLK是8MHz,则一个时钟周期为1/8us


2、MSP430的时钟模块主要包括:

ACLK --> 辅助时钟

MCLK --> 主时钟

SMCLK --> 子系统时钟


3、时钟的来源:

ACLK --> 是LFXT1CLK信号经1/2/4/8分频后得到的,主要用作低速外围的时钟

MCLK --> 是LFXT1CLK,XT2CLK, DCOCLK的三者之一决定,由软件选择,然后经1/2/4/8分频后得到,主要用于CPU和系统

SMCLK --> 可由LFXT1CLK和DCOCLK ,或者XT2CLK和DCOCLK决定,然后经1/2/4/8分频后得到,主要用于高速外围模块


4、注意:

上文陈述的代码中,8000000是已经由系统选定的MCLK时钟(8MHz),不可以直接通过改变它的值来实现对不同主频系统参数的统一,即它的值受主时钟频率的改变而改变,而非MCLK频率受它的值的改变而改变。


举个例子:

当系统时钟为1MHz时,改为 -->   #define CPU_F ((double)1000000)


推荐阅读

史海拾趣

Crameda Intersys公司的发展小趣事

随着公司业务的不断发展,Crameda Intersys公司开始寻求与行业内其他企业的战略合作。公司通过与多家知名企业建立紧密的合作关系,共同研发和推广新技术产品,成功将业务扩展到全球市场。这些战略合作不仅拓宽了公司的市场渠道,也提升了公司的品牌影响力和市场竞争力。同时,通过与合作伙伴的深入交流和学习,公司不断吸收新的技术和理念,为自身的创新和发展注入了新的活力。

GuangDong Province MengCo Semiconductor Co., Ltd公司的发展小趣事
合理的电路布局可以减小电磁干扰和信号衰减,提高电路的稳定性和可靠性。
Ampire Co Ltd公司的发展小趣事
对于易发热的元器件(如制动电阻),应加强散热设计,确保其在工作过程中能够正常散热。
Handok Co Ltd公司的发展小趣事
如过流、过压等报警,可能与制动电路的控制逻辑或硬件故障有关。
High Voltage Power Solutions Inc公司的发展小趣事

艾迈斯(AMASS)公司创立之初,便专注于智能设备动力连接器领域。面对市场的激烈竞争和技术的不断更新,公司创始人凭借深厚的行业经验和前瞻性的眼光,带领团队攻克了一个又一个技术难关。他们深入市场调研,精准把握消费者需求,成功推出了一系列具有竞争力的连接器产品。这些产品不仅性能稳定、质量可靠,而且具有极高的性价比,迅速在市场上赢得了良好的口碑。

CTC Coils Ltd公司的发展小趣事

CTC Coils Ltd公司早期以生产传统电感线圈为主,随着电子技术的飞速发展,公司意识到必须进行技术升级。于是,公司投入大量研发资源,成功开发出一种新型高效能电感线圈,该产品在性能上大幅提升,同时降低了能耗。这一技术突破使CTC Coils Ltd的产品在市场上脱颖而出,公司迅速赢得了大量客户,并扩大了生产规模。

问答坊 | AI 解惑

寻开关电源设计者

开关电源设计,要求不高, 有一定的模拟和数字电子的设计经验, 有开关电源设计经验,有自主设计或辅助设计的能力。 工作地点:成都 要求全职 联系邮箱:hswqs@yeah.net 联系人:文先生…

查看全部问答>

2440官方bsp的DM9000A驱动问题!

最近移植bsp发现wince5.0的DM9000A驱动有问题!现在在这个和大家讨论讨论! 首先dm9000大部分驱动是官方的,下面就是一些细节的研究、我首先讲讲我的平台情况。 1.SD0~SD15  --------   LDATA0~LDATA15  数据线和 ...…

查看全部问答>

uboot和kernel共享内存区域问题!

各位高人! 我现在遇到这样一个问题!lcd驱动在uboot和kernel中使用了不同的buffer,从而导致了在进入kernel中lcd驱动时出现 lcd屏有个短暂的颜色渐变。为了消除这个bug。就想让uboot和kernel使用同一块内存。 1)下面是我的做法:    & ...…

查看全部问答>

Vxworks下驱动移植问题

linux下的 驱动程序 要移植到Vxworks下一般都需要做什么工作啊?一般的步骤是什么?我是第一次做驱动移植,希望大家回答的能够细致一些。…

查看全部问答>

2812利用sci与pc连接,求教!!

//########################################################################### // // FILE:    Example_281xSci_FFDLB.c // // TITLE:   DSP281x Device SCI FIFO Digital Loop Back Test. // // ASSUMPTIONS: // ...…

查看全部问答>

430f5438串口

#include \"msp430x54x.h\" #include #include #include #include \"PIN_DEF.H\" #define  FLL_FACTOR     749                    &nbs ...…

查看全部问答>

TI经典电源芯片有哪些

小弟不才,刚入门电源,想知道TI有哪些经典的电源芯片…

查看全部问答>

TPS5430

哪位大神,有木有TPS5430的中文资料啊,709915352@qq.com,发我一份啊!!!!…

查看全部问答>

【解密08】基于51单片机的无线遥控坦克DIY 之 图片欣赏

       前面介绍了很多专业内容,估计大家看的有些不耐烦了,今天换换口味,欣赏一下我们拍摄的照片,之前一直有朋友反映视频看的不是很清楚,很多细节没有看到,今天给大家上几张图,我们也正在翻录新的视频,希望能做的更好 ...…

查看全部问答>

关于XDATA类型变量的存储

各位好,变量定义如下: char xdata ziku[] = {...} _at_ 0x0020; unsigned xdata int shuzu[] = {...}; unsigned xdata long ack; 求教:下面那两个未指定固定位置的xdata类型变量在编译的时候是否会和上面被指定固定位置的变量重叠呢?谢谢…

查看全部问答>