MSP430F5529 (一)通用I/O口的设置-1

发布者:悦耳旋律最新更新时间:2015-08-20 来源: eefocus关键字:MSP430F5529  通用IO口 手机看文章 扫描二维码
随时随地手机看文章
初学,有什么错误或者不恰当的地方多多指正,大家一起交流学习。
推荐一个好去处:TI官方MSP430交流社区http://www.deyisupport.com/question_answer/microcontrollers/msp430/f/55.aspx
需要注册。在这里面提问题,都会有TI的在职工程师为你解答。
第一章,先学习I/O。I/O的操作是最基本的,而且这些寄存器也都要牢牢掌握。MSP430难就难在它有大量的寄存器需要设置,虽然不是每个都必须掌握,但I/O控制寄存器我觉得肯定还要记住的。这个太基础了啊啊-_'
大家手里要常备一份原理图(PCB图),方便查线和配置引脚
点击看大图
一、通用I/O的简单操作(设置)
      详情可参照TI官方资料 SLAU208 Digital I/O Module
1.1  I/O的简介
             特点:①多种复用和设置(即可控制是否输入、是否输出、是否接上拉电阻、是否接下拉电阻、是否可接受中断);
                      ②一般情况下,P1和P2都是具有中断能力的。从P1和P2接口的各个I/O管脚引入的中断可以独立的被使能并且设置为上升沿或者下降沿触发。对应的中断向量表分别为P1IV和P2IV,它们只能进行字操作,并且PAIV这个寄存器根本不存在。
                      ③P1、P2可合为PA,P3、P4可合为PB,…PC、PD。所以P1为8位BCD 0x00,PA为16位BCD 0x0000。当进行字操作写入PA口时,所有的16位都被写入这个端口;当利用字节操作写入PA口的低字节时,高字节保持不变;
                      ④由于430很多I/O和外围电路接线,所以这里常用位操作。如事先定义(接下来也会用到,先在此声明)BIT0=0X01、BIT1=0X02、BIT3=0X04…BIT7=0X80,那么将P1.1、P1.3的输出设为1的时候,就可以这样操作:P1OUT|=(BIT1+BIT3)。这样显得很清楚。
                      ⑤没有用到的I/O,要统一拉低为好。此外,当读入的数据长短小于端口最大长度时,那些没有用到的位会被视零。
 
1.2   I/O的简单配置
                    430I/O的配置是用软件来实现的,是通过相应的配置寄存器来实现的。(用到某个I/O时,一定要先配置好该I/O,否则易出错)
      1.2.1  I/O方向设定寄存器PXDIR
                    如设定P1.1和P1.2为输出状态
