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

歷史上的今天

今天是:2025年02月04日(星期二)

2021年02月04日 | MSP430系列單片機:G2553循跡

發布者:LuckyDaisy 來源: eefocus關鍵字:MSP430系列  單片機 手機看文章 掃描二維碼
隨時隨地手機看文章

2018.7

還沒有進入碩士研究生的生活,就已經被老師拉來給本科大一輔導單片機的入門課程…也是沒誰了…

在無聊之余自己也玩起以前玩的TI的MSP430系列,話說自己以前也用這系列搭過蜘蛛機器人,在機器人動起來的時候還是有點成就感的。


7.24

課程結束,本科生用G2搭了一個小車來循跡比賽,賽道是師兄花的,看上去還有點復雜。一些本科生也是厲害,兩個紅外傳感器就搞定地圖。估計這就是所謂的運氣和實力了。


在課程總結,和老師坐在一起,就感覺事情并沒有那么簡單。。。

嗯,開始套路我們準研一做循跡小車當復習單片機知識….話說,老師給我的是一種莫名的不能拒絕的感覺。所以…迷迷糊糊就答應下來了。


7.26

花了一天的時間把原來要求控速的小車接上紅外來改裝,按規則寫代碼(這里聲明,我的印象里,循跡的本質是,走完所有有可能的路線或者按邏輯來走而不是特定規則,這才叫循跡),雖然車還是左搖右擺的走,但也走通了,附上代碼,4紅外傳感。


主函數


#include "Motor.h"


void timer_init()

{

    BCSCTL1 = CALBC1_1MHZ;

    DCOCTL = CALDCO_1MHZ;

    TA1CTL = TASSEL_2 + MC_1;

    TA1CCR0 = T;

    TA1CCTL1 = OUTMOD_7;

    TA1CCTL2 = OUTMOD_7;


    _EINT();

}


void GPIO_init(void)

{

    P1DIR = 0x00;


    P2DIR |= (BIT1 + BIT2 + BIT3 + BIT4);

    P2OUT &= ~(BIT1+BIT3);

    P2SEL |= (BIT2 + BIT4);

}


/* main.c*/

int main(void)

{

    WDTCTL = WDTPW | WDTHOLD;   // Stop watchdog timer


    timer_init();

    GPIO_init();

    while(1)

    {

        switch(flag)

        {

        case 0:

            mode_0();

            break;

        case 1:

            mode_1();

            break;

        case 2:

            mode_2();

            break;

        case 3:

            mode_3();

            break;

        case 4:

            mode_4();

            break;

        case 5:

            mode_5();

            break;

        }

    }

}


8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

驅動函數


#ifndef Motor

#define Motor


#include "param.h"

#include "msp430.h"

#define CPU_F ((double)1000000)

#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))


volatile int flag = 0;

volatile int mode5_flag = 0;


void Motor_L(float left)

{

    LeftMotor_Forward

    if(left<0)

    {

        LeftMotor_Back

        left = -left;

    }

    LeftPWMOUT = left*T/100;

}

void Motor_R(float right)

{

    RightMotor_Forward

    if(right<0)

    {

        RightMotor_Back

        right = -right;

    }

    RightPWMOUT = right*T/100;

}

void MotorSet(float L, float R)

{

    Motor_L(L);

    Motor_R(R);

}

void DriveMotor(float PIDout)

{

    float left=BASIC+PIDout;

    float right=BASIC-PIDout;

    if(left>100)

        left=100;

    if(left<-100)

        left=-100;

    if(right>100)

        right=100;

    if(right<-100)

        right=-100;

    Motor_L(left);

    Motor_R(right);//工作正常

}

void mode_0()

{

    while(flag==0)

    {

        if((P1IN|0xf0)==0xff)//1111

            MotorSet(70,68);

        if((P1IN|0xf0)==0xfd)//1101

            MotorSet(-100,100);

        if((P1IN|0xf0)==0xfb)//1011**

            MotorSet(100,-100);

        if((P1IN|0xf0)==0xf3)//0011zuo

        {

            MotorSet(65,0);

            delay_us(500000);

            MotorSet(70,68);

        }

        if((P1IN|0xf0)==0xfc)//1100you

        {

            MotorSet(-20,70);

            delay_us(500000);

            MotorSet(70,68);

            flag++;


        }

    }

}

void mode_1()

