娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月17日(星期六)

2020年05月17日 | 關于msp430系列單片機的一些入門心得(新手向)

發布者:游走人間 來源: eefocus關鍵字:msp430系列  單片機  入門心得 手機看文章 掃描二維碼
隨時隨地手機看文章

關于msp430的特點


msp430系列單片機是一款16位的單片機,51單片機為8位,stm32系列為32位,顧名思義, 位數越高代表著該單片機處理數據的能力越快,性能也就越高。那么32位機器處理性能好,8位機器廉價性價比高,我們為什么要選擇一個中間位置的16位單片機呢。它的亮點在于它的超低功耗


字面意思,超低功耗就是這塊板子有一個低功耗模式,進入低功耗模式之后就可以長時間極少耗損地待機,定時喚醒cpu進行工作,在能量來源很少的情況下是很有必要節約能量的。


利用官網資料

本單片機是ti公司開發的產品, 所以想要獲得其資料的最好地方就是ti官網

,在搜索欄直接搜索產品型號MSP-EXP430F5529LP, 里面有產品的各種資料,超級有用的用戶指南(user‘s guide)也在這里,雖然是全英文的,但是只要有點英語水平靜下心來慢慢看,會有很大收獲的。

用戶指南=手把手教你入門本產品


環境搭建

該單片機使用較多的編程環境有IAR和CCS。本人使用的是ccs所以對其進行講解。

Code Composer Studio (CCS) 可以在官網下載,直接搜索即可。

由于msp430單片機內部集成了仿真器, 所以直接通過usb連接到電腦就可以進行硬件仿真,非常方便。


有一個小問題可能太簡單了所以當時遇到的時候并沒有搜索到答案:

仿真的同時代碼就已經燒錄到了板中, 此時板子只要供電,就可以自動執行代碼。


學習路線

目前可以說是準備工作都結束了,可以進行調試了。


以下為本人的學習路線,供大家參考


熟悉基本操作, 操作IO口,跑馬燈。

學習中斷的原理,練習使用中斷。

學習定時器原理,練習使用定時器產生pwm波。

練習使用定時器中斷

操作各種外設,模塊。

接下來我會簡單概述一下這個幾個部分,詳細的大家可以看看其他大神的文章,講的都很詳細。


基本操作

由于本人是從51過度過來,所以會對比51單片機的語法來寫一下一部分。


操作模式和51單片機類似,都可以進行位操作,操作相應的GPIO口就能進行相應的控制

我們來看一下下面的代碼:



//51的位操作

sbit P10=P1^0;

void main()

{

P1^1 = 1;// P1^1進行拉高

while(P10 == 1); //判斷P1^0信號

}


//msp430的位操作

void main()

{

P1DIR |= BIT1;//P1^1  GPIO設置為 OUT模式

P1OUT |= BIT1;// P1^1 進行拉高

P1DIR &=~BIT0;//P1^0  GPIO設置為 IN模式

while(P1IN & BIT0);  //判斷P1^0信號

}


想要去給我們的msp430寫代碼,首先要熟悉這種操作方式,我們不能直接對應一個位去賦值了,而是要使用這種’|=‘,’&=~‘進行賦值操作(對按位與& 和按位或| 不熟悉的朋友需要去了解一下了)。

MSP430 是雙向IO口 ,從51轉過來的朋友要熟悉去主動設置GPIO口的輸入/輸出。


另外在使用ccs進行操作的時候,有很多宏定義需要去熟悉, 比如BIT0 =00000001,BIT3=0000010。

如果想要同時拉高/拉低多個io口,可以使用這樣的方法: P1OUT |= BIT0+BIT3。P1OUT &=~(BIT0+BIT3);

還有一些特殊的比如CCIE, OUTMOD_x,MC_x等等,需要大家多多熟悉了。


這一部分了解之后, 我們就可以操作很多外設了,跑馬燈什么的完全不在話下。


中斷操作

MSP430 這個單片機的中斷操作很有趣,每一個IO口都可以是一個中斷觸發位,只要開啟了中斷允許位PxIE, 該IO口觸發之后就會進入中斷,

每一個IO口 P1.0~ P1.7會觸發 同一個中斷,P1中斷:


#pragma vector=PORT1_VECTOR

__interrupt void Port1 (void) //port1 即P1

{

}


同理P2.0~P2.7 會觸發P2中斷, Px.0-Px.7會觸發Px中斷。


我們還可以進行判斷是哪一位IO口觸發的中斷, 這時就需要判斷中斷標志位 ‘IFG’。

在使用中斷后,需要清除中斷標志位(定時器中斷除外),否則中斷會持續進行,導致程序卡死。


貼上一段代碼,大家感受一下



#include

unsigned int a ;

void init();

void main(void)

{

   WDTCTL=WDTPW+WDTHOLD;

   init();

       while(1)

           {

              P1OUT = 0;    //P1置0

              a = P1IN;     //讀取P1輸入

              if(a&BIT3)

              {

                  P1OUT = BIT0;  //P1.0置1

              }

           }


   }


#pragma vector=PORT1_VECTOR

