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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)筆記——控制GPIO輸出點(diǎn)亮LED燈

          STM32學(xué)習(xí)筆記——控制GPIO輸出點(diǎn)亮LED燈

          作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏

          具體編程:

          新建工程并設(shè)置好環(huán)境,添加c文件,鍵入如下程序:

          //**********************************************

          //*通過直接操作存儲(chǔ)器控制GPIO輸出點(diǎn)亮LED燈*

          //* LED1=GPIOC_Pin6;*

          //* LED2=GPIOC_Pin7;*

          //* LED3=GPIOC_Pin8;*

          //* LED4=GPIOC_Pin9;*

          //* ------------------Sah_Pah----------------- *

          //**********************************************

          #include

          //定義各寄存器地址

          #define GPIOC_CRL(* (volatile unsigned long *)(0x40011000))

          #define GPIOC_CRH(* (volatile unsigned long *)(0x40011004))

          #define GPIOC_ODR(* (volatile unsigned long *)(0x4001100C))

          #define GPIOC_BSRR (* (volatile unsigned long *)(0x40011010))

          #define GPIOC_BRR(* (volatile unsigned long *)(0x40011014))

          #define RCC_APB2ENR (*(volatile unsigned long *)(0x40021018))

          //設(shè)置GPIOC_Pin6,Pin7,Pin8,Pin9為推挽輸出模式,最大速度50MHz

          #define _GPIOC_CRL 0x33000000

          #define _GPIOC_CRH 0x00000033

          void delay(void);

          void main(void)

          {

          volatile int i;

          //使能APB2的PORTC時(shí)鐘

          RCC_APB2ENR |=(1<<4);

          //設(shè)置GPIOC_Pin6,Pin7,Pin8,Pin9為推挽輸出模式,最大速度50MHz

          GPIOC_CRL = _GPIOC_CRL;

          GPIOC_CRH = _GPIOC_CRH;

          while(1)

          {

          delay();

          //利用端口位復(fù)位寄存器BRR清除GPIOC各端口的ODR位為0

          GPIOC_BRR=0xFFFF;

          delay();

          //利用端口位設(shè)置/復(fù)位寄存器BSRR將P6、P7、P8、P9口置1,點(diǎn)亮LED燈

          GPIOC_BSRR=0x000003C0;

          delay();

          //重復(fù)三次,偷懶就不寫循環(huán)了

          GPIOC_BRR=0xFFFF;

          delay();

          GPIOC_BSRR=0x000003C0;

          delay();

          GPIOC_BRR=0xFFFF;

          delay();

          GPIOC_BSRR=0x000003C0;

          delay();

          GPIOC_BRR=0xFFFF;

          //利用端口輸出數(shù)據(jù)寄存器ODR進(jìn)行流水燈循環(huán)

          for(i=0;i<3;i++)

          {

          //P6腳置1

          GPIOC_ODR=0x0040;

          delay();

          //清0

          GPIOC_ODR=0x0000;

          //P7腳置1

          GPIOC_ODR=0x0080;

          delay();

          GPIOC_ODR=0x0000;

          //P8腳置1

          GPIOC_ODR=0x0100;

          delay();

          GPIOC_ODR=0x0000;

          //P9腳置1

          GPIOC_ODR=0x0200;

          delay();

          }

          }

          }

          //定義延遲函數(shù)

          void delay(void)

          {

          unsigned long j,n=100000;

          while(n--)

          {

          j=12;

          while(j--);

          }

          }

          最終結(jié)果:

          保存編譯后,將程序燒寫到開發(fā)板上,板上四個(gè)LED等閃爍三次后以流水燈形式循環(huán)三次。

          三.參考文獻(xiàn)

          [1]半壺水,《STM32菜鳥學(xué)習(xí)手冊(cè)-羅嗦版》, http://wenku.baidu.com/view/fc7c7d20ccbff121dd3683da.html, 2012-08-19.

          [2]電腦圈圈.自己動(dòng)手創(chuàng)建一個(gè)基于萬(wàn)利STM32板的IAR工程[EB/OL].http://blog.21ic.com/user1/2198/archives/2008/48929.html ,2008-07-02/2012-08-19.

          [3]Changing.用stm32點(diǎn)個(gè)燈[操作寄存器+庫(kù)函數(shù)][EB/OL]. http://www.ichanging.org/stm32_gpio_led.html,2012-06-29/2012-08-19.



          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞: STM32學(xué)習(xí)筆記控制GPI

          評(píng)論


          相關(guān)推薦

          技術(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); })();