(一)MSP430f5529 通用I/O口的设置

发布者:画意人生最新更新时间:2021-02-04 来源: eefocus关键字:MSP430f5529  通用I  O口  设置 手机看文章 扫描二维码
随时随地手机看文章

1. I/O口的简介

特点:

(1)多种复用和设置(即可控制是否输入、是否输出、是否接上下拉电阻、是否可接受中断)


(2)一般情况下,P1和P2都具有中断能力的。从P1和P2接口的各个I/O管脚引入的中断可以独立的被使能并且设置为上升沿或者下降沿触发,对应的中断向量表分别为P1IV和P2IV,他们只能进行字操作,并且PAIV这个寄存器是不存在的。


(3)P1、P2可合为PA,P3、P4可合为PB…。所以P1为8位BCD 0X00,PA为16位BCD 0X0000。当进行字操作写入PA口时,所有的16位都被写入这个端口;当利用字节操作写入PA口的低字节时,高字节保持不变;


(4)由于430很多I/O和外围电路接线,所以这里常用位操作。如事先定义(接下来也会用到,先在此声明),BIT0=0X01、BIT1=0X02、BIT3=0X04…,那么将


    P1.1、P1.3---》1(高电平):P1OUT |=(BIT1+BIT3),

    P1.1、P1.3---》0(低电平):P1OUT &=~(BIT1+BIT3), 

    电平翻转即按位异(取反):P1OUT  ^=(BIT1+BIT3)。


(5)没有使用到的I/O口,统一拉低,当读入的数据长短小于端口最大长度时,那些没有用到的为会被视为0;


2. I/O口的简单配置(一)

430 I/O的配置是用软件来实现的,是通过相应的配置寄存器来实现的。(用到某个I/O时,一定要先配置好该I/O,否则易出错)


2.1.1 I/O方向设定寄存器PxDIR