__interrupt void Port1 (void)

    {

        if(P1IFG&BIT3)//判斷的是P1.3 產生的中斷。

        {

            P1IFG=0x00;//清0 中斷標志位

            P4OUT^=BIT7; //P4.7置1

        }

    }



void init()

{

    P1IE|=BIT3;   //P1^3 中斷使能

    P1DIR |=(BIT0);              // 設置 P1.3為輸出

    P4DIR |=(BIT7);              // 設置 P4.7為輸出

    __enable_interrupt();    //開啟總中斷

}


除此之外,還有一些特殊中斷位,比如用定時器的捕獲比較器輸出pwm波時,TACCR0-TACCR4分別對應P1.1-P1.5

使用時需要開啟特殊中斷位 PxSEL 這個可以等到看完定時器后再進行理解。


定時器

關于定時器的操作比較復雜,常用的大概包括:

1.時鐘源的選擇 TASSELx

2.分頻控制 IDx

3.工作模式 MC

4.中斷使能 TAIE

5.中斷標志 TAIFG

6.捕獲/比較器 TACCRx

7.輸出模式 OUTMODx


詳細的可以翻一翻站內資源,有關于定時器寫的非常詳細的文章,反復看反復實踐,就能快速掌握。


貼上一段代碼大家感受一下


//定時器中斷LED閃爍

#include


void init()

{

      TA0CCTL1=CCIE;     //開啟捕獲比較器1中斷

      TA0CCR1=50000;        //置入要比較的數值     

      TA0CTL|=TASSEL_1+MC_2+TAIE;//選擇SCLK時鐘,使用連續模式,開啟定時器中斷

     __enable_interrupt();    //開啟總中斷

}

void main(void)

{

   WDTCTL=WDTPW+WDTHOLD; //關閉看門狗

   P4DIR|=BIT7;

   P1DIR|=BIT0; //P1.0 為輸出方向

   P1OUT=0x00;        //初始化LED

   P1OUT = BIT0;

   init();

   while(1);

           

}

#pragma vector=TIMER0_A1_VECTOR

__interrupt void TimerA(void)

{

       init();

       P1OUT ^= BIT0;

}


下面貼一個定時器產生pwm波的代碼,用到了上面說到的特殊中斷位


//在P1.3產生pwm波

#include


void main(void)

{

  unsigned int PWMPeriod = 21000; //設置PWM周期

  WDTCTL = WDTPW + WDTHOLD;   // 關閉看門狗

  P1DIR |=BIT3;              // 設置 P1.3為輸出

  P1SEL |=BIT3;              // 設置 P1.3為TA0.2輸出(特殊中斷位)

  TA0CCR0 = PWMPeriod;           // 設置PWM 周期

  TA0CCTL2 = OUTMOD_7;           // 設置PWM 輸出模式7                            

  TA0CTL= TASSEL_2 +MC_1;    // 設置定時器A的時鐘源為SMCLK, 工作模式為1,從0到CCR0重復計數

  TA0CCR2=1000;              //設置捕獲比較器2, 當計數達到CCR2時觸發特殊中斷位 P1.3

  __enable_interrupt();    //開啟總中斷

  while(1);


}


關于定時器真的有好多需要學習,本人也沒有把每一部分完全學明白,等真正用到的時候再回去翻閱。


關于實際應用

學一個東西的目標不是把這個東西學通學透,而是用這個東西達到自己的目的,學通學透只是附加品而已。

邊學邊用,邊用邊學才能有成效。


下面我將簡單舉幾個例子說一下哪些東西用到了哪部分的知識,哪部分的知識能用來做什么。


簡單的方案有很多,我只指出最麻煩的方法方便大家練習/思考

1.流水燈: 基本操作+定時器


這個就很簡單了,還可以用delay函數代替定時器,方法有很多,主要可以用來練手。


2.按鍵調速電機: 基本操作+定時器+中斷


定時器產生pwm波,特殊中斷io口輸出pwm ,通過按鍵產生中斷調整pwm參數實現調速。


3.舵機控制 : 基本操作+定時器


這個和第二個原理相同,可以同時操作


4.LCD1602/12864:基本操作


從頭到尾自己手動寫一遍的話,會對賦值等有更大的理解,代碼敲起來也會更加熟練。


5…


結尾

本人的學習過程差不多就是這樣,希望文章能給各路新手們起到引導作用。本人也還是新人一枚有很多不懂的地方,知識面也很窄,希望大神們多多批評指正。本人也會不斷學習前進,朝著大神的方向前進的。

關鍵字:msp430系列  單片機  入門心得 引用地址:關于msp430系列單片機的一些入門心得(新手向)

上一篇:單片機 MSP430 獨立按鍵檢測
下一篇:MSP430 BootLoader移植

推薦閱讀

  北京時間05月15日消息,863計劃新材料技術領域課題“柔性基板材料及柔性顯示關鍵技術研究開發”通過技術驗收 2018年5月5日,科技部高技術研究發展中心在武漢組織了國家863計劃新材料技術領域“柔性基板材料及柔性顯示關鍵技術研究開發”課題驗收。下面就隨嵌入式小編一起來了解一下相關內容吧。  課題突破了用于柔性基板的聚酰亞胺漿料合成技術,設...
