MSP430 IO口配置

发布者:星光曲折最新更新时间:2021-01-19 来源: eefocus关键字:MSP430  IO口  配置 手机看文章 扫描二维码
随时随地手机看文章

前言:
IO作为单片机的重要组成部分是不可或缺的,也是必须要掌握的,掌握了IO就学会了单片机的基本使用


所有对于430单片机的操作需要紧随用户开发手册和指导手册进行


用户指导手册
芯片管脚手册


MSP430有多达6组IO口P1~P6,每组有8个IO口(相对于STM32F4/F7/F1系列来说比较少),每组IO口都可以单独设置输入输出状态,设置读写。


需要注意的是对于430F169这款芯片P1和P2是具有中断的,可以选择在输入信号上升沿或者下降沿触发中断
P1P2中断描述
不过本章并不进行P1P2中断的介绍

配置IO口功能需要设置PXIN,PXOUT,PXDIR,PXSEL寄存器

1 PXDIR寄存器
PXDIR寄存器用来设置IO口的输出方向
当某一位为1时选择输出
当某一位为0时选择输入
PXDIR寄存器
例:

P1DIR = 0X02;	//设置P1.1为输出
或者
P1DIR |= BIT1;//设置P1.1为输出123

BIT0~BIT7在#include被宏定义,
分别对应每组IO的PX.0~PX.7(X=1/2/3/4/5/6)
2 PxOUT寄存器用来配置输出高低电平
PxOUT寄存器用来设置IO口的输出高低电平
当某一位为1时选择输出高电平
当某一位为0时选择输出低电平
PXOUT寄存器
例:

P1OUT = 0X02;	//设置P1.1为输出高电平
或者
P1OUT |= BIT1;//设置P1.1为输出低电平123

3 PxIN寄存器用来配置输入高低电平
PxIN寄存器用来设置IO口的输入高低电平
当某一位为1时选择输入高电平
当某一位为0时选择输入低电平
PXIN寄存器
例:

P1IN = 0X02;	//设置P1.1为输入高电平
或者
P1IN |= BIT1;//设置P1.1为输入低电平123

4 PXSEL寄存器
PXSEL寄存器用来用来配置是否复用为外设
当某一位为1时复用为外设模块
当某一位为0时为IO引脚
PXSEL
例:

P1SEL = 0X02;	//设置P1.1为TA0外设
或者
P1SEL|= BIT1;//设置P1.1为TA0外设123

每个引脚复用需要对应引脚功能图
引脚功能对照图
5 PXIE中断使能寄存器
PXIE中断使能寄存器用来设置IO口是否发生中断
只有P1 P2两组IO口具有中断功能
这位置1开启中断
这位置0关闭中断
P1P2中断使能控制寄存器
例:

P1IE=0X01		//开启P1端口中断1

6 P1IES/P2IES
P1IES/P2IES中断边沿选择寄存器
为1 低到高 高电平触发
为0 高到底 低电平触发
中断边沿选择寄存器
例:

P1IES = 0X01		//选择高电平触发1

7 P1IFG P2IFG
中断标志位寄存器
为1发生中断
为0没有中断
我们可以来读取这一位来判断是否发生中断
P1 P2中断标志位寄存器

注意:在设置P1OUT ,P2OUT,P1DIR,P2DIR寄存器时会设置相应的P1IFG,P2IFG标志位
每个中断发生必须保证大于1.5倍MCLK确保中断必须发生

8 接下来我们就来配置IO口吧
配置IO需要以下几个步骤(个人总结)
<1>是否需要开启中断(针对P1 P2两组IO,一般情况下是不需要的)
<2>PXDIR 配置方向(IO输入输出)
<3> PxOUT或 PxIN(输入输出高低电平)
<4>PxSEL(是否选择外设 串口,定时器之类的)
<5>设置中断触发边沿(针对P1 P2)

一般来说我们只需要2,3,4三组步骤就可以使用IO

9 接下来我们进入实战吧 代码开发

