本章介紹MSP430IO配置
前言:
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為輸出
BIT0~BIT7在#include<msp430x16x.h>被宏定義,
分别對應每組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為輸出低電平
3 PxIN寄存器用來配置輸入高低電平
PxIN寄存器用來設定IO口的輸入高低電平
當某一位為1時選擇輸入高電平
當某一位為0時選擇輸入低電平
例:
P1IN = 0X02; //設定P1.1為輸入高電平
或者
P1IN |= BIT1;//設定P1.1為輸入低電平
4 PXSEL寄存器
PXSEL寄存器用來用來配置是否複用為外設
當某一位為1時複用為外設子產品
當某一位為0時為IO引腳
例:
P1SEL = 0X02; //設定P1.1為TA0外設
或者
P1SEL|= BIT1;//設定P1.1為TA0外設
每個引腳複用需要對應引腳功能圖
5 PXIE中斷使能寄存器
PXIE中斷使能寄存器用來設定IO口是否發生中斷
隻有P1 P2兩組IO口具有中斷功能
這位置1開啟中斷
這位置0關閉中斷
例:
P1IE=0X01 //開啟P1端口中斷
6 P1IES/P2IES
P1IES/P2IES中斷邊沿選擇寄存器
為1 低到高 高電平觸發
為0 高到底 低電平觸發
例:
P1IES = 0X01 //選擇高電平觸發
7 P1IFG P2IFG
中斷标志位寄存器
為1發生中斷
為0沒有中斷
我們可以來讀取這一位來判斷是否發生中斷
注意:在設定P1OUT ,P2OUT,P1DIR,P2DIR寄存器時會設定相應的P1IFG,P2IFG标志位
每個中斷發生必須保證大于1.5倍MCLK確定中斷必須發生
8 接下來我們就來配置IO口吧
配置IO需要以下幾個步驟(個人總結)
<1>是否需要開啟中斷(針對P1 P2兩組IO,一般情況下是不需要的)
<2>PXDIR 配置方向(IO輸入輸出)
<3> PxOUT或 PxIN(輸入輸出高低電平)
<4>PxSEL(是否選擇外設 序列槽,定時器之類的)
<5>設定中斷觸發邊沿(針對P1 P2)
一般來說我們隻需要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