前言:
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引脚
*/
上一篇:MSP430MSP430F5438\MSP430F5438A 操作大内存(Ram),程序跑飞F5438\MSP430F5
下一篇:MSP430 基本时钟配置
推荐阅读最新更新时间:2024-11-17 00:14
设计资源 培训 开发板 精华推荐
- STOD13CM 250 mA双DC-DC转换器典型应用
- LT8303ES5 30 至 80 Vin、12Vout 隔离反激式转换器的典型应用电路
- LTC3419IMS 双路 600mA 降压转换器的典型应用电路
- 2.1寸价签温湿度转接板
- 使用 Richtek Technology Corporation 的 RT8541 的参考设计
- try1 练习画一下5个LED的电路图
- 使用 RECOM Power GmbH 的 RSO-1212SZ 的参考设计
- LTC3417AIFE-2 双路同步 1.5A/1A 4MHz 降压型 DC/DC 稳压器的典型应用电路
- 使用 Analog Devices 的 LTC1261CS8-4 的参考设计
- 数字电压表头 200V