操作为: P1DIR |=(BIT1+BIT2)等价于PADIR |=(BIT1+BIT2)也等价于PADIR_L|=(BIT1+BIT2。
拉高设定为输出,拉低设定为输入(默认)。
      1.2.2  I/O输入设定寄存器PXIN
                    如设定P1.1和P1.2的输入为低电平
操作为: P1IN &=~(BIT1+BIT2)。
      1.2.3      I/O输出设定寄存器PXOUT
①当只用为简单的输出时:
如设定P1.1和P1.2输出高电平
操作为: P1OUT |=(BIT1+BIT2)。
                        ②如果该引脚为正常I/O功能,且当前已设定为输入方向,且上拉/下拉电阻寄存器是有效地。那么PXOUT可以用来配置上拉和下拉电阻:
                                   低电平为下拉电阻;
                                   高电平为上拉电阻;
              1.2.4  上拉/下拉电阻使能寄存器PXREN
                                   低电平该寄存器为无效状态;
                                   高电平该寄存器为有效状态;
      
 
              1.2.5  输出驱动能力设置寄存器PXDS
                            弱化驱动可以减弱电磁干扰EMI,全力驱动会增强电磁干扰。默认为减弱驱动。
                                   低电平表示减弱的驱动(默认);
                                   高电平表示全力的驱动;
              1.2.6  功能选择寄存器PXSEL
                            用来声明该端口是要应用于外围电路的特殊功能(不决定输入输出方向),默认为低电平。
                                   低电平表示普通的I/O(默认);
                                   高电平表示该引脚将有连接外围电路的特殊用途;
                      如:开发板初始化函数HAL_Board.c中有这样一句程序:
                                   P5SEL |=(BIT2+BIT3)(=00001100);
                                   这句话的意思就是声明P5.2和P5.3将有特殊用途,实际上这两个I/O接的是外部的高频时钟晶振(之后还要设定为输入状态才可以)。
                            此外需要注意的是,一旦某个I/O的PXSEL置高了,那么该引脚将不能再被用为中断引脚。
 
总结,简单的程序应用:
/*实现LED的闪烁*/LED位于每个触摸按键下方,具体接口请查询原理图
#include              该头文件内部包含430各个寄存器的配置情况
void main(void)
{
       WDTCTL=WDTPW+WDTHOLD;                   //关闭看门狗
       P1DIR|=(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5);             //P1.0-P1.5方向为输出,BITX的定义在msp430.h中
       P1OUT&=~(BIT0+BIT1+BIT2+BIT3+BIT4+BIT5);         //清零
       /*P1SEL=0X00;
PXDS=0X00;默认*/
       int i=0,j=0;
       while(1)
       {
              if(i>5)
                     i=0;
              else
              {
                     switch(i)
                     {
                     case 0:P1OUT=0x01;break;
                     case 1:P1OUT=0x02;break;
                     case 2:P1OUT=0x04;break;
                     case 3:P1OUT=0x08;break;
                     case 4:P1OUT=0x10;break;
                     case 5:P1OUT=0x20;break;
                     }
              }
              i++;
              for(j=20000;j>0;j--);                               //延时
       }
}
关键字:MSP430F5529  通用IO口 引用地址:MSP430F5529 (一)通用I/O口的设置-1

上一篇:MSP430F5529 (一)通用I/O口的设置-2
下一篇:这样快速闯入MSP430学习过程

推荐阅读最新更新时间:2024-03-16 14:29

MSP430F5529 DriverLib 库函数学习笔记(一)时钟配置和闪烁LED
平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) 一、新建工程 二、时钟树 时钟系统结构 (1)5个时钟来源 时钟系统模块具有5个时钟来源。 ① XT1CLK:低频/高频振荡器,可以使用32768Hz的手表晶振、标准晶体、谐振器或4~32MHz的外部时钟源; ② VLOCLK:内部超低功耗低频振荡器,典型频率12kHz; ③ REFOCLK:内部调整低频参考振荡器,典型值为32768Hz; ④ DCOCLK:内部数字时钟振荡器,可由FLL稳定后得到; ⑤ XT2CLK:高频振荡器,
[单片机]
<font color='red'>MSP430F5529</font> DriverLib 库函数学习笔记(一)时钟配置和闪烁LED
MSP430F5529 默认时钟频率(1.05MHz)的来源探究
相信很多小伙伴跟我一样好奇 MSP430FF5529的 初始时钟是哪里来的,是多少 接下来我和大家一起分析一下! 首先我认为比较可疑的是 那些默认的参数,一些Reset值不是0的参数 十分的可疑,我们着重的看看他想表达什么意思 我查找UCSCTL这个寄存器的第一个值是UCSCTL1 的DCOSEL位 这一位是2 在芯片的Datesheet里面我找到了这个,貌似是没什么太大的用处。 接下来一个比较让人感兴趣的寄存器就是这个 FLLD = 1 这个好理解 接下来 有意思的来了 : FLLN = 0x1F = 31 这是书册里面 很重要的一个公式! 暂且先不说作用,我们现在先追溯一下我们的时钟是从哪里来的
[单片机]
<font color='red'>MSP430F5529</font> 默认时钟频率(1.05MHz)的来源探究
MSP430F5529火箭板 ---> 控制时钟系统输出频率实验
实验内容:上电控制MSP430F5529 Launch Pad上的主时钟系统达到25Mhz 实验准备: 1、硬件:MSP430F5529 Launch Pad 2、软件:Code Composer Studio集成开发工具(CCS) 3、提升MSP430F5529核心电压的办法及介绍请参考《MSP430F5529火箭板 ----> 关于核心电压提升实验(含电源管理模块和供电监控系统介绍)》文章链接 link 一、时钟系统 1、MSP430F5529 Lanuch Pad晶振的物理层分析   在进入时钟系统之前我们先对MSP430F5529的时钟晶振做一个介绍。    MSP430F5529 Launch Pad 板载了1
[单片机]
<font color='red'>MSP430F5529</font>火箭板 ---> 控制时钟系统输出频率实验
MSP430F5529 (八)实时时钟RTC
实时时钟模块提供了具有日历模式的时钟计数、灵活可编程的闹钟以及可校准的时钟计数器。 8.1 RTC_A简介 实时时钟模块提供了一个可以配置成一般目的计数器的日历时钟。 RTC_A的特点包括: (1). 可配置成带日历的实时时钟或者一般目的的计数器; (2). 在日历模式中提供了秒钟,分钟,小时,星期,日期,月份和年份; (3). 具有中断能力; (4). 实时时钟模式下可以配置为BCD或者二进制模式; (5). 实时时钟模式下具有可编程的闹钟; (6). 实时时钟模式里具有时间偏差的逻辑校正; 注意:实时时钟模块的大多数寄存器没有初始条件。在使用这个模块之前,用户必须通过软件对寄
[单片机]
<font color='red'>MSP430F5529</font> (八)实时时钟RTC
MSP430F5529通过定时器A产生两个反相频率占空比可调PWM波
MSP430F5529的定时器还是挺好用的,具有定时计数和捕获的功能,具有高达7个捕获比较寄存器,支持多路捕获/比较。这里我用到了两个定时器产生两个反相的PWM波并通过一个捕获比较器捕获其中一个PWM波,显示在OLED12864显示屏上(本实验使用的是MSP-EXP430F5529LP开发板,使用的软件是IAR)。 实现的功能为: 1、利用MSP430内部PWM波发生器产生两路反相频率为 50Hz到1KHz,占空比为10%到90%的PWM波。 2、要求频率和占空比通过按键S1和S2分别设置。频率按50Hz步进,占空比按10%步进。 3、利用MSP430单片机的捕获/比较器测量该PWM波 的频率和占空比,且显示于oled屏幕上。 (
[单片机]
<font color='red'>MSP430F5529</font>通过定时器A产生两个反相频率占空比可调PWM波
对于MSP430F5529时钟系统的理解
大一下学期才开始自学单片机,真真切切的感受到自己是个弱鸡,专业知识一点不会,看个书都费劲,周围又没有什么人可以交流交流或者带带我,那个酸爽就别提了,学的我一度想挠黑板。没办法,那也只能硬着头皮学,就是硬看,多看几遍或者看上一段时间就差不多才能理解意思。中断、IO口还比较好理解,到了时钟系统就一脸懵,看了好多遍,一直到暑假才算大致理解了,写篇博文当做梳理,也希望能帮到大家。 首先理解一下时钟系统到底是干啥用的,这个问题曾经困扰了我好久。 (1)时钟系统一个作用是使cpu与各部分协调同步。因为各部件的工作速度不一致,导致它们在协同工作时出现沟通不便,效率低下的情况。有了时钟系统,运行快的部件即使已经执行完当前指令,在时钟系统进
[单片机]
基于MSP430F5529的金属循迹小车
#include #include ldc1314.h #include lcd12864cog.h //#include rtc.h #include unsigned int Just_ch0,Just_ch1,Just_ch2,Just_ch3; unsigned int Now_ch0,Now_ch1,Now_ch2,Now_ch3; unsigned int PULSE_NUMBER = 0; unsigned int beep=0; int FIVE_DIV_TURNS_NUMBER = 0;//一圈的五分之一 float TURNS_NUMBER = 0; float CIRCUM = 0.2041;//轮胎
[单片机]
msp430f5529学习笔记(3)一文学会GPIO口操作
什么是GPIO口 GPIO口意思为通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。 如何操作GPIO口 寄存器操作 430f5529通过宏定义的方式简化了寄存器的名称,让他们可以轻易的读懂。 #define P1IN (PAIN_L) /*P1输入*/ #define P1OUT (PAOUT_L) /*P1输出*/ #define P1DIR (PADIR_L) /*P1模式*/ #define P1REN (PAREN_L) /*P1中断使能*/ #define P1DS (PADS_L)
[单片机]
<font color='red'>msp430f5529</font>学习笔记(3)一文学会GP<font color='red'>IO口</font>操作
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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