历史上的今天
今天是:2025年01月19日(星期日)
2021年01月19日 | MSP430 IO口配置
2021-01-19 来源:eefocus
前言:
IO作为单片机的重要组成部分是不可或缺的,也是必须要掌握的,掌握了IO就学会了单片机的基本使用
所有对于430单片机的操作需要紧随用户开发手册和指导手册进行
MSP430有多达6组IO口P1~P6,每组有8个IO口(相对于STM32F4/F7/F1系列来说比较少),每组IO口都可以单独设置输入输出状态,设置读写。
需要注意的是对于430F169这款芯片P1和P2是具有中断的,可以选择在输入信号上升沿或者下降沿触发中断
不过本章并不进行P1P2中断的介绍
配置IO口功能需要设置PXIN,PXOUT,PXDIR,PXSEL寄存器
1 PXDIR寄存器
PXDIR寄存器用来设置IO口的输出方向
当某一位为1时选择输出
当某一位为0时选择输入
例:
P1DIR = 0X02; //设置P1.1为输出 或者 P1DIR |= BIT1;//设置P1.1为输出123
BIT0~BIT7在#include 3 PxIN寄存器用来配置输入高低电平 4 PXSEL寄存器 每个引脚复用需要对应引脚功能图 6 P1IES/P2IES 7 P1IFG P2IFG 注意:在设置P1OUT ,P2OUT,P1DIR,P2DIR寄存器时会设置相应的P1IFG,P2IFG标志位 8 接下来我们就来配置IO口吧 一般来说我们只需要2,3,4三组步骤就可以使用IO 9 接下来我们进入实战吧 代码开发 /渃畔*/ #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
分别对应每组IO的PX.0~PX.7(X=1/2/3/4/5/6)
2 PxOUT寄存器用来配置输出高低电平
PxOUT寄存器用来设置IO口的输出高低电平
当某一位为1时选择输出高电平
当某一位为0时选择输出低电平
例:P1OUT = 0X02; //设置P1.1为输出高电平
或者
P1OUT |= BIT1;//设置P1.1为输出低电平123
PxIN寄存器用来设置IO口的输入高低电平
当某一位为1时选择输入高电平
当某一位为0时选择输入低电平
例:P1IN = 0X02; //设置P1.1为输入高电平
或者
P1IN |= BIT1;//设置P1.1为输入低电平123
PXSEL寄存器用来用来配置是否复用为外设
当某一位为1时复用为外设模块
当某一位为0时为IO引脚
例:P1SEL = 0X02; //设置P1.1为TA0外设
或者
P1SEL|= BIT1;//设置P1.1为TA0外设123

5 PXIE中断使能寄存器
PXIE中断使能寄存器用来设置IO口是否发生中断
只有P1 P2两组IO口具有中断功能
这位置1开启中断
这位置0关闭中断
例:P1IE=0X01 //开启P1端口中断1
P1IES/P2IES中断边沿选择寄存器
为1 低到高 高电平触发
为0 高到底 低电平触发
例:P1IES = 0X01 //选择高电平触发1
中断标志位寄存器
为1发生中断
为0没有中断
我们可以来读取这一位来判断是否发生中断
每个中断发生必须保证大于1.5倍MCLK确保中断必须发生
配置IO需要以下几个步骤(个人总结)
<1>是否需要开启中断(针对P1 P2两组IO,一般情况下是不需要的)
<2>PXDIR 配置方向(IO输入输出)
<3> PxOUT或 PxIN(输入输出高低电平)
<4>PxSEL(是否选择外设 串口,定时器之类的)
<5>设置中断触发边沿(针对P1 P2)
/*
芯片: MSP430F169
功能: 使用IO点亮LED
芯片8/9引脚外接8MHZ晶振作为时钟
led接P6.4引脚
*/
史海拾趣
|
源代码如下,在模拟环境上,是可以正常运行的,可是烧到板子上,就开不了机了! #include unsigned long data1; int bitcnt; bit Power_flag,Key_flag; sbit P12=P1^2; sbit LED =P1^1; sbit Power=P0^0; sbit Reset=P1^4; //定时 ...… 查看全部问答> |
|
请教高手:USB型MSP430仿真器LSD-FET430UIF USB仿真器 新买的USB仿真器,按照说明书装好驱动,电脑的设备管理器里也认出。Debugger也选了FET Debugger,FET Debugger里也选了TI USB FET。可是下载程序的时候就会出现找不到设备,不知道是什么原因,求教!另外,用并口的仿真器是OK的!故而很疑惑!是仿 ...… 查看全部问答> |
|
【晒心得】+CC2541和TI estore购物异常处理流程以及意外惊喜 最近对蓝牙编程感兴趣,赶上TI促销,为调试方便,就注册了两个TI帐号,买了两块CC2541。其中一块从美国发货的很快就收到了,但另一块TI发送的订单已发出邮件上未给出快递号码,跟踪不到。 等了一周后感觉有问题,因同 ...… 查看全部问答> |
|
前一段整理了一个。获得了大家的关注和好评,现在本人再接再厉,将目前已经正式出版的STM32系列图书汇总一下,大家可以作为参考学习的资料。 专题整理办法:主帖贴里面列出图书名称,在跟楼贴里列出图书的简介和目录。 ...… 查看全部问答> |
|
【STM32F7英雄联盟大赛】多功能测试仪器-器件PCB最终确定 经过近一个月的努力,最终器件终于确定了。整个器件多数使用能申请到样片的器件,主要有LT,ADI,TI的,以前记得MICROCHIP也能申请,但好像最近不行了。 万用表部分目标是5位半精度,主要是JACK和cat的功劳: 万用表部分1ADS1256IDBR1SSOP28_5 ...… 查看全部问答> |




