历史上的今天
返回首页

历史上的今天

今天是:2025年06月01日(星期日)

2021年06月01日 | MSP430单片机的IO口配置

2021-06-01 来源:eefocus

1. I/O端口简介 1.1 I/O端口简介


MSP430最多时有6组I/O端口的,每一组时有8位。也就是P1到P6,8位也就是说,P1.0到P1.7。那么MSP430单片机就有48个通用I/O端口。下面先来看一下总共的特点是MSP430一个好的特点是,给用户提供了一个比较多的外部中断能力,比如说P1口和P2口就有中断能力。


MSP430单片机数字I/O的一些特点:


※完全独立的可编程的数字I/O;


※每一个都可以配置为输入或输出;


※P1和P2端口都是可以独立配置成中断的;


※都具有独立的输入输出寄存器。


1.2端口P1、P2结构



该图是P1、P2的结构图。


通用端口P1和P2各有8个引脚及各自的控制寄存器,每一引脚都可单独控制,并且每一引脚都可用作中断源。


P1和P2各有一个中断向量。P1.0到P1.7产生同一个中断,P2.0到P2.7也产生同一个中断。


它们各有7个寄存器用来控制端口的引脚。


P1和P2经过8位MDB和MAB与处理内核连接,它们必须用字节指令以绝对寻址模式进行访问。


1.3 P1和P2的中断控制功能


端口P1和P2有8个中断标志位、8个中断允许位、8个中断事件触发沿选择位,并各有一个中断向量。


每个中断信号各有3位来配置中断,即:


※中断标志位:P1IFG.0~P1IFG.7和P2IFG.0~P2IFG.7。


※中断允许位:P1IE.0~P1IE.7和P2IE.0~P2IE.7。


※中断触发沿选择位:P1IES.0~P1IES.7和P2IES.0~P2IES.7。


中断标志位P1IFG.0~P1IFG.7产生一个中断,P2IFG.0~P2IFG.7也产生一个中断。当满足两个条件:PnIE.x置位且通用中断允许位GIE置位时,P1.0~P1.7或P2.0~P2.7中的一个或多个中断事件将产生中断请求。中断标志位不会在中断被接收后自动复位。中断服务程序必须进行中断源的检查和将相应的中断标志位复位的处理。


1.4 端口P3、P4、P5和P6



通用端口P3、P4、P5和P6的结构如图所示。每个引脚可以作为I/O端口工作,也能是外围模块的引脚。MSP430这种引脚功能的复合较少了芯片的引脚。


每个端口各有4个控制寄存器。


P3、P4、P5和P6经过8位MDB及MAB与处理机内核连接,他们必须用字节指令以绝对寻址模式来访问。


2. 数字I/O寄存器 2.1 P1、P2的控制寄存器


P1寄存器







P2寄存器



7个寄存器为I/O功能的配置提供了最大的灵活性,即:


※所有I/O位均可独立编程;


※可以有各种输入、输出和中断条件的组合;


※P1和P2的8位全部可用于对外部事件的中断处理。


图中所示的是P1、P2的7个寄存器,这些寄存器都是8位的,必须用字节指令以绝对寻址模式进行访问。


2.2寄存器介绍


输入寄存器P1IN、P2IN


这两个只读寄存器反应I/O引脚上的信号,并且写入时会在写有效期间增加电流消耗。


输出寄存器P1OUT、P2OUT


如果I/O引脚用作输出,则8位的输出寄存器提供相应位的输出缓存信息,输出缓存可用所有含目的操作数的指令修改。在读取时,输出缓存的内容和引脚定义方向无关,改变方向不会改变输出缓存的内容。


方向寄存器P1DIR、P2DIR


每个寄存器含有相互独立的8位,用于定义每个I/O引脚的方向。各位在PUC后复位。


中断标志寄存器P1IFG、P2IFG


每个寄存器有对应于I/O引脚的8个标志位,表示是否由中断挂起。