{

    if((P1IN|0xf0)==0xff)//1111

        MotorSet(70,68);

    if((P1IN|0xf0)==0xfc)//1100zuo

        MotorSet(70,68);

    if((P1IN|0xf0)==0xf3)//0011

    {

        MotorSet(70,68);

        flag++;

    }

}

void mode_2()

{

    if((P1IN|0xf0)==0xff)//1111

        MotorSet(70,68);

    if((P1IN|0xf0)==0xfc)//1100

    {

        MotorSet(-10,70);

        delay_us(500000);

        MotorSet(70,68);

    }

    if((P1IN|0xf0)==0xf3)//0011

    {

        MotorSet(60,0);

        delay_us(500000);

        MotorSet(70,68);


    }

    if((P1IN|0xf0)==0xf0)//0000

        MotorSet(70,68);

    if((P1IN|0xf0)==0xf9)//1001

    {

        MotorSet(0,0);

        delay_us(5000000);//5s

        MotorSet(-10,50);

        flag++;

    }

}

void mode_3()

{

    if((P1IN|0xf0)==0xff)//1111

        MotorSet(70,68);

    if((P1IN|0xf0)==0xfc)//1100

    {

        MotorSet(-10,70);

        delay_us(500000);

        MotorSet(70,68);

    }

    if((P1IN|0xf0)==0xf3)//0011

    {

        flag++;

        MotorSet(70,68);

    }

}

void mode_4()

{

    if((P1IN|0xf0)==0xff)//1111

        MotorSet(70,68);

    if((P1IN|0xf0)==0xfc)//1100

        MotorSet(70,68);

    if((P1IN|0xf0)==0xf3)//0011

    {

        flag++;

        MotorSet(70,68);

    }

    if((P1IN|0xf0)==0xf0)//0000

    {

        MotorSet(100,-100);

        delay_us(2000000);

        MotorSet(70,68);

        flag++;

    }

}

void mode_5()

{

    if((P1IN|0xf0)==0xff)//1111

        MotorSet(70,68);

    if((P1IN|0xf0)==0xf3)//0011

    {

        MotorSet(60,0);

        delay_us(500000);

        MotorSet(70,68);

    }

    if((P1IN|0xf0)==0xfc)//1100

    {

        MotorSet(-10,70);

        delay_us(500000);

        MotorSet(70,68);

        mode5_flag++;

    }

    while(mode5_flag==2)

    {

        mode5_flag = 0;

        flag = 0;

    }

}

#endif


參數設置


#ifndef param

#define param


#define P 1

#define I 0.01

#define D 0

#define LeftMotor_Forward   {P2OUT &= ~BIT1;}

#define LeftMotor_Back  {P2OUT |= BIT1;}

#define RightMotor_Forward  {P2OUT &= ~BIT3;}

#define RightMotor_Back {P2OUT |= BIT3;}

#define LeftPWMOUT  TA1CCR1

#define RightPWMOUT TA1CCR2

#define F   10000

#define T   (8000000/F)

#define BASIC 100


#endif


關鍵字:MSP430系列  單片機 引用地址:MSP430系列單片機:G2553循跡

上一篇:官網中MSP430G2553數據表及用戶指南的簡單了解
下一篇:單片機MSP430入門--理論③--時鐘模塊-DCO和BCS寄存器

推薦閱讀

相關調查顯示,大部分交通事故的發生,是由于駕車人在行車過程中沒有注意到各方障礙物,如果有一種車載智能報警系統,在汽車接近障礙物時能自動發出警示并啟動制動功能,駕駛的安全性將大大提高。我國首批國家“千人計劃”特聘專家、在寧創業的留美博士趙生捷與他的團隊,正在研發的智能視頻與毫米波雷達多模融合技術,將使“車載障礙物報警系統”成為現實...
根據報道,去年日本機器人產業領域的訂單金額突破1萬億日元。 1月11日在東京市內一家酒店舉行的行業新年賀禮會上,日本機器人工業會橋本康彥會長表示“2018年工業用機器人的訂單金額比2017年增長了7%,達到了1兆100億日元”。日本的工業機器人年訂單量超過1萬億日元還是第一次。橋本剛彥會長表示今年工業用機器人的訂單額有望達到1兆500億日元。 橋本...
函數信號發生器是一種信號發生裝置,能產生某些特定的周期性時間函數波形(正弦波、方波、三角波、鋸齒波和脈沖波等)信號,頻率范圍可從幾個微赫到幾十兆赫。除供通信、儀表和自動控制系統測試用外,還廣泛用于其他非電測量領域。函數信號發生器使用方法A、將函數信號發生器接入交流220V,50Hz電源,按下電源開關,指示燈亮。B、按下所需波形的選擇功能開...
據西班牙《經濟學家報》報道,芯片正成為“新石油”,目前仍屬于很稀缺的資源,并受到一些國家和地區(全部在亞洲)的控制。半導體的全球短缺狀況正困擾著汽車工業和其他技術密集型產品的生產。 美國貿易數據可視化線上平臺“經濟復雜性觀察站”組織2019年發布的數據顯示,在集成電路以及手機、汽車零部件、醫療診斷設備等使用的半導體元器件的全球出口總...