如设定P1.1和P1.2为输出状态有以下三种设置模式:


 P1DIR |=(BIT1+BIT2)

 PADIR |=(BIT1+BIT2)  

 PADIR_L |=(BIT1+BIT2


== 拉高设定为输出,拉低设定为输入(默认)==


2.1.2 I/O输入设定寄存器PxIN

如设定P1.1和 P1.2的输入为低电平:


P1IN &=~(BIT1+BIT2)。


2.1.3 I/O输出设定寄存器PxOUT

(1)当只用为简单的输出时:如设定P1.1和P1.2输出为高电平:


P1OUT |=(BIT1+BIT2);


(2)如果该引脚为正常I/O功能,且当前已设定为输入方向,且上拉/下拉电阻寄存器是有效的,那么PxOUT可以用来配置上拉和下拉电阻。低电平为下拉电阻,高电平为上拉电阻。


2.1.4 上拉/下拉电阻使能寄存器PxREN

低电平该寄存器无效状态

高电平该寄存器有效状态


2.1.5 输出驱动能力设置寄存器PxDS

弱化驱动可以减弱电磁干扰EMI,全力驱动会增强电磁干扰。默认为减弱驱动。


低电平表示减弱的驱动(默认)。

高电平表示全力的驱动。


2.1.6 功能选择寄存器PxSEL(引脚复用)

用来声明该端口是要应用于外围电路的特殊功能(不决定输入输出方向),默认为低电平。


低电平表示普通的I/O口(默认);如:


 P1SEL |=BIT0;


高电平表示该引脚将有连接外围电路的特殊用途。如:


 P5SEL |=(BIT2+BIT3)


这句话的意思是声明P5.2和P5.3将有特殊用途,实际上这两个I/O接的是外部的高频时钟晶振(之后还是要设定为输入状态才可以)。此外需要注意的是。一旦某个I/O的PxSEL置高了,那么该引脚将不能再被用为中断引脚。


外部中断应用实例

/*实现LED的闪烁LED位于每个触摸按键的下方,具体接口请查询原理图

#include 该头文件内部包含430各个寄存器的配置情况*/

/**

 * main.c

 * 流水灯

 */

int main(void)

{

WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer

P1DIR |=(BIT2+BIT3+BIT4);//P1.2、P1.3、P1.4为输出方向

P1OUT &=~(BIT2+BIT3+BIT4);//置零

int i=0,j=0;

while(1){

    if(i>5)

        i=0;

    else{

        switch(i){

        case 0:break;

        case 1:break;

        case 2:P1OUT=0X04;break;

        case 3:P1OUT=0X08;break;

        case 4:P1OUT=0X10;break;

        }

    }

    i++;

    for(j=20000;j>0;j--);//延时

}

}


3.通用I/O口的简单配置(二)

外部中断是MSP430优先级最低的中断而且是可屏蔽中断。


3.1.1简单的端口中断(外部中断)

(1)P1、P2的所有端口都具有中断能力,可以通过寄存器PxIFG,PxIE和PxIES来配置。其他端口则需要参照具体的引脚说明书。所有的P1中断标志是最优先的(相比其它引脚的外部中断),其中P1IFG.0又最优。


(2)PxIV中断向量寄存器:只有P1IV和P2IV。最高优先级使能中断在P1IV寄存器中产生一个序号,这个数字会被程序计数器识别或者加入其中,然后自动的执行合适的中断服务程序。关闭P1口中断不会影响P1IV寄存器的值。P2口具有相同的功能。PxIV寄存器只能字访问。


(3)PxIFGx中断标志寄存器:只有相应的中断使能PxIE打开且总中断GIE打开,该寄存器才有效。


低电平表示没有中断请求等待响应;

高电平表示有中断请求等待响应;

注意:

(1)使用端口的中断功能期间,如果进行PxIN、PxOUT等操作可能使中断变化。


(2)中断标志需要软件清零。有一种情况例外:两个中断同时发生,先响应优先级高的中断,当该中断服务程序结束后,该位的中断标志会自动清零,然后去响应另外一个中断。


PxIE中断使能寄存器


低电平表示中断关闭;

高电平表示中断允许;

PxIES中断触发方式选择寄存器


低电平表示上升沿触发;

高电平表示下降沿触发;

#include

/**

 * main.c

 * 采用中断的方式,开关P2.1控制LED--》P1一个一个点亮

 */ 

int s=0;//s用来表示按键次数

int num =0;//num表示LED值

int main(void)

{

WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer

P1DIR=0XFF;//P1全部接输出

P1OUT=0X00;//接LED初始化故全拉低,这样开始灯是灭的

P2DIR=0X00;//P2全部设为输入,因为要接受外部中断

P2IFG=0X00;//清除P2口的中断标志

P2IE=BIT1;//P2.1开启中断

P2IES=0XFF;//P2为下降沿触发

P2IN=BIT1;//P2.1输入拉高,因此开关闭合时会拉低产生下降沿(即中断)

P2OUT=0XFF;

P2REN=0XFF;//作为输入时配置上拉电阻

__enable_interrupt();//开启中断

while(1){

    num=s%5;

    switch(num){

                case 0:P1OUT=0X04;break;

                case 1:P1OUT=0X08;break;

                case 2:P1OUT=0X10;break;

                case 3:P1OUT=0X20;break;

                case 4:P1OUT=0X40;break;

    }

}

}

#pragma vector=PORT2_VECTOR//固定格式,声明中断向量地址

__interrupt void Port_2(void)

{//中断子程序

    unsigned int temp;//局部变量

    int i;

    for(i=0;i<12000;i++);//延时消抖

    if((P2IN & 0XFF)!=0XFF){//如果有按键按下

        temp=P2IFG;//读取中断标志

        P2IFG=0X00;//标志位清零

        if(temp==0x02)//如果P2.1产生中断

            s++;

    }

}


关键字:MSP430f5529  通用I  O口  设置 引用地址:(一)MSP430f5529 通用I/O口的设置

上一篇:单片机MSP430入门--理论③--时钟模块-DCO和BCS寄存器
下一篇:MSP430使用__delay_cycles实现延时1ms和1us

推荐阅读最新更新时间:2024-11-13 23:46

带大量I/O扩展的串行芯片GM8164及其应用
1 主要特点 随着非总线型小封装单片机的大量应用,传统的总线扩展型器件已不再适用。而在单片机应用系统的接口电路中,开关量却被大量使用着,但相应的非总线扩展型I/O接口芯片的种类却比较少,很难满足需要I/O口数量较多的应用场合,GM8164是成都国腾微电子设计中心推出的串行I/O扩展器。该器件具有72个I/O口线的扩展能力,因而非常适合于需要使用大量开关量的单片机应用系统。该芯片的级联非常方便,扩展I/O口的数量几乎不受限制。GM8164主要的性能特点如下: ●扩展I/O口数量众多,可提供32位数据输入口和40位数据输出口; ●可同时提供8个开漏输出口,并能方便地进行电平转换和驱动; ●带有可达1MHz的全速率同步串行接口,能非常
[单片机]
带大量<font color='red'>I</font>/<font color='red'>O</font><font color='red'>口</font>扩展的串行芯片GM8164及其应用
STM32F4设置NVIC中断优先级分组
中断管理方法: 首先,对STM32中断进行分组,组0~4。同时,对每个中断设置一个抢占优先级和一个响应优先级值。 分组配置是在寄存器SCB- AIRCR中配置: 高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。 抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。 抢占优先级相同的中断,当两个中断同时发生的情况下,哪个响应优先级高,哪个先执行。 如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行。 中断设置相关寄存器 __IO uint8_t IP ; //中断优先级控制的寄存器组 __IO uint32_t ISER ; //中断使能寄存器组 __IO uin
[单片机]
LPC1788---串口设置
LPC1788学习之串口学习-寄存器操作 接收数据使用中断接收---发送暂时是直接发送--简单的寄存器操作-记下不忘记! #include uart_lpc1788.h uint32_t Receive_Sign; //接收数据下标--接收数据个数 uint8_t Receive_Buf ; //接收数组 /*-----------------------串口0初始化------------------*/ void Uart0_Init(uint32_t clk, uint32_t baudrate) { uint32_t tmp; uint16_t divisorInt; LPC_IOCON-
[单片机]
Part5核心初始化_lesson2---设置svc模式
我们的Linux系统以及bootloader是工作在SVC模式!!怎么把处理器设置为SVC模式呢? CPSR寄存器或者SPSR寄存器最低5位可以设置模式,把该5位设置为0b10011, start.s文件
[单片机]
Part5核心初始化_lesson2---<font color='red'>设置</font>svc模式
STM32关于BOOT0和BOOT1设置
BOOT0和BOOT1 STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 = 芯片内置的 Flash。 2)SRAM = 芯片内置的 RAM区,就是内存啦。 3)系统存储器= 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段 Bootloader,就是通常说的 ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个 ROM区。 在每个 STM32的芯片上都有两个管脚 BOOT0和 BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表: BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。 BOOT1=0 BOOT0=1 从系
[单片机]
西门子MM440变频器的参数设置及使用
一、西门子公司的变频器品种规格齐全。功率小到几百瓦,大到数千千瓦;功能从低端到高端;额定电压从低压、中压到高压;分交流变频器和直流变频器等。本章文以西门子公司的通用变频器MM440系列为例,介绍西门子变频器的使用。 (1)西门子MM440变频器西门子MM440变频器是通用型变频器,由微处理器控制,并采用绝缘栅双极型晶体管(IGBT)作为功率输出器件,它具有很高的运行可靠性和功能多样性。脉冲宽度调制的开关频率也是可选的,降低了电动机运行的噪声。 (2)西门子MM440变频器的接线MM440变频器的线路框图如图2-1所示,控制端子定义见表2-2。 MM440控制端子定义 MM440变频器的线路框图 MM440变频器的核
[嵌入式]
西门子MM440变频器的参数<font color='red'>设置</font>及使用
msp430f149的SPI设置
首先注意几个问题: 1,SPI通信时,双方的时序(相位,极性)必须一致(看后面SPI四种时序设置) 2,主机设置时钟,从机不需要设置时钟. 3,时钟引脚上,在有数据传输时,才有时钟,没有数据传输时,则没有时钟 经测试下面程序在msp430F149上实验成功,用于两个板子通信 主机: (SPI.C) #include msp430x14x.h #define USPI3ON P3SEL |= 0X0E #define USPI4ON P3SEL |= 0X0F char TxFlag=1; char RxFlag=0; void ClkInit() { char i; BCSCT
[单片机]
msp430f149的SPI<font color='red'>设置</font>
S3C44B0的系统时钟设置公式
Fpllo 为系统的主频,此处为60MHz Fin 为晶振的频率,此处为10MHz 一. 通过PLL输出时钟脉冲频率的计算: a) Fpllo = (m Fin)/ (p 2^s) b) m = (MDIV + 8) , p = (PDIV + 2), s = SDIV c) 20MHz Fpllo 66MHz d) Fpllo * 2^s 170MHz (s应该尽可能的大) e) 1MHz = Fin/p 2MHz (最好是Fin/p = 1MHz) f) 如果PLL打开则:Fpllo = Fout g) 这样计算出MDIV, PDIV, SDIV的值写入PLLCON寄存器中就可设置Fpllo的输出频率。 根据
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
更多往期活动
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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