对每一个中断标志写‘0’使它复位,写‘1’使它置位并产生中断。


每一组中断标志P1IFG.0~P1IFG.7和P2IFG.0~P2IFG.7只用一个中断向量,它们都是多源中断向量。当中断被接受时这些标志位不会自动复位,要由中断服务程序来确定中断源,并将相应的标志复位。


2.3寄存器介绍


中断触发沿选择寄存器P1IES、P2IES


中断触发沿选择寄存器中对应于每一个I/O引脚都有1位选择触发中断标志的电平跳变。


中断允许寄存器P1IE、P2IE


中断允许寄存器中对应每一个I/O引脚都有一相应的允许位,可允许或禁止中断。


功能选择寄存器P1SEL、P2SEL


为了减少MSP430的引脚,P1、P2引脚与外围模块的引脚同用。P1SEL和P2SEL用来选择引脚的I/O端口功能或者外围模块功能。每个寄存器都有相互独立的8位来定义访问I/O引脚的功能为端口功能或者外围模块功能。各位在PUC后复位。


2.4 P1、P2寄存器注意事项



首先我们 对寄存器P1OUT和P1DIR及对P2OUT和P2DIR的操作可能使P1IFG或P2IFG中的相应位置位。


然后就是我们解释一下中断时间宽度,任何外部中断事件必须长于1.5倍MCLK周期,以保证被接受并使响应中断标志位置位。


在P1IES、P2IES中,我们改变P1IES或P2IES中的位可能会引起相应中断标志位置位,与引脚电平无关,具体变化参见第三幅图,再次不再赘述。


然后就是P1、P2的中断触发,只有跳变才能引起中断,静态电平不能。如果在执行RETI指令后中断标志仍然置位,则在RETI指令完成后中断将再次发生。这一点保证了每次跳变都能得到软件响应。


最后是P1SEL、P2SEL的选择功能,如果PnSEL.x置位,泽中断触发沿选择电路被禁止,输入信号将不会产生中断。


2.5P3、P4、P5和P6的控制寄存器





每个端口有4个控制寄存器,为数字I/O功能提供了最大的灵活性。功能有:


※所有I/O位均可独立编程;


※可以有各种输入组合;


※可以任意组合端口功能和模块功能。


如图所示的是每个端口的4个控制寄存器,为字节宽度,必须用字节指令进行访问。


注意:这4组端口不具有中断功能,还有P1和P2具有中断功能。


这四个寄存器的意义以及使用方法,参见P1、P2端口的相应的4个寄存器,P3~P6除了不具有中断能力,其他功能是相似的。


3. 配置数字I/O 3.1软件延时下的LED闪烁



首先我们把代码输进IAR中,代码如图所示,点击IAR中Debug按钮,进入C-SPY环境,点击GO,使得程序全速运行。程序运行的效果为LED指示灯闪烁。IAR为用户提供了方便的头文件,能够大大地简化程序编写。对于MSP430F14x系列微处理器,一般在程序开头包含msp430f14x.h即可。


3.2程序说明



程序的流程图如右图所示,在主体循环中通过软件延时,控制端口的输出状态在0和1之间转换。


根据硬件电路,当P1口的输出控制寄存器第0位为0时,P1.0输出低电平,LED发光;当P1口的输出控制寄存器第0位为1时,P1.0为高电平,LED熄灭。因此P1端口输出控制寄存器第0位的变化反映在实际电路中就是LED在点亮与熄灭状态的相互转换。需要注意,在该电路中电流的流向是:VCC->电阻->LED->I/O,电流经过电阻和发光二极管流入MSP430的P1.0端口,即俗称的灌电流。


3.3按键查询控制的LED发光



按键查询控制的LED发光的程序如图所示。


程序在主体循环中不断检测P2端口输入寄存器的状态,如果有键按下(P2.4)输入为高电平,则寄存器的第四位为1。


