历史上的今天
今天是:2024年10月29日(星期二)
2019年10月29日 | MSP430精确延时_delay_cycles
2019-10-29 来源:eefocus
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(100),就延时100个时钟周期.
只能是常数,因为编译器会重新编译为汇编代码
史海拾趣
|
我现在正在调试的系统中用到了RTL8212,是一块千兆双口物理层收发器。现在他能够正常接收数据,但是却不能发送数据,发出的数据在接收方说是错误的数据包。我是用一块FPGA来控制的,现在不知道问题出在哪里,不知道是我的FPGA时序不对还是RTL8212的 ...… 查看全部问答> |
|
目 录 第1章 UNIX操作系统概述 6 1.1 UNIX操作系统简介 6 1.2 UNIX系统组成 6 1.3 与UNIX有关的几个名词 7 第2章 UNIX常用操作 9 2.1 启动终端 9 2.2 登录 9 2.3 UNIX命令 9 2.4 注销(退出UNIX系统) 13 第3章 UNIX文件系统 ...… 查看全部问答> |
|
arm+linux平台 通过 串口发送 数据 write完以后 必须sleep()发送才能成功 否则,发送的就在中间某位产生错误码,数据长的时候,总是在中间顿一下,然后发后半部分,前半部分的最后一个字节就错掉了 这是怎么回事? 太怪了 高手帮忙分析吧 … 查看全部问答> |
|
我用stc12c5608AD自带的AD做一个AD转换的程序 具体的代码如下 void ad_cov() { P1M0=P1M0||0x20; P1M1=P1M1||0x20; //选择P1.5为开漏。(做A/D使用时选择的模式) ADC_CONTR=0xc5; //540个时钟周期转换一次;ADC_FLAG=0;ADC_START=0(设置为1 ...… 查看全部问答> |
|
自己仿着S3C2410a的开发板,根据需要自己做了一个底板(插在上面的核心板没做),画了PCB,只用了电源,串口和液晶屏(其它的没画),做好板之后又焊上器件,当把原来的核心板(系统在flash里)插在我做的板子上时,液晶可以正常开启,但是触摸时只 ...… 查看全部问答> |




