MSP430F149介绍文档
时间:2026-01-23
时间:2026-01-23
课程入门介绍
MSP430引脚介绍(芯片图参考数据手册第3页)
58脚RST/NMI 为430单片机的复位引脚(低电平有效)。
1脚DVCC,63脚DVSS 为数字电源接口。
64脚AVCC,62脚AVSS 为模拟电源接口。
注意:MSP430系列单片机的供电电压为1.8V~3.6V。
说明(在MSP430小系统中数字电源地与模拟电源地必须通过0欧电阻连接起来以防止数字电路产生的高频信号对模拟电路造成影响)
32脚UTXD0,33脚URXD0 的第二功能为MSP430F149单片机两路串口通讯接口中的第一路。
34脚UTXD1,35脚URXD1 的第二功能为MSP430F149单片机两路串口通讯接口中的第二路。
29脚SIMO0,30脚SOMI0,31脚UCLK0 的第二功能为MSP430F149单片机两路SPI通讯接口中的第一路。
45脚SIMO1,46脚SOMI1,47脚UCLK1 的第二功能为MSP430F149单片机两路SPI通讯接口中的第二路。
48脚 的第二功能为MSP430F149单片机MCLK(主系统时钟)的输出端
49脚 的第二功能为MSP430F149单片机 SCLK(子系统时钟)的输出端
50脚 的第二功能为MSP430F149单片机 ACLK(辅系统时钟)的输出端。
52脚,53脚 为外部高频时钟晶振输入端(程序中说明一般用XT2CLK或HF XTAL表示)。
8脚, 9脚 为外部低频时钟晶振输入端(程序中说明一般用LFXTICLK表示)。
59脚TA0,60脚TA1,61脚TA2,2脚A3,3脚A4,4脚A5,5脚A6,6脚A7 的第二功能为8路的内部12位ADC模拟电压输入端口。
54脚TDO/TDI,55脚TDI/TCLK,56脚TMS,57脚TCK 为JTAG接口(同时拥有仿真器和编程器的功能),用于下载程序并实现硬件在线仿真。
具体引脚功能参考《MSP430英文数据手册.pdf 》 8页
I/O口的操作
P1~P6的公有寄存器位为PXSEL,PXDIR,PXOUT,PXIN。
其中P1,P2相对于P3,P4 ,P5,P6还多出了3个寄存器PXIE,PXIES,PXIFG,这三个寄存器是用于设置开启P1,P2的外部触发中断使用的(其中X可以为1,2,3,4,5,6)。
查看以上I/O口寄存器请参考MSP430x1xx 系列用户使用手册.pdf的191页。
以上各寄存器功能介绍(以P3.4为例):
① P3SEL用于功能选择,当其置0选择的是普通I/O口功能,置1选择的是第二功能;
比如32脚UTXD0对应P3.4,33脚URXD0对应P3.4
P3SEL &= ~BIT4;// 该程序是将P3.4置0,此时该引脚只具有普通I/O口功能
P3SEL |= BIT4;// 该程序是将P3.4置1,此时该引脚将具有异步串口通信功能
② P3DIR是用于设置I/O口输出方向的
P3DIR &= ~BIT4; //该程序是将I/O口的方向设置为输入(一般用于读取数据时)
P3DIR |= BIT4; //该程序是将I/O口的方向设置为输出
③ P3OUT是用于设置I/O口输出高低电平的
P3OUT &= ~BIT4; ///该程序是使该I/O口输出高电平
P3OUT |= BIT4; ///该程序是使该I/O口输出低电平
④ P3IN是用于读取外部输入到该引脚
使用该寄存器前必须将P3DIR置0
比如设置一个变量unsigned char A用于存储从P3IN的第4位读取的值,程序如下
P3DIR &= ~BIT4;
A=P3IN;
入门小程序(LED灯闪烁):
#include<msp430x14x.h> //引入所需头文件
int i=0,j=0; //申明需使用的全局变量并初始化用于延时
void Delay(); //申明子程序
void main() //构建主程序
{
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗(调试时必须关闭看门狗) P3SEL &= ~BI4; //选择P3.4作为普通I/O口功能
P3DIR |= BIT4; //将P3.4设置为输出方向
P3OUT |= BIT3; //使P3.4输出高电平(实验板上初始化灯的状态为熄
//灭)
while(1) {
P3OUT ^= BIT4; //灯的状态取反
Delay(); //调用延时子程序
}
}
/*******以下是一个不精确的延时子程序********/
void Delay(){
for(i=0;i<1000;i++)
for(j=0;j<110;j++);
}
将该程序烧入MSP430测试,看现象。
开发板给出的源码程序通常使用以下程序作为延时程序
i=50000;
do(i--);
while(i!=0);
或
i=50000;
do
{
i--;
}
while(i!=0);
如果一个程序只是用于流水灯,交通灯,那么延时或许不重要,但如果你需要操作外设比如液晶LCD或其他对时序要求比较严格的器件时,精确延时就显得尤其重要了。
…… 此处隐藏:109字,全部文档内容请下载后查看。喜欢就下载吧 ……