TI MPS430 FR2311 - GPIO

更新 發佈閱讀 6 分鐘

---------------------------------------------------
這裡是程式新手專區 🧩
G蛋也不是資工系專業出生🫣
都是自己在業界摸索出來的 🛠️
因此程式不會是最優化、最優秀
但也生存得下來😆
就分享給需要的人用
---------------------------------------------------
IDE: TI CCS 20.3.0
--------------------------------------------------

GPIO 為最基礎功能之一
主要分Input跟Output

Ex:
Input : 按鈕
Outout : LED燈開關


#include <msp430.h>
#include <stdint.h>

//GPIO Part---------------------------------------------------------------------

/* --- 只做一般 GPIO ---
 * - 解除 FRAM 裝置的高阻態鎖 (PM5CTL0)
 * - P1.0、P2.0 設為輸出,初始為 Low
 * - 清除可能殘留的 Port 中斷旗標
 */

static void P1_0_Switch(uint8_t value){
    if(value==1)
        P1OUT |= BIT0;// 把 P1.0 設成 1 → 腳位輸出 High
    else
        P1OUT &=~BIT0;// 把 P1.0 設成 0 → 腳位輸出 Low
}

static void P2_0_Switch(uint8_t value){
    if(value==1)
        P2OUT |= BIT0;// 把 P2.0 設成 1 → 腳位輸出 High
    else
        P2OUT &=~BIT0;// 把 P2.0 設成 0 → 腳位輸出 Low
}



static void gpio_output_init(void){
    P1DIR |= BIT0;          // P1.0 output
    P1OUT &= ~BIT0;         // 初始 Low

    P2DIR |= BIT0;          // P2.0 output
    P2OUT &= ~BIT0;         // 初始 Low

    P1IFG = 0;              // 清 Port IFG(保險)
    P2IFG = 0;
}



static void gpio_input_init(void){
    // P1.1 當按鈕:內部上拉、下降緣中斷
    P1DIR  &= ~BIT1;               // Input
    P1REN  |=  BIT1;               // 啟用上/下拉
    P1OUT  |=  BIT1;               // 上拉
    P1IES  |=  BIT1;               // 高->低(按下)觸發
    P1IFG  &= ~BIT1;               // 清旗標
    P1IE   |=  BIT1;               // 開中斷
}



//=================== 中斷 ===================
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void){

    if (P1IFG & BIT1) {
        P1IFG &= ~BIT1;
        P1IE  &= ~BIT1;         // 先關中斷避免彈跳重入

        P1_0_Switch(1);
        P2_0_Switch(1);

        // 重新設定下降緣(避免鬆開的上升緣誤觸)

        P1IES  |=  BIT1;        // 高->低
        P1IFG  &= ~BIT1;
        P1IE   |=  BIT1;        // 再次開啟按鈕中斷
    }
}



int main(void){

    WDTCTL = WDTPW | WDTHOLD;               // Stop watchdog timer
    PM5CTL0 &= ~LOCKLPM5;                   // 解除高阻態,讓 GPIO 可用

    //GPIO Init
    gpio_output_init();         // P1.0 P2.0 Outout
    gpio_input_init();          // P1.1 按鈕 input

    __enable_interrupt();      // 全域中斷

    while(1){
        __no_operation();
    }
}


有不清楚地可以在留言區留言
大家可以來討論
之後也會用 YT影片(@GGEggProgramming)的方式來說明內容及驗證


================
有其他MCU或是功能想知道怎麼開發
也可以留言讓G蛋知道
G蛋若能力能即盡量幫忙🤣

留言
avatar-img
留言分享你的想法!
avatar-img
臭G蛋的馬蹄刃
2會員
32內容數
一個路過的代碼騎士,穿梭在各個世界學習。 另外 分享自我學習的心得, 分享主要工作中關於 物聯網、專案管理、綠能、碳排放 相關知識與心得與可實踐的專業內容。 持續學習,也持續分享。
你可能也想看
Thumbnail
本週報告有聊到MCU公司,所以把舊報告搬到這邊,並做部份開放供參考~
Thumbnail
本週報告有聊到MCU公司,所以把舊報告搬到這邊,並做部份開放供參考~
Thumbnail
券商報告-1/4閱讀重點整理,今天花時間整理新唐這檔個股,希望大家多多支持!Cheers!
Thumbnail
券商報告-1/4閱讀重點整理,今天花時間整理新唐這檔個股,希望大家多多支持!Cheers!
Thumbnail
電子產業_半導體_IC設計_MCU微控制器_有發行可轉債
Thumbnail
電子產業_半導體_IC設計_MCU微控制器_有發行可轉債
Thumbnail
眾所皆知,蜘蛛人新宇宙是一個講述多元平行宇宙的故事,裡面參與的宇宙除了故事裡的原創宇宙,更連結了猛毒宇宙、樂高宇宙,甚至提到了前兩代蜘蛛人電影、漫畫正史事件,蜘蛛人2099也親切的「問候」了荷蘭弟蜘蛛人,那麼問題來了,這些都可以視為該電影的正史嗎?又或反過來問,這部電影也算作那些作品的正史嗎? 網
Thumbnail
眾所皆知,蜘蛛人新宇宙是一個講述多元平行宇宙的故事,裡面參與的宇宙除了故事裡的原創宇宙,更連結了猛毒宇宙、樂高宇宙,甚至提到了前兩代蜘蛛人電影、漫畫正史事件,蜘蛛人2099也親切的「問候」了荷蘭弟蜘蛛人,那麼問題來了,這些都可以視為該電影的正史嗎?又或反過來問,這部電影也算作那些作品的正史嗎? 網
Thumbnail
公司介紹 新唐科技成立於2008年4月,從華邦電子邏輯IC部門分割出來為獨立公司,主要產品為32位元ARM SoC平台開發。公司目前已開發出一系列32位元完整ARM7和ARM9系列控制晶片,是大中華區以ARM處理器為基礎之系統單晶片(SoC)的供應商。 2022年第四季,產品應用方面,電腦占14%、
Thumbnail
公司介紹 新唐科技成立於2008年4月,從華邦電子邏輯IC部門分割出來為獨立公司,主要產品為32位元ARM SoC平台開發。公司目前已開發出一系列32位元完整ARM7和ARM9系列控制晶片,是大中華區以ARM處理器為基礎之系統單晶片(SoC)的供應商。 2022年第四季,產品應用方面,電腦占14%、
Thumbnail
除了《黑豹2:瓦干達萬歲》(Black Panther: Wakanda Forever)以外,連同11月25日於Disney+上架的《星際異攻隊聖誕特別篇》(The Guardians of the Galaxy Holiday Special),由電影《黑寡婦》開始的Marvel電影宇宙的…
Thumbnail
除了《黑豹2:瓦干達萬歲》(Black Panther: Wakanda Forever)以外,連同11月25日於Disney+上架的《星際異攻隊聖誕特別篇》(The Guardians of the Galaxy Holiday Special),由電影《黑寡婦》開始的Marvel電影宇宙的…
Thumbnail
這次的BGM-Emmy Meli - I AM WOMAN對我來說很重要,可以按重複播放一邊看一邊聽 被鷹眼第五集炸出來的百合車文,等不到下週下週完結就先寫了
Thumbnail
這次的BGM-Emmy Meli - I AM WOMAN對我來說很重要,可以按重複播放一邊看一邊聽 被鷹眼第五集炸出來的百合車文,等不到下週下週完結就先寫了
Thumbnail
本篇完全不會提到任何一部電影的劇情(這很重要XD)。我之所以寫下這篇,是因為從我看 Endgame 之前、看的當下,到看完之後,有些思緒不斷在腦中轉來轉去,就想說乾脆寫出來作為紀念,內容主要聊聊漫威對我們的影響。
Thumbnail
本篇完全不會提到任何一部電影的劇情(這很重要XD)。我之所以寫下這篇,是因為從我看 Endgame 之前、看的當下,到看完之後,有些思緒不斷在腦中轉來轉去,就想說乾脆寫出來作為紀念,內容主要聊聊漫威對我們的影響。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News