简介:1.学会操作 MSP430F5438 一般端口,了解端口寄存器的组成
2.了解学习板相应端口管脚原理图。
3.利用 JTAG 口将程序烧写进入单片机中。
4.进行程序调试,当按下按钮 K1, K2 , 观察 LED1,LED2有什么变化。
1.模块原理
F5XX单片机端口引入上拉下拉电阻,通过PXREN,RXDIR,PXOUT 可以设置端口各引脚的状态,选择内部上/下拉使能,就不需要再外部接上拉电阻,选择对应的边沿触发方式就可以很方便的进出中断,其中只有 P1,P2 具有端口中断能力。P1 P2 均是多元中断,因此引入 P1IV P2IV ,各引脚中断只有访问对应 PXIV 后才可以进行自动清除中断标志位。否则就不能清除中断标志,就会反复进入中断程序,如果不访问 PXIV 可以软件清除中断标志位。
2.寄存器设置
要设置端口为上拉/下拉,需要通过设置 PXDIR,PXREN,PXOUT 来选择某端口是上拉还是下拉,具体配置如下表所示.
由上表所示,要配置上/下拉电阻必须在 I/O 口为输入状态下,上下拉电阻使能打开后,通过控制 PXOUT 来配置上拉还是下拉,以配置上拉电阻为例:
PXDIR &= ~BIT1; //输入状态
PXREN |= BIT1; //上下拉使能
PXOUT |= BIT1; //选择上拉电阻
3.硬件连接
我们在做实验之前,首先需要把我们手中的畅学MSP430F5438A单片机核心板和畅学多功能底板拿出来,以方便我们进行实验。我们这次实验的目的是为了让大家通过实验,学会如何对MSP430F5438A单片机的端口进行操作,加深我们的学习印象,尤其是对I/O端口的操作方法。
如图我们需要将连线接成如图所示的接法。K1,K2 分别和 P2.6,P2.7 连接,当按下 K1,K2 后端口电压变位低电平,因此设置 P2.6,P2.7 为内部上拉高电平,中断设置为下降沿触发中断,当按下 K1,K2 后就可以进入端口中断。LED1,LED2 分别和 P1.0 和 P1.1 连接,因此可以通过控制 P1.0 和 P1.1 来控制 LED1和 LED2 的亮灭。
4. 实验代码
首先我们把代码输进IAR中,代码如图所示,点击IAR中Debug按钮,进入C-SPY环境,点击GO,使得程序全速运行。程序运行的效果为按下按键LED指示灯点亮。IAR为用户提供了方便的头文件,能够大大地简化程序编写。对于MSP430F54x系列微处理器,一般在程序开头包含msp430F54x.h即可。
MSP430F5438A的P1和P2两组端口具有外部中断能力,通过设置相关的控制寄存器可以允许或者屏蔽其中的某一位或者某几位的中断能力。
5.程序流程图
6.注意
在日常使用MSP430系列单片机时,在端口使用方面所特别需要注意的问题:
※在使用端口之前必须要设置端口的方向,即端口是处在输入状态还是输出状态:输入状态下,读取端口输入寄存器可以获取当前端口的输入状态;输出状态下,写入端口输出寄存器可以控制端口的输出状态。
※在改变单个端口相关寄存器状态时,一般采用按位的“与”操作或者是“或”操作,以保持其他端口原状态不变。
关键字:MSP430f5438
引用地址:
MSP430f5438的IO操作实验
推荐阅读最新更新时间:2024-11-11 17:45
从IO口讲起__HCS12学习笔记(1)
很多IO口都有复用功能,在一开始,我只对输入输出做了解,以完成键盘和显示的功能,使用的实验板DP256的DEMO,显示是LED小灯,键盘是开关。 A、B、E、K可以通过寄存器控制是否上拉电阻,他们共用一个使能位PUCR。 H、J、M、P、S、T也可做普通IO口,基本与A口类似。 1.1 输出 程序用到了,PORTB口的输出,控制小灯的亮和暗,设置DDRB都为高位,就可以使得B口输出,也就是IO口的初始化,PORTB的值用来控制小灯的初始亮和灭。 通过软件就可以控制小灯的亮的顺序等等功能。 1.2 输入 同上,DDR变成低位就是输入,这里为了实现键盘,IO口设置其上拉,在空接时为高电平。IO口还可以设置中断
[单片机]
STM32单片机释放PB3/PB4/PA15作为普通IO口
一次使用STM32F103RCT6单片机用到多个IO口时发现:不管如何配置,PB3,PB4,PA15无法正常控制输出高低电平,而其他IO口正常。其IO口初始化操作如下: GPIO_InitTypeDef GPIO_Initure; __HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟 __HAL_RCC_GPIOB_CLK_ENABLE(); //开启GPIOB时钟 GPIO_Initure.Pin=GPIO_PIN_15; GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出 GPIO_In
[单片机]
使用单片机普通IO口模拟串口的三种方法
随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置 机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采集会需 要一个串口,上报又需要另一个串口,这就要求单片机具有双串口的功能,但我们知道一般的51 系列只提供一个串口,那么另一个串口只能靠程序模拟。 本文所说的模拟串口, 就是利用51的两个输入输出引脚如P1.0和P1.1,置1或0分别代表高低电 平,也就是串口通信中所说的位,如起始位用低电平,则将其置0,停止位为高电平,则将其置 1,各种数据位和校验位则根据情况置1或置0。至于串口通信的波特率,说到底只是每位电平持续 的时间,波特率越高,持续的时间越短。如波特
[单片机]
STM32 外部(IO)中断EXTI的应用
a) 目的:跟串口输入类似,不使用中断进行的IO输入效率也很低,而且可以通过EXTI插入按钮事件,本节联系EXTI中断。 b) 初始化函数定义: void EXTI_Configuration(void); //定义IO中断初始化函数 c) 初始化函数调用: EXTI_Configuration();//IO中断初始化函数调用简单应用: d) 初始化函数: void EXTI_Configuration(void) { EXTI_InitTypeDef EXTI_InitStructure; //EXTI初始化结构定义 EXTI_Cle
[单片机]
用单片机IO口直接驱动段式LCD的方法
用IO口驱动段式LED(数码管)的方法相信大家比较清楚,但用IO口直接驱动段式LCD的方法相对复杂一些。在网上搜了一下单片机IO口驱动段式LCD的方法,大部分资料讲得不够清晰、具体,而且简单问题复杂化。后来查了LCD的显示原理,结合网上的相关介绍,发现IO口直接驱动段式LCD原理比较简单,用几句话就可以描述清楚: 1. LCD和LED的显示原理不一样:LED是加正向电压发光,而LCD必须交替加正、反向电压才会持续显示(可以做个实验,如果把恒定电压加到LCD的一段上,该段会显示一下,但马上不能显示,而且长时间加恒定电压,会加速LCD的老化和损坏) 2. 常听说1/2bias,1/3bias LCD,是什么意思呢?对于
[单片机]
学习STM32(2)-IO-AFIO(复用功能IO和调试配置)
最近在学习STM32,在BZ上一篇关于的串口通信文章里有这么一段代码:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE); 当初是参考开发的里子写的一直对GPIOD或上“RCC_APB2Periph_AFIO”这句话的意思没搞懂,通过这几天在网上查找资料和看手册,终于高清楚了,不敢独享,希望能对跟我一样的新手有所帮助吧o(∩_∩)o... STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等 ,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有
[单片机]
STM32 IO 模拟IIC I2C
#define I2C_Speed 100000 #define I2C_EE I2C1 #define uStatus 0x80 #define dTime 5 #define I2C_EE_GPIO GPIOB #define I2C_EE_SCL GPIO_Pin_5 #define I2C_EE_SDA GPIO_Pin_4 #define I2C_EE_CLK RCC_APB1Periph_I2C1 #define SCL_H GPIOB- BSRR = GPIO_Pin_5 #define SCL_L GPIOB- BRR =
[单片机]
【STM32基础学习】八种GPIO模式总结
八种IO模式再现 (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 解释速查 浮空输入_IN_FLOATING 浮空输入,通常用作KEY识别 带上拉输入_IPU IO内部上拉电阻输入,默认电平是高 带下拉输入_IPD IO内部下拉电阻输入,默认电平是低。 模拟输入_AIN
[单片机]