历史上的今天
返回首页

历史上的今天

今天是:2025年02月04日(星期二)

2021年02月04日 | (一)MSP430f5529 通用I/O口的设置

2021-02-04 来源:eefocus

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++;

    }

}


推荐阅读

史海拾趣

捷茂微(GATEMODE)公司的发展小趣事

机顶盒,全称为数字视频变换盒,是连接电视与外部信号源的关键设备,其专业性与科普性并重。作为现代家庭娱乐不可或缺的一部分,机顶盒不仅实现了数模转换功能,让用户在模拟电视机上也能观看数字电视,还通过不断的技术创新,丰富了用户的视听体验。

从广义上讲,机顶盒涵盖了从模拟频道增补器到数字卫星综合接收解码器(IRD)、有线电视数字机顶盒等多种类型。而从狭义上看,主要聚焦于数字设备,如数字卫星机顶盒(DVB-S)、数字地面机顶盒(DVB-T)及IPTV机顶盒等。这些机顶盒能接收来自有线电缆、卫星天线、宽带网络及地面广播的信号,并将其转换为电视机可识别的音视频格式,实现高清甚至4K超高清的播放效果。

随着互联网的普及,网络机顶盒更是成为连接电视与互联网的桥梁。它不仅提供传统的电视节目服务,还通过集成智能技术,实现了语音助手、智能推荐等功能,极大提升了用户体验。此外,网络机顶盒还能接入各种流媒体平台,让用户在电视上观看在线视频、玩游戏、浏览网页等,实现了电视功能的多元化和智能化。

综上所述,机顶盒以其强大的功能和不断的技术创新,成为现代家庭娱乐的重要组成部分,为用户带来了更为丰富、便捷、智能的视听享受。

Chiefdom Electronic Co Ltd公司的发展小趣事

在市场竞争日益激烈的情况下,Chiefdom Electronic Co Ltd注重创新营销策略,以吸引更多消费者的关注。公司推出了一系列具有针对性的广告宣传活动,利用社交媒体、网络直播等新媒体渠道进行广泛传播。同时,公司还积极参与各类电子展会和论坛,展示其最新技术和产品,与潜在客户建立联系。这些创新营销策略使得公司的品牌知名度和美誉度不断提升,进而带动了销售业绩的稳步增长。

Conditioning Semiconductor Devices Corp公司的发展小趣事

随着全球环保意识的提高,半导体行业也面临着环保和可持续发展的挑战。CSDC积极响应这一趋势,将环保理念融入公司的生产和运营中。通过采用环保材料和工艺,减少生产过程中的污染排放,CSDC不仅降低了对环境的影响,还提升了企业的社会形象。同时,公司还积极参与环保公益活动,推动半导体行业的绿色发展。

这些故事展示了半导体设备公司可能经历的一些关键发展阶段和面临的挑战。虽然这些故事是虚构的,但它们基于半导体行业的现实背景和趋势进行构建,具有一定的参考价值。

Amptek Inc公司的发展小趣事

随着半导体行业的竞争加剧,价格战和技术更新速度不断加快。CSDC面临着巨大的市场压力。为了应对这些挑战,公司决定调整战略,专注于高端市场的开发。通过加大研发投入,提升产品质量和性能,CSDC逐渐在高端市场站稳了脚跟,实现了业务的稳步增长。

Allegro公司的发展小趣事

随着半导体行业的竞争加剧,价格战和技术更新速度不断加快。CSDC面临着巨大的市场压力。为了应对这些挑战,公司决定调整战略,专注于高端市场的开发。通过加大研发投入,提升产品质量和性能,CSDC逐渐在高端市场站稳了脚跟,实现了业务的稳步增长。

ACL staticide公司的发展小趣事

随着半导体行业的竞争加剧,价格战和技术更新速度不断加快。CSDC面临着巨大的市场压力。为了应对这些挑战,公司决定调整战略,专注于高端市场的开发。通过加大研发投入,提升产品质量和性能,CSDC逐渐在高端市场站稳了脚跟,实现了业务的稳步增长。

问答坊 | AI 解惑

过滤口罩常见使用问题

问题1:是不是越小的粉尘,越难被口罩过滤呢?   解答:一般而言,我们会以为越小的粉尘越难被过滤,但这是个似是而非的观念,以过滤理论而言,主要有五种过滤粉尘的方法:(1)布郎运动[Brownian Diffusion]-对越小的粒子,效应越强。(2)拦 ...…

查看全部问答>

来聊聊你与MP3的情缘吧!——MP3播放板等你拿

  因为参加古道热肠家宝宝的猜画名活动(https://bbs.eeworld.com.cn/thread-106370-1-1.html), 喜获古道热肠赠送的MP3模块,在这里非常感谢古道热肠。 因为留在手里,不如把他发给最适合他的人,遂开展此活动,将这一块MP3模块赠出,具 ...…

查看全部问答>

wince 修改内存大小后standby起不来。

bsp本来的内存是64M的,现在改成了128M,系统是可以运行,只是正常的standby功能,起来一部分就停住了。希望高手指点…

查看全部问答>

ADS编译错误,大虾指教!

初学嵌入式编程,lpc2132下串口,写了一个清空FIFO的函数: void CLEAN_FIFO_U0() {     uint8 temp;     if(!(U0LSR&0x01)) return;     while(U0LSR&0x01)         temp = U0 ...…

查看全部问答>

有人做过WHQL认证吗?

我的NDIS中间层驱动要在64位Windows 7上使用,是不是必须要有WHQL认证?怎么才能取得这个认证?…

查看全部问答>

请问:能够将编码器通过增速机构链接到电机轴,提高编码器的等效分辨力?

请问:能够将编码器通过增速机构链接到电机轴,提高编码器的等效分辨力? 有哪位大侠这样用过么?效果如何?…

查看全部问答>

430汇编求助!

149汇编程序。 Q03142 MOV.W 0xD0E4, R6 Q03146 AND.W 0xD2E0, R6 Q0314A BIS.W R6, 0xD2BC 求助上面的地址0xD0E4,0xD2E0,0xD2BC 代表的是上面意思啊? 在149中RAM ...…

查看全部问答>

请教一个 关于时钟发生器的问题

大家好: 最近在看时钟发生器,我是新手,看的是ADI公司的AD9517,文档介绍说时钟发生器,可以采用外部VCO输入,我想问下,这个外部VCO输入是不是通过CLK管脚输入的。 还有就是PLL的1路差分或2路单端基准输入基准监控功能,有什么作用。 还有就 ...…

查看全部问答>

什么是格雷码(Gray Code),为何如何使用格雷码

格雷码(英文:Gray Code, Grey Code,又称作葛莱码,二进制循环码) 是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的一种编码,是一种绝对编码方式。 典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机 ...…

查看全部问答>