史海拾趣

問答坊 | AI 解惑

完整德州儀器高性能模擬器件在大學生創新設計中的應用及選型指南

本帖最后由 paulhyde 于 2014-9-15 09:44 編輯 完整德州儀器高性能模擬器件在大學生創新設計中的應用及選型指南!  …

查看全部問答∨

各位大蝦 我是大二學生 如何提高c語言編程能力(大一學過C)

大家好 我是大二學生 學習嵌入式  大一學過C語言   但學的一般  現在大二  想在學習C 但是  怎樣提高呢? 以前學的也就是  一些很簡單的 類似抄代碼的    如何才能明顯的提 ...…

查看全部問答∨

wince5.0與sqlce

將程序下載到開發板上時,程序找不到 system.data.sqlserverce程序集? 在開發板已經裝上了相應的sqlce程序!!!! 請問在系統定制時是不是還得添加相應的數據庫鏈接文件????…

查看全部問答∨

關于無線網卡編程的問題

請問怎么在無線網卡上編程?就是最一般的802.11a/b/g LAN.基本想法是這樣的:無線網卡在出廠默認的情況下肯定是寫有自己的路由算法的了,現在想在上面寫上自己設計的路由算法,并能成功實現用之,具體應該怎么做?需要用到什么編程平臺?要用到什 ...…

查看全部問答∨

Wince5.0安裝問題

每次安裝到最后,進行狀態驗證的時候就出錯,安裝程序就Rollback,自動刪除安裝了的文件,哪位高手知道是什么原因嗎?…

查看全部問答∨

Unable to connect to the device

有個問題解決不了啊~~~ 已經安裝了Microsoft   ActiveSync而且用USB接口和Pocket PC已經連接上了可以把文件Copy到Pocket   PC   上去; 可是我用上述點擊“Test”按鈕時就是連接不上Pocket PC,報錯為“Unable  ...…

查看全部問答∨

雙口RAM問題

我用ISE在生成雙口RAM時,沒有反應,但是當我打開一個已有的包含雙口RAM程序時,其中的雙口RAM能夠打開。請教高手這應該怎么解決啊…

查看全部問答∨

用聲卡測量電量

這里有一篇改裝聲卡做測量的文章,看看那位有興趣試試看。本人菜鳥,沒試過 http://www.qsl.net/om3cph/sb/dcwithsb.htm…

查看全部問答∨

stm32flash編程手冊

讀寫flash的說明  flash 寄存器說明 flash編程手冊.pdf (237.27 KB) 下載次數:208 2010-6-23 20:30 …

查看全部問答∨

BHS-STM32-ISP-IAPV1.3半壺水工具系列...持續更新

BHS-STM32-ISP-IAP V1.3.rar (2.19 MB) 下載次數: 31 2011-2-27 10:37 在上一版本基礎上修改記錄 1. 增加查看開發板跳線設置說明 2.增加串口超級終端,調試串口程序更方便 半壺水圖片轉換工具 V1.0.rar (30.7 KB) ...…

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

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 长葛市| 清徐县| 林州市| 二手房| 平泉县| 卢湾区| 绿春县| 芒康县| 武安市| 高唐县| 时尚| 清流县| 常熟市| 河源市| 绥江县| 夏河县| 林州市| 五河县| 沂源县| 始兴县| 德庆县| 平乐县| 昌邑市| 辽宁省| 翼城县| 平陆县| 孟连| 涿州市| 泗水县| 大城县| 客服| 天峻县| 温宿县| 锡林浩特市| 大洼县| 大兴区| 全州县| 庄河市| 安龙县| 仙桃市| 拜泉县|