msp430 IO实验报告

更新时间:2023-03-08 06:21:06 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Msp430单片机第一次实验报告

1. IO实验——LED跑马灯

实验目的:本实验作为学习入门实验,介绍了如何操作MSP430的IO口。实验控制开

发版上的三个LED灯延时闪烁。本实验采用三种方法,第一种是直接找到相关寄存器的地址,然后向其写入值。这种方法与平台无关。介绍这种方法只是使我们的理解更为透彻;第二种方法采用传统的单片机编程模式,调用msp430f6638.h包含芯片相关的头文件;第三种方法采样调用TI driverlib库的函数。通过三种方法,我们可以对比C语言编程效率。

1.1 实验原理

开发板上的3个LED灯和IO口的对应关系如下:

LED_YELLOW——P4.1 LED_GREEN——P4.2 LED_RED——P4.3

从MSP430F6638 的芯片手册中找到,与P4 端口相关的寄存器地址信息:

如表1-1 所示,P4 端口的基地址为 0x0220,要完成该实验,只需要设置两个相关寄存

器。P4OUT 和P4DIR。P4DIR 为方向寄存器,P4OUT 为数据输出寄存器。从图一可以知道,P4OUT 和P4DIR 的偏移地址分别为0x03 和0x05。

这两个寄存器的地址我们采用“基地址+偏移地址”的方式来表示。 #define P4DIR (*((volatile unsigned char*)(P3P4_BASE_Address + 0x05))) #define P4OUT (*((volatile unsigned char*)(P3P4_BASE_Address + 0x03)))

1.2 实验步骤

(1) 将PC 和板载仿真器通过USB 线相连;

(2) 打开CCS 集成开发工具,选择Project->Import Existing CCS Eclipse Project,导入 MSP430F6638_DemoV2.0\\1.LED\\MSP430F6638_LED01 或者 MSP430F6638_DemoV2.0\\1.LED\\MSP430F6638_LED02 或者 MSP430F6638_DemoV2.0\\1.LED\\MSP430F6638_LED03 工程; (3) 选择

对该工程进行编译链接,生成.out 文件。然后选择

,将程序下载

到实验板中。程序下载完毕之后,可以选择全速运行程序,也可以选择

单步调试程序,选择F3 查看具体函数。也可以程序下载之后,按下,

软件界面恢复到原编辑程序的画面。再按下实验板的复位键,运行程序。(调试方式下的全速运行和直接上电运行程序在时序有少许差别,建议上电运行程序)。

1.3 实验现象

开发板上3 个LED 定时翻转,实现闪烁的效果。

1.4 关键代码分析

实验1:

#define P3P4_BASE_Address 0x0220

#define BIT1 (0x0002) #define BIT2 (0x0004) #define BIT3 (0x0008)

#define P4DIR (*((volatile unsigned char*)(P3P4_BASE_Address + 0x05))) #define P4OUT (*((volatile unsigned char*)(P3P4_BASE_Address + 0x03)))

void main(void) {

volatile unsigned int i;

volatile unsigned int count=0;

P4DIR |= BIT1 + BIT2 + BIT3; // P4.1,P4.2,P4.3 set as output

while(1) // continuous loop

{

P4OUT ^= BIT1 + BIT2 + BIT3; // XOR P4.1,P4.2,P4.3 for(i=50000;i>0;i--); // Delay } }

实验2:

#include void main(void) {

volatile unsigned int i;

volatile unsigned int count=0;

WDTCTL = WDTPW+WDTHOLD; // Stop WDT

P4DIR |= BIT1 + BIT2 + BIT3; // P4.1,P4.2,P4.3 set as output

while(1) // continuous loop {

P4OUT ^= BIT1 + BIT2 + BIT3; // XOR P4.1,P4.2,P4.3 for(i=20000;i>0;i--); // Delay } }

实验三:

#include \

#include \ #include \

void main (void) {

volatile unsigned int i;

WDT_hold(__MSP430_BASEADDRESS_WDT_A__);//Stop WDT GPIO_setAsOutputPin(__MSP430_BASEADDRESS_PORT4_R__, GPIO_PORT_P4,

GPIO_PIN1 + GPIO_PIN2 + GPIO_PIN3 );//P4.x output while(1) {

for(i=20000;i>0;i--); // Delay GPIO_setOutputLowOnPin(

__MSP430_BASEADDRESS_PORT4_R__, GPIO_PORT_P4,

GPIO_PIN1 + GPIO_PIN2 + GPIO_PIN3 );

for(i=20000;i>0;i--); // Delay GPIO_setOutputHighOnPin(

__MSP430_BASEADDRESS_PORT4_R__, GPIO_PORT_P4,

GPIO_PIN1 + GPIO_PIN2 + GPIO_PIN3 );//Set all P4 pins HI

}

// //Enter LPM4 w/interrupts enabled // __bis_SR_register(LPM4_bits + GIE); //

// //For debugger // __no_operation(); }

1.5 思考题

(1) MSP430 的IO 口都具备哪些功能?

答:GPIO是MCU与外界交互的重要途径,它具有如下的特性:1.可以独立控制每个GPIO口的方向(输入/输出模式)2.可以独立设置每个GPIO的输出状态(高/低电平);3.所有GPIO口在复位后都有个默认方向(或输入输出)。GPIO接口类型丰富,P1和P2具有输入输出、中断和外部模块功能,这些功能可以通过他们各自9个控制寄存器的设置来实现。 (2) 与IO 口相关的寄存器有哪些? 答:MSP430各种端口有大量的控制寄存器供用户操作。最大限度提供了输入/输出的灵活性。方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。

功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。 驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。

中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。

2. IO实验--按键输入与中断 2.1 实验介绍

本实验通过中断的方式演示了按键的操作。与查询方式相比,中断按键具有响应速度 快,占用MCU 资源少的优点。

2.2 实验目的

(1) 熟悉CCS 开发环境的使用; (2) 了解MSP430 的中断系统; (3) 掌握MSP430 的中断编程方法。

2.3 实验原理

开发板上的按键和MCU 的IO 口对应关系如下: P2.6---KEY1 P2.7---KEY2

开发板上三个LED 灯和MCU 的IO 口对应关系如下:

与查询按键方式相比,中断方式用到了两个新的寄存器:PxIE 和PxIFG。 PxIE---中断使能寄存器 PxIFG---中断标志寄存器 中断函数的写法:

在MSP430 中,用扩展关键字来__interrupt 来表明该函数为中断函数。 __interrupt void port_2(void);

语法:interrupt void 函数名()或者Interrupt【中断向量】void 函数名() 参数:中断函数没有参数。中断函数需要指定中断向量。 返回:中断返回一般是void,没有返回值。

2.4 实验步骤

(1) 将PC 和板载仿真器通过USB 线相连;

(2) 打开CCS 集成开发工具,选择Project->Import Existing CCS Eclipse Project,导入MSP430F6638_DemoV2.0\\2.Key_interrupt\\MSP430F6638_Key_interrupt 文件夹中的 工程; (3) 选择

对该工程进行编译链接,生成.out 文件。然后选择

,将程序下载

到实验板中。程序下载完毕之后,可以选择全速运行程序,也可以选择

本文来源:https://www.bwwdw.com/article/nm1.html

Top