因此在主体循环中不断检测P2端口输入寄存器第4位状态,如果该位为1则表明当前用户按下了S2按键,对P1.0复位,LED点亮;否则对P1.0置位,LED熄灭。


3.4总结


通过上面两个程序可以总结出,在日常使用MSP430系列单片机时,在端口使用方面所特别需要注意的问题:


※在使用端口之前必须要设置端口的方向,即端口是处在输入状态还是输出状态:输入状态下,读取端口输入寄存器可以获取当前端口的输入状态;输出状态下,写入端口输出寄存器可以控制端口的输出状态。


※在改变单个端口相关寄存器状态时,一般采用按位的“与”操作或者是“或”操作,以保持其他端口原状态不变。


3.5外部中断控制下的LED闪烁



MSP430F149的P1和P2两组端口具有外部中断能力,通过设置相关的控制寄存器可以允许或者屏蔽其中的某一位或者某几位的中断能力。


我们来看图中所示的程序。程序主函数中首先针对按键使用的P2.4端口和LED使用的P1.0端口初始化,包括按键对应端口的中断功能、LED对应端口的方向和初始化状态,然后设置系统总中断。中断服务程序首先关闭P2.4中断,判断是否是P2.4产生的中断,是则修改LED对应端口输出状态,最后清除中断标志寄存器,打开P2.4中断退出中断服务程序。


在程序中置位了P2IES寄存器的第4位,因此只有在松开按键的瞬间,P1.0端口连接的LED指示灯的状态才会改变(点亮或熄灭,这里暂时忽略掉按键抖动问题)。

推荐阅读

史海拾趣

HBH-Microwave公司的发展小趣事

HBH-Microwave的故事始于对高性能微波组件的执着追求。在成立初期,公司便聚焦于设计并制造能够满足严苛应用需求的微波放大器。通过不断的技术研发,HBH成功推出了HA6013型号的高功率放大器,该产品在17.0至18.0 GHz频段内表现出色,迅速在通信和雷达领域获得认可。这一创新不仅巩固了HBH在微波技术领域的地位,也为后续产品的开发奠定了坚实的技术基础。

Dowosemi公司的发展小趣事

Dowosemi公司深知不同行业对电路保护的需求各异,因此他们致力于提供定制化的解决方案。无论是汽车电子、通讯设备还是智能电表等领域,Dowosemi公司都能根据客户的具体需求,提供量身定做的电路保护产品。这种贴心的服务赢得了客户的广泛赞誉,也为公司带来了源源不断的订单。

Diplohmatic A/S公司的发展小趣事

Diplohmatic A/S公司非常重视企业文化的建设。公司倡导“创新、协作、诚信、共赢”的核心价值观,通过举办各类员工活动、开展团队建设和员工培训等方式,不断增强员工的归属感和凝聚力。这种积极向上的企业文化氛围激发了员工的创新精神和工作热情,为公司的持续发展提供了强大的动力。

Exar公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,Exar公司始终坚持以创新为核心竞争力。公司不断投入研发资金,加强技术创新和产品研发力度,推出了一系列具有自主知识产权的新产品。同时,Exar还积极关注行业发展趋势和市场动态,不断调整和优化产品线,以适应市场的变化和发展。在未来,Exar将继续坚持创新驱动的发展战略,努力成为电子行业的领军企业。

请注意,以上故事框架仅供参考,具体的故事内容需要根据实际情况进行补充和完善。

登丰微(GSTEK)公司的发展小趣事

歌普电子不仅注重产品的品质和技术创新,还非常重视客户服务。公司始终秉承“用心服务”的理念,为客户提供全方位的售前、售中和售后服务。无论是产品咨询、技术支持还是售后保障,歌普都能迅速响应并满足客户的需求。这种高效、专业的服务赢得了客户的高度评价和信赖,也为公司的持续发展奠定了坚实的基础。

