MSP430FR6989單片機學(xué)習之點亮LED

2023-06-26 15:18:09 來源:LemonTechnology

今天開始跟大家一起分享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閃爍。

標簽:

上一篇:MSP430FR6989單片機學(xué)習之系統(tǒng)時鐘-環(huán)球新動態(tài)
下一篇:最后一頁