历史上的今天
返回首页

历史上的今天

今天是:2025年02月05日(星期三)

正在发生

2021年02月05日 | IAR(MSP430)中的精确延时函数

2021-02-05 来源:eefocus

在 IAR 软件430的编译器里面我们可以利用它内部的延时子程序来实现我们想要的高精度软件延时,方法如下:

 

具体如下【引用别人的,这个延时函数很高】:

注意: __delay_cycles(x),x必须是常量或则是常量表达式,如果是变量则编译报错!

IAR FOR AVR中精确软件延时方法

在用单片机的时候常常会用到延时函数,430也不例外,常见的形式有:
void delay(unsigned int ms)
{
unsigned int i,j;

for( i=0;i
for(j=0;j<1141;j++); //8MHz晶振时
}

复制代码//以上程序段在要求延时精度不高的场合可以用。

但在 IAR 软件430的编译器里面我们可以利用它内部的延时子程序来实现我们想要的高精度软件延时,方法如下:

(1):将以下这段代码复制到你的.C源文件中。

#define CPU_F ((double)8000000)
#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))

复制代码(2):修改

在 #define CPU_F ((double)8000000) 语句里 8000000 修改成你当前MSP430 CPU的主频频率,即CPU的MCLK。

单位为HZ。本例中的8000000为MCLK=8MHZ 的意思。

(3):使用范例

delay_us(1); //1 微秒的延时

delay_ms(1); //1 毫秒的延时

delay_us(3.5); //延时3.5微秒

delay_ms(3.5); //延时3.5毫秒

delay_ms(1000); //延时1秒




-------------------------------------------------------------------------------------


原因:

__delay_cycles()是编译系统"涵数",IAR编译时会替换成相应的循环代码.

看图片,要求delay 100指令(时钟)周期,编译后刚好100周期.



  1. #define _delay_us(A)

  2.   __delay_cycles( (uint32) ( (double)(F_CPU) *((A)/1000000.0) + 0.5))


  3. #define _delay_ms(A)

  4.   __delay_cycles( (uint32) ( (double)(F_CPU)*((A)/1000.0) + 0.5))


  5. #define _delay_s(A)

  6.   __delay_cycles( (uint32) ( (double)(F_CPU)*((A)/1.0) + 0.5))


推荐阅读

史海拾趣

德力康(DLK)公司的发展小趣事

德力康(DLK)公司自1985年成立以来,最初专注于电视机用CRT插座的生产。凭借其卓越的产品质量和稳定的性能,逐渐在市场中树立了良好的口碑。随着电子行业的快速发展,DLK公司敏锐地捕捉到了连接器市场的巨大潜力,并开始逐步扩大产品线,涵盖D-SUB、DVI、HDMI、USB等多种连接器类型。通过不断的技术创新和市场拓展,DLK逐渐成为了国内连接器行业的重要供应商之一。

Avasem公司的发展小趣事

Avasem公司深知人才是企业发展的核心驱动力。因此,公司一直致力于构建良好的人才培养机制和企业文化。Avasem公司注重员工的个人成长和职业发展,提供丰富的培训和学习机会,鼓励员工不断学习和创新。同时,公司还倡导开放、包容和协作的企业文化,为员工创造一个积极、健康的工作环境。这种以人为本的管理理念不仅吸引了大量优秀人才加入公司,还激发了员工的创新精神和团队凝聚力,为公司的持续发展提供了有力保障。

台湾固锝(GD)公司的发展小趣事
接入输入信号后,观察输出信号的变化情况,调整增益控制参数以观察其对输出信号的影响。
Conflux公司的发展小趣事

Conflux公司自创立之初,便专注于区块链技术的研发与应用。在电子支付领域,公司团队成功研发出了一种高效、安全的分布式账本技术,这一技术突破迅速吸引了业界的关注。随后,Conflux与多家金融机构合作,推出了基于区块链技术的电子支付解决方案,不仅提高了交易速度,还大大降低了交易成本。这一系列的创新举措使Conflux在电子支付领域崭露头角,奠定了其在行业内的领先地位。

COMPUTAR公司的发展小趣事

随着摄影和摄像技术的不断发展,市场对镜头性能的要求也越来越高。为了满足这一需求,CBC株式会社于1985年成功研制出第一款非球面高速镜头。这款镜头采用了先进的非球面设计,有效减少了像差和畸变,提高了成像质量。非球面高速镜头的诞生,不仅为CBC赢得了更多的市场份额,也为整个光学行业树立了新的技术标杆。

EasySync公司的发展小趣事

随着数字化和智能化技术的不断发展,EasySync公司也加快了数字化转型的步伐。公司引入先进的生产管理系统和智能制造设备,实现了生产过程的自动化和智能化。同时,公司还加强了对大数据和人工智能技术的研发和应用,为客户提供更加智能化、个性化的同步解决方案。

问答坊 | AI 解惑

我想去尚观培训嵌入式,寻人一起

本人打算毕业后去北京尚观培训,想寻两个人一起,可以打9折。有此意向的加qq群:57772872…

查看全部问答>

请教高手驱动自动安装问题

请教高手一个关于驱动自动安装的问题: 我的驱动程序以及inf文件利用系统的安装向导可以安装成功,但是现在我需要做一个驱动自动安装包,在插上我的usb设备的时候我的驱动可以安装成功,但是当我不插上设备的时候安装时,最后程序在调用UpdateDriv ...…

查看全部问答>

☼☼合作招募中:有基于数据采集器和无线网络系统集成经验的朋友,请进!☼☼

有基于RFID、条码和无线网络集成应用的成熟产品,比如仓储无线作业系统、MES采集系统,生产追溯系统等等,希望将产品推向市场的,请联系我,我们一起合作,最好是在深圳或者广东地区的朋友。QQ:151600588,请注明\"系统合作\"!Email:skyone_yao@163. ...…

查看全部问答>

hp笔机本备份问题

hp笔机本,windowxp 操作系统中,怎么用超级急救盘不能进行系统备份? 安装了超级急救盘 ,进入了超级急救盘 ,可总是进不了备份的界面? 那怎么备份hp笔机本操作系统呢? …

查看全部问答>

MSP-EXP430FR5739学习板编译器IAR支持吗?

我在IAR5.1里面option没有找到选项!求解答,谢谢…

查看全部问答>

新手求助!!!zigbee该怎么样入门呀?

毕业设计做基于zigbee的太阳能照明系统,但是现在完全不知道zigbee怎么入门    什么cc2430、协议、网络呀一头雾水    请教各位大大zigbee入门步骤(最好列一个顺序表如步骤一:……步骤二:……),本人只懂得单片机的C语言编 ...…

查看全部问答>

IAR环境,用C如何定义绝对地址?

项目很急,求教高手,IAR环境下,C语言怎么定义程序的起始地址,汇编是ORG指令,C该怎么写呢?…

查看全部问答>

fpga能配置出8个以上的端口吗?

fpga能配置出8个以上的串口(usart)吗? 有没有什么限制呢? 我对fpga不是很了解,所以希望大家帮帮忙。谢谢了。 [ 本帖最后由 j12211221 于 2012-11-15 14:29 编辑 ]…

查看全部问答>

MSP430F149内部资源(二)

五、定时器 定时器是MSP430应用系统中经常要用到的重要部分。 (一)、可以实现的功能有: 1、定时引起中断 2、延迟 3、提供串口比特率 4、信号产生 5、信号检测 (捕获模式下) 6、频率测量 7、脉宽测量 (二)、一般来说,MSP430所需要 ...…

查看全部问答>

launchpad + 1602a 动态显示

最近弄这个,发现网上的资料自己显示不出来,只好自己来了。 4位传输,p2.0 p2.1 接en rs 。 rw 接地。p1 高4位数据口。 动态显示。 [ 本帖最后由 sunnie 于 2013-2-8 13:29 编辑 ]…

查看全部问答>