<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          STM32-跑馬燈實(shí)驗(yàn)代碼分析

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

          1.新建3個(gè)文件夾:USER、SYSTEM、HARDWARE

          本文引用地址:http://www.ex-cimer.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’對(duì)話框C/C++選項(xiàng)卡中Include Pathes里添加頭文件路徑。(這個(gè)不可少,否則編譯出錯(cuò),見前文MDK使用方法與技巧,led.h文件不可漏掉)

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

          6.使用mcuisp通過串口下載程序搞了半天沒下進(jìn)去,原來是因?yàn)槲野裮cuisp左下角的電平設(shè)置錯(cuò)了,應(yīng)該是DTR低電平復(fù)位,RTS高電平進(jìn)BootLoader,真是粗心。

          代碼分析

          led.c

          [cpp]view plaincopy
          1. #include
          2. #include"led.h"
          3. //硬件電路兩個(gè)LED燈對(duì)應(yīng)PA8和PD2,初始化PA8和PD2為輸出口,并使能這兩個(gè)口的時(shí)鐘
          4. voidLED_Init(void)
          5. {
          6. RCC->APB2ENR|=1<<2;//使能POARTA時(shí)鐘
          7. RCC->APB2ENR|=1<<5;//使能POARTD時(shí)鐘
          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定義的一個(gè)結(jié)構(gòu)體,里面包含RCC相關(guān)寄存器組

          2.在配置STM32外設(shè)時(shí),任何時(shí)候都要先使能該外設(shè)的時(shí)鐘!APB2ENR是APB2總線上的外設(shè)時(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í)鐘設(shè)置
          9. delay_init(72);//延時(shí)初始化
          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. }



          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();