今天看示例程序中出现了__delay_cycles()这个函数,在查找msp430x54x.h这个头文件的时候,发现这个头文件中没有该函数的声明,原来这个函数已经在IAR这个编译器中集成,这里总结一下__delay_cycles();这个函数的具体用法
第一步,复制代码:
#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))
第二步:修改CPU_F 语句中的double8000000 改成MSP430 CPU的主频率,即是CPU的MCLK
这里是使用的范例
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个时钟周期.
示例代码:修改昨天的程序,使之能够以6毫秒闪烁
#include#include"for_5438_wjx.c"//头文件
#define CPU_F ((double)8000000)//8M的晶振
#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))
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;//关闭看门狗
put_P5DIR_BIT4(1); // 主电源 P5.4
put_P5OUT_BIT4(1); //打开外设电源
put_P9SEL_BIT0(0);//设置P9.0为普通I/O
put_P9DIR_BIT0(1);//设置P9.0为输出
put_P7SEL_BIT3(0);//开发板上7.3口是lcd的电源,设置P7.3为普通I/O
put_P7DIR_BIT3(1);//设置P7.3为输出
put_P7OUT_BIT3(0);//给lcd供电
while(1)
{
put_P9OUT_BIT0(0);//点亮led数码管
delay_ms(6);
put_P9OUT_BIT0(1);//点亮led数码管
delay_ms(6);
}
}
关键字:MSP430F5438 内部延时函数 编译器
引用地址:
MSP430F5438内部延时函数的用法
推荐阅读最新更新时间:2024-11-05 11:33
51单片机中的数据类型解析
数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。数据类型包括原始类型、多元组、记录单元、代数数据类型、抽象数据类型、参考类型以及函数类型。本文主要以51单片机中的数据类型为中心而展开的话题。 在keil C51或者iar for c8051编译器下: int 占两个字节 范围:-32768~+32767 long占四个字节 范围:-2147483648~+2147483647 float占四个字节 范围:3.40E+38 ~ +3.40E+38 double占8个字节 范围:-1.79E+308 ~ +1.79E+308 在标准C语言中,存在着如下六种基本数据类型: 1、
[单片机]
C语言中auto register static const volatile 区别
1)auto 这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 (2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。 (3)static 常见的两种用途: 1 统计函数被调用的次数; 2 减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存储类型。在一些含有较多的变量并且被经常调用的函数中,可以将一些数组声明为static类型,以减少建立或者初始化这些变量的开销.
[单片机]
实验五--中断系统
一。平台 系统:ubuntu12.04 开发板:jz2440 编译器:gcc 二。中断简略 大概除了FPGA这种并行的cpu才不需要中断,像51,AVR,arm这类串行的芯片中断是他们不被淘汰的利器。没有中断,他们不可能得到这么广泛的应用。 arm中断和51的类似,无非就是设置相关寄存器、中断开关,中断源,中断分辨之类的东西;但是注意,arm的中断只是7个模式下的一个,此外,中断还有普通中断和快速中断之分。 而快速中断不需要进行中断的分辨,因为每次最多只有一个被设置为快速中断。 这里看中断源分为两部分。一个是with sub-register,另一个是without,有何区别?试想下,串口会有几
[单片机]
PIC单片机入门教程(三)—— 安装编译器(MPLAB XC Compilers)
1、下载编译器(MPLAB XC Compilers) XC8、XC16和XC32对应8位、16位和32位PIC单片机,按实际使用的单片机选择下载最新版本即可。 截至2018-06-10,编译器最新版情况:XC8——v1.45,XC16——v1.34,XC32——v2.10。 官网链接:http://www.microchip.com/mplab/compilers 本教程以PIC12F675单片机为例,选择下载XC8——v1.45 2、安装编译器 2.1 打开“xc8-v1.45-full-install-windows-installer.exe”- “Next” 2.2 “I accept th
[单片机]
DSP编程技巧之5---揭开编译器神秘面纱之调试与路径选项
在程序的编写与测试中,调试功能是非常重要的,很多时候我们需要一步步的调试与观察才能找到一些隐藏很深的bug,所以要对 编译器 的调试选项有一些了解,下面我们首先看一下 编译器 的调试选项都有哪些。 表1 编译器 的调试选项 选项 别名 优化的效果 --symdebug:dwarf -g -g 是默认选项,在缺省情况下,大多数程序和库都是带调试符号( gcc 参数 -g )编译的。当调试一个带调试符号的程序时,调试器不仅能给出内存地址,还能给出函数和变量的名字。产生符号调试信息并不会影响程序的优化效果。 注: DWARF 是一种很复杂的二进制文件格式,它和和
[嵌入式]
Keil5.15使用GCC编译器编译STM32工程
我们使用Keil一般使用ARMCC编译MCU工程代码.其实,Keil也是支持内嵌GCC编译器的.我们可以使用GCC来编译我们的工程代码. 一、下载GCC编译器 GCC编译器下载地址 二、安装GCC 我们可以把GCC解压到keil的安装目录下面.如下图 三、配置Keil使用GCC编译器 1、配置CC编译规则,Misc Controls 填写 -mcpu=cortex-m4 -mthumb -fdata-sections -ffunction-sections 2、Assembler中规则,Misc Controls 填写 -mcpu=cortex-m4 -mthumb 3、Linker中填写,Mi
[单片机]
MSP430F5438 I2C学习笔记——AT24C02
0.前言 对于大多数单片机来说,I2C成了一个老大难问题。从51时代开始,软件模拟I2C成了主流,甚至到ARMCortex M3大行其道的今天,软件模拟I2C依然是使用最广的方法。虽然软件模拟可以解决所有的问题,但是总感觉没有充分发挥MCU内部的硬件资源。查阅了所有关于MSP430F5系列的图书,没有关于硬件I2C的应用代码,自己通过调试摸索,把经验总结之后和大家分享,希望大家喜欢。同时,I2C的使用可以分为等待法和中断法,从理解的角度来说等待法思路清晰易于上手,从功耗的角度出发,中断法可以灵活的进入低功耗模式,但是不易理解。本文先从等待法入手。 MSP430F5系列的硬件I2C使用大致会有以下问题: 【I2C地址设定】一
[单片机]
arm-linux-gcc 常用参数讲解 gcc编译器使用方法
我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为 arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。 在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段: 1. 预处理(Pre-Processing) 2. 编译(Compiling) 3. 汇编(Assembling) 4. 链接(Linking) Linux程序员可以根据自己的需要让 GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为 今后的调试做好准备。和其它常用的编译器一样,GCC也提供了
[单片机]