
今天開始跟大家一起分享MSP430FR6989的系列教程
(資料圖片)
教程用到的硬件平臺:TI官方的MSP430FR6989 LaunchPad
編譯器:IAR ForMSP430。
廢話不多說,直接上干貨。
1,MSP430FR6989的概述
高達 16MHz 的 16 位 RISC架構(gòu)優(yōu)化的超低功耗模式高達128KB的FRAM五個16位定時器,7個捕捉/比較日歷和鬧鐘功能的 RTC16位和32位CRC校驗(CRC16、CRC32)16個外部通道的12位ADC集成 LCD 驅(qū)動器增強型串行通信(UART、IIC、SPI)靈活的時鐘系統(tǒng)(DCO、VLO、LFXT、HFXT)AES安全加密、ESI等等2,基本運算符的回顧
對于寄存器的操作,大部分就是 &、|、~的操作,這里我們簡單回顧一下。
與 & :與 相當于“乘”,任何數(shù)乘以0,都等于0,只有1與1才是1
與是拉成0;a & 0x1f 就是把a的高三位拉成0,別的位不變。
與0 會拉成0 與1 不變
或 | :或 相當于“加”,任何數(shù)加上1,都等于1,只有0或0才是0
或是拉成1;a | 0x1f 就是把a的低五位拉成1,別的位不變。
或1 會拉成1 或0 不變
取反~:所有的位都進行 非 運算。
3,寄存器配置IO口點亮LED
msp430的IO采用傳統(tǒng)8位端口,每個IO口控制8個IO引腳。寄存器中的每一位對應(yīng)一個IO引腳,實現(xiàn)該引腳的獨立控制。如下:
寄存器PxDIR為方向控制寄存器,比如我們要控制P13口的方向為輸出,我們可以直接操作寄存器 P1DIR |= 0x08;把第三位置1,別的位保持不變,這樣可以實現(xiàn)P13引腳的獨立控制。在官方頭文件中,其實已經(jīng)定義第三位BIT3=0x80;所以配置P13方向代碼我們可以直接如下配置:
P1DIR |= BIT3;
IO口的基礎(chǔ)寄存器包括以下四個:
PxDIR :0--端口輸出低電平,1--端口輸出高電平。
PxIN :0--端口輸入低電平,1--端口輸入高電平。
PxOUT:端口輸入輸出方向。0--輸入,1--輸出。
PxREN:0--禁止使能上下拉電阻,1--使能上下拉電阻。
PxOUT決定拉電阻是上拉還是下拉。
IO口解鎖:
要想使配置完成的IO口生效, 必須從LPMx.5退出。在一個電源循環(huán)之后,IO引腳是被鎖定在高阻狀態(tài)下,必須由軟件清零,解鎖IO口配置。解鎖寄存器如下:
PM5CTL0 &= ~LOCKLPM5;
開發(fā)板中的led部分原理圖如下:
我們要點亮LED,只需要P10和P97引腳置1即可。
4,代碼實現(xiàn)
#include "io430.h"int main( void ){ unsigned int i; /* 關(guān)閉看門狗*/ WDTCTL = WDTPW | WDTHOLD; P1DIR |= BIT0; // 設(shè)置P10方向為輸出 P1OUT |= BIT0; // P10輸出為1,點亮LED1 P9DIR |= BIT7; // 設(shè)置P97方向為輸出 P9OUT |= BIT7; // P97輸出為1,點亮LED2 PM5CTL0 &= ~LOCKLPM5; // 使配置完成的IO口生效, 從LPMx.5退出 while(1) { P9OUT |= BIT7; // 點亮LED2 for(i = 0; i < 30000; i++); // 延時作用 P9OUT &= ~BIT7; // 關(guān)閉LED2 for(i = 0; i < 30000; i++); // 延時作用 } return 0;}
代碼下載進去就可以看到LED1點亮,LED2閃爍。
標簽: