新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32-跑馬燈實驗代碼分析

        STM32-跑馬燈實驗代碼分析

        作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
        工程建立的主要步驟

        1.新建3個文件夾:USER、SYSTEM、HARDWARE

        本文引用地址:http://www.104case.com/article/201611/320440.htm

        2.新建led.c、led.h和test.c

        3.在Target目錄樹上右擊Manage Component,新建USER、SYSTEM、HARDWARE,并添加相關(guān)C文件(具體見前文MDK使用方法與技巧),跟前面一樣HARDWARE組添加led.c文件。

        4.在Options for Target ‘Target 1’對話框C/C++選項卡中Include Pathes里添加頭文件路徑。(這個不可少,否則編譯出錯,見前文MDK使用方法與技巧,led.h文件不可漏掉)

        5.使用SWD方式下載,具體見MDK使用方法與技巧,注意reset and run選項,如果不選此項,程序下載后還要重啟,然后才運行。

        6.使用mcuisp通過串口下載程序搞了半天沒下進去,原來是因為我把mcuisp左下角的電平設(shè)置錯了,應(yīng)該是DTR低電平復(fù)位,RTS高電平進BootLoader,真是粗心。

        代碼分析

        led.c

        [cpp]view plaincopy
        1. #include
        2. #include"led.h"
        3. //硬件電路兩個LED燈對應(yīng)PA8和PD2,初始化PA8和PD2為輸出口,并使能這兩個口的時鐘
        4. voidLED_Init(void)
        5. {
        6. RCC->APB2ENR|=1<<2;//使能POARTA時鐘
        7. RCC->APB2ENR|=1<<5;//使能POARTD時鐘
        8. GPIOA->CRH&=0XFFFFFFF0;
        9. GPIOA->CRH|=0X00000003;//PA8推挽輸出
        10. GPIOA->ODR=1<<8;//PA8輸出高
        11. GPIOD->CRH&=0XFFFFF0FF;
        12. GPIOD->CRH|=0X00000300;//PD2推挽輸出
        13. GPIOD->ODR=1<<2;//PD2輸出高
        14. }

        注意:1.RCC是MDK定義的一個結(jié)構(gòu)體,里面包含RCC相關(guān)寄存器組

        2.在配置STM32外設(shè)時,任何時候都要先使能該外設(shè)的時鐘!APB2ENR是APB2總線上的外設(shè)時鐘使能寄存器。

        led.h

        [cpp]view plaincopy
        1. #ifndef__LED_H
        2. #define__LED_H
        3. #include"sys.h"
        4. //LED端口定義
        5. #defineLED0PAout(8)//PA8
        6. #defineLED1PDout(2)//PD2
        7. voidLED_Init(void);//初始化
        8. #endif
        可以右擊找到PAout(x)的定義,在sys.h中。

        test.c

        [cpp]view plaincopy
        1. #include
        2. #include"sys.h"
        3. #include"usart.h"
        4. #include"delay.h"
        5. #include"led.h"
        6. intmain(void)
        7. {
        8. Stm32_Clock_Init(9);//系統(tǒng)時鐘設(shè)置
        9. delay_init(72);//延時初始化
        10. LED_Init();//初始化與LED連接的硬件接口
        11. while(1)
        12. {
        13. LED0=0;
        14. LED1=1;
        15. delay_ms(300);
        16. LED0=1;
        17. LED1=0;
        18. delay_ms(300);
        19. }
        20. }



        關(guān)鍵詞: STM32跑馬燈實驗代碼分

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 英吉沙县| 綦江县| 黑龙江省| 久治县| 沐川县| 新干县| 泾阳县| 宜春市| 加查县| 嵊泗县| 商丘市| 自贡市| 静宁县| 南涧| 鄂温| 沅陵县| 赣州市| 杭锦旗| 嘉荫县| 怀安县| 迁西县| 河东区| 会同县| 普兰店市| 崇礼县| 广元市| 漠河县| 望谟县| 滨州市| 萨嘎县| 诏安县| 桃园县| 灵璧县| 区。| 德清县| 墨竹工卡县| 肥西县| 谷城县| 寻乌县| 宝丰县| 新蔡县|