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