Bomar Interconnect公司的发展小趣事

随着产品线的不断丰富和技术实力的提升,Bomar Interconnect公司开始积极拓展国内外市场。公司通过参加各类行业展会、举办技术研讨会等方式,加强与客户的沟通与合作。同时,公司还注重品牌建设,通过提升产品质量、优化客户服务等举措,树立了良好的企业形象。这些努力不仅帮助公司赢得了更多客户的信任和支持,也为公司的长远发展奠定了坚实基础。

问答坊 | AI 解惑

主要ZigBee芯片供应商ZigBee方案竞争能力比较

主要ZigBee芯片供应商ZigBee方案竞争能力比较 目前市场上主要ZigBee芯片提供商(2.4GHZ),主要有:TI/CHIPCON、EMBER(ST)、JENNIC(捷力)、FREESCALE、MICROCHIP四家。 目前ZigBee技术提供方式有三种: 1) ZigBee RF+MCU 例如:TI CC2420+MSP4 ...…

查看全部问答>

开关模式D类E类放大器

开关模式D类E类放大器(英文版)…

查看全部问答>

MDK 设置入口点

我用MDK编写的启动代码,运行很正常。可是我一旦引入一些c代码后,入口地址就不在是启动代码了。     0x00000000   0x0000032c   Code   RO            6  ...…

查看全部问答>

开发板串口连仪表,无法接收数据

我用的是mini2440开发板,用外扩的串口与仪表相连,无法接收数据。而用计算机与仪表连时有乱码,开发板与计算机连时数据正常接收,请问为什么开发板与仪表串口连时数据怎么接收啊!!!…

查看全部问答>

北京公司长期招聘 Linux kernel/BSP developer/testers

某北京嵌入式企业现长期招聘以下开发测试人员,基本要求:3年以上LINUX内核开发或测试经验,正规本科以上毕业。真诚期待热爱嵌入式行业的有识之士加盟,为极具实力者提供极有竞争力的待遇。有意者请联系:duzimopinglan@hotmail.com, feifei1977@16 ...…

查看全部问答>

arm linux掉电保护问题

arm上安装的是linux系统,外存是flash和sd卡,正常工作时需要频繁访问sd卡。 在系统意外掉电时,经常发生sd卡错误的问题,在下次重新启动时,系统会检查到sd卡错误,并将sd卡自动设置为只读权限,这个问题有人能帮我想想办法么?? sd卡错误的原 ...…

查看全部问答>

有802.11人才吗?

著名法国公司北京研发中心招聘以下职位,以组建新团队。 需4年相关经验 有意者请联系wopafeng@hotmail.com 1.Senior RF engineer (Antenna) – 802.11n(若干名) 2.Technical leader – 802.11n(若干名) 嵌入式,Linux 3.(Senior) So ...…

查看全部问答>

谁有TCPMP的文档或知道其组织结构

TCPMP的代码找到是找到了.可以,看了半天,没看懂.... 一点文档说明都没有.先请给位大人们..指点一下.... 只要能实现自动往playlist里面添加我想播放的文件即可. 找了半天没找到在那里...谢谢了…

查看全部问答>

LM3S8962定时器溢出触发ADC采样测电压

    开发板的AD没有接出来,只能找个其他的开发板来测试AD了,周立功的8962开发板上AD接出来,正好可以测试一下。原理图如下:   VIN1和VIN2为外部输入电压,电压范围为0~3.3V,可通过电位器W1和W2调节VIN1和VIN2的大小, ...…

查看全部问答>

全国研究生电子设计大赛-西南赛区一等奖作品

    难得找到借口回家休息一下,学校网速太屁,电信移动这些破单位,只晓得自己捞油水,也不真真实实的犒劳下人民大众提高一下网速。 回归正题,本人是被学校拉着去参加第八届全国研究生设计大赛的,本来手头上就有两个项目,还有一篇EI ...…

查看全部问答>