今天知名數碼博主@數碼閑聊站放出了一張2019年4月份中國手機3000-3999元暢銷機型的榜單圖片: 內容顯示,OPPO R17以3199元的參考價位列第一名,銷量為81萬臺,vivo X27、華為 P30以68萬臺、59萬臺的銷量分別為摘得亞軍、季軍。 從第四名到第八名的機型依次是華為Mate 20、vivo X23、華為Nova4、vivo X27 Pro、魅族16s,它們的...
前面已經將下位機部署完畢,本節將講述上位機。上位機的工作相對比較簡單,主要就是解析Hex文件,然后將數據發送到下位機。注意發送的Hex文件只能是User App,不能帶有Bootloader,否則可能會覆蓋之前的Bootloader,導致出錯。上位機源碼下載地址:https://download.csdn.net/download/u010875635/10819828上位機主要工作流程如下:1、選擇Hex文件。2、進...
來自英特爾CEO帕特?基辛格的一封信英特爾發布2020-2021年度企業社會責任報告,回顧2030年目標及進展5月13日,英特爾發布了《2020-2021年度企業社會責任報告》。去年5月,英特爾宣布了企業的2030年RISE戰略及目標,這是自目標發布以來,對目標進展情況的首次正式回顧。今年的《企業社會責任報告》著重涵蓋了英特爾過去一年在履責(Responsible),包容(Inclu...

史海拾趣

問答坊 | AI 解惑

職場沒有永遠的朋友和敵人

職場,亦如江湖。 猶記得當年涉世之初,對待每接觸的一個人每一件事物的態度仍像課 常上聽 老師的課,把一切看似自己學習的對象,謙恭有禮不夠勢必要做到唯唯諾諾才算是后輩新手應有的本分。 幾年過去,當年別人眼中的新人也成了別人眼中的前輩, ...…

查看全部問答∨

Protel資料總結

protel學習資料,希望對大家有幫助……

查看全部問答∨

求高手幫忙看下程序哪里有問題?基于arm3000

此為俄羅斯方塊,運行無錯誤 但是文本輸出沒有顯示,方塊在落下后,立即消失,無法呈現俄羅斯方塊應有的游戲效果 …

查看全部問答∨

串口接收不定長字符處理問題

單片機接收不定的長度.我想PC機到一次就當一次轉行.不管長度多少.或者我發送一次協議. 也當一次命令.…

查看全部問答∨

問ioctl各個參數怎么對應的?

模塊的ioctl段的定義函數是: int camif_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) {         camif_cfg_t *cfg = file->private_data;         struct ...…

查看全部問答∨

wince PB安裝問題

wincepb50-051231-product-update-rollup-armv4i wincepb50-061231-product-update-rollup-armv4i wincepb50-071231-product-update-rollup-armv4i 這3個補丁依次包含嗎? 是不是打07的以后就不用打上面2個了…

查看全部問答∨

用EVC5.0做繪制實時數據曲線(每秒采集一次數據),為何不能自動刷新?

用EVC5.0做繪制實時數據曲線(每秒采集一次數據),運行時為何不能自動刷新? 而在VC下編譯、運行卻沒有任何問題。…

查看全部問答∨

[EDA]VHDL實現"電子密碼鎖"

小弟是一個學生,學計算機的,學校從來沒教過硬件語言就讓做這個,而且是一星期之內,我們還要上課...我也看了相關方面的資料,有點頭緒,但是做不出來,希望有人能幫幫忙,感激不盡! 題目這樣的: 設計一個電子密碼鎖,在鎖開的狀態下輸入密碼,密碼共4位 ...…

查看全部問答∨

PCB地線干擾及抑制

在PCB設計中,尤其是在高頻電路中,經常會遇到由于地線干擾而引起的一些不規律、不正常的現象。本文對地線產生干擾的原因進行分析,詳細介紹了地線產生干擾的三種類型,并根據實際應用中的經驗提出了解決措施。這些抗干擾方法在實際應用中取得了良 ...…

查看全部問答∨

第9章 進程關系

9.1   引言 1809.2   終端登錄 1809.2.1   4.3+BSD終端登錄 1809.2.2   SVR4終端登錄 1829.3   網絡登錄 1829.3.1   4.3+BSD網絡登錄 1829.3.2 & ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 阆中市| 昭平县| 乐东| 广饶县| 泰宁县| 马龙县| 遂川县| 齐齐哈尔市| 区。| 孙吴县| 南漳县| 延庆县| 田阳县| 天祝| 阿拉善盟| 博兴县| 克拉玛依市| 改则县| 韩城市| 玉门市| 合作市| 雅安市| 安平县| 三河市| 平定县| 额济纳旗| 和静县| 沙湾县| 蕲春县| 双峰县| 景德镇市| 全南县| 营口市| 西城区| 泾川县| 南昌县| 漠河县| 英超| 峨眉山市| 枣阳市| 旬阳县|