/渃畔*/
/*
芯片: MSP430F169
功能: 使用IO点亮LED
芯片8/9引脚外接8MHZ晶振作为时钟
led接P6.4引脚
*/

#include "msp430x14x.h"

void basic_clock(void);

void main( void )

{

  WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

  basic_clock(); //初始化系统时钟

 

  P6DIR |= BIT4; //选择P6.4为输出引脚

  P6OUT &=~BIT4; //关闭P6.4

  while(1)

  {

    P6OUT |=BIT4; //LED开

    for(inti=0;i<1000;i++)

    P6OUT &=~BIT4; //LED关

    for(inti=0;i<1000;i++)

  }

}


void basic_clock(void)

{

  unsigned int iq0;

  BCSCTL1&=~XT2OFF;     //基本定时器1 默认关闭T2CLK 开启T2CLK

  do

  {

    IFG1&=~OFIFG;               //等待开启晶振

    for(iq0=0xff;iq0>0;iq0--);

  }

  while((IFG1&OFIFG)!=0);      

  BCSCTL2=0x88;         //基本时钟状态寄存器2  MCLK8MHZ 1分频  SMCLK 8MHZ 1分频

}


推荐教学视频

https://www.bilibili.com/video/BV1cE411Z79d?from=search&seid=15656799615629348503

https://www.bilibili.com/video/BV1rE41167yG?from=search&seid=6968580456886645765


MSP430 C语言例程

链接:https://pan.baidu.com/s/1z-q4JGVUzTmJrgeurAExYw

提取码:t2qa

链接:https://pan.baidu.com/s/12bALa0_v6j4bAIcULMtzJQ

提取码:0xv9


TI官网提供例程

链接:https://pan.baidu.com/s/1GBXAUFL5opM9LbreQ7zsNw

提取码:1gn6


关键字:MSP430  IO口  配置 引用地址:MSP430 IO口配置

上一篇:MSP430MSP430F5438\MSP430F5438A 操作大内存(Ram),程序跑飞F5438\MSP430F5
下一篇:MSP430 基本时钟配置

推荐阅读最新更新时间:2024-11-17 00:14

MSP430-流水灯和key
关于CCS 和 IAR两款软件同样的代码使用BSL烧写出来的代码不一样的问题: 可能因为编译器的问题,两者编译出来的结果不一样,从而导致生成的txt不同,进而产生下板子验证的错误。 我试了一晚上,依旧没有设置好,解决办法,,,使用IAR(真香!) 这里的流水灯和按键的方式与51单片机的相似 流水灯我这里就直接贴代码: #include io430.h #define uint unsigned int #define uchar unsigned char void delay(unsigned int counts) { unsigned int i,j; for(j=0;j 10;j++)
[单片机]
基于MSP430系列微控制器串口通信时的波特率自动检测的实现
  通常微控制器通过串行接口与其它终端进行通信时,两个终端需要通讯波特率一致才能达到准确与可靠的通讯效果,串行波特率的自动检测(ABR)可以解决通信终端的波特率自动匹配问题,从而实现微控制器与PC或其它主机的串行通信。本文主要介绍 MSP 430系列微控制器实现串口通信时的波特率自动检测。   1.概述   当MCU需要同时与几个不同波特率值的系统进行通信时,ABR检测功能则显得很重要。ABR检测在检测波特率值的同时可以自动调整波特率值。在执行ARB检测算法时,当主机波特率在115200~74400之间时,MCU必须从主机接收到一个预先设置的特定字符,如 CR 字符;当主机波特率在9600~1200之间时,MCU则需从主机接收到第
[单片机]
基于<font color='red'>MSP430</font>系列微控制器串口通信时的波特率自动检测的实现
汽车上这项安全配置看似黑科技,其实就是个坑钱的货
随着汽车技术的不断进步,越来越多的高科技配置应用到了汽车当中,就拿安全配置来说,几乎没有一项安全配置是没有用的。无论是主动安全还是被动安全系统,要么就是防止事故的发生,要么就是在事故发生时将车辆和乘客的损失尽可能降低,总之都是对车主有益的。可能很多人不知道,还有一项安全配置叫做主动引擎盖行人保护系统,这项功能是为了在车辆与行人发生碰撞时保护行人的一种装置。 这种装置在本田雅阁、捷豹XF、奔驰马自达MX-5等很多车型上都有搭载,首先来跟大家说说这项功能具体是干什么用的。当车辆检测到即将与行人发生碰撞的时候,这套系统会控制引擎盖向上弹升,这样行人在受到撞击的时候并不会直接撞到坚硬的发动机盖上,而像是被弹起的发动机盖接住一样,
[汽车电子]
汽车上这项安全<font color='red'>配置</font>看似黑科技,其实就是个坑钱的货
MSP430FR4133练习(一):GPIO输入电平状态判断
硬件环境:MSP430FR4133 LANCHPAD开发板 软件环境:IARV7.10 For 430 源代码: 1 #include driverlib.h 2 3 void main(void) 4 { 5 //Stop WDT 6 WDT_A_hold(WDT_A_BASE); 7 while(1) 8 { 9 //设置P1.0为输出,接LED 10 GPIO_setAsOutputPin( GPIO_PORT_P1,GPIO_PIN0 ); 11 //设置P4.0为输出,接LED 12 GPIO_setAsOutputPin( GPIO_PORT_P4,GPIO_PI
[单片机]
MDK 启动代码配置问题
对于MDK,可以自己生成启动代码。当然大多数情况下启动代码是不需要修改的,然而有时候,自动生成的启动代码有或多或少的问题。例如堆栈设置不到,地址重合;系统时间设置等等。那么我们就需要修改启动代码。修改启动代码的方法一般有两种: 1. 就是直接打开启动代码文件,直接编辑,就是需要看整体文件,在需要的地方修改。 2. MDK其实提供了启动代码配置向导 configuration wizard 。直接在这个向导里边编辑,选择就可以,不选取看源代码,非常方便。
[单片机]
MDK 启动代码<font color='red'>配置</font>问题
MSP430直流电机控制以及测速+仿真
本设计测试部分采用测周期发,12864液晶显示,如有不足,欢迎指教 SP430直流电机控制仿真原理图 下面是部分单片机程序源码预览: /* * LCD_12864.c * * Created on: 2016年6月15日 * Author: Jack zhao */ #include MSP430F249.h #include LCD_12864.h #define uchar unsigned char #define uint unsigned int uchar DIR_S ={ /*-- 文字: 顺 --*/ /*-- 宋体12; 此字体下对应的点阵为:宽x高=16x1
[单片机]
<font color='red'>MSP430</font>直流电机控制以及测速+仿真
MSP430G2553单片机驱动TLC5540
#include msp430g2553.h #include stdio.h typedef unsigned char INT8U; typedef unsigned int INT16U; #define ADC_CTRL_DIR_PORT (P2DIR) #define ADC_CTRL_OUT_PORT (P2OUT) #define ADC_DATA_DIR_PORT (P1DIR) #define ADC_DATA_IN_PORT (P1IN) #define ADC_OE_BIT (BIT0) #define ADC_CLK_BIT (BIT1) #define ADC
[单片机]
电容触摸MSP430电路与LED驱动电路设计详解
  MSP430 系列单片机以低功耗和外设模块的丰富性而著称,而针对电容触摸应用,MSP430 的PIN RO 电容触摸检测方式支持IO 口直接连接检测电极,不需要任何外围器件,极大的简化了电路设计,而本设计文档中使用的MSP430G2XX5 更支持多达 32 个IO 口,可驱动24 个以上的LED 灯,达到理想的显示效果。   电容触摸实现原理   MSP430 根据型号的不同支持多种电容触摸检测方式,有RC 震荡、比较器、PIN RO,本设计使用的是PIN Relaxation Oscillator 方式,原理如图1,芯片管脚内部检测电路由施密特触发器、反向器,以及一个电阻组成,震荡信号经过施密特触发器变成脉冲信号,再通过
[单片机]
电容触摸<font color='red'>MSP430</font>电路与LED驱动电路设计详解
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved