新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > OK6410裸機(jī)程序---leds

OK6410裸機(jī)程序---leds

作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
今天寫一下OK6410裸機(jī)中的led燈,led是差不最簡單的裸機(jī)驅(qū)動了吧。詳細(xì)的說一下,以便梳理自己的知識。

我們首先看一下OK6410的LED連接圖:

本文引用地址:http://2s4d.com/article/201611/317818.htm

其中NLED1234,和s3c6410的GPIO引腳相連,如圖:

其實LED發(fā)光的原理很簡單的,就是把LED連接到s3c6410的GPIO引腳,通過改變s3c6410的GPIO上的電平來控制LED發(fā)光。

這樣的話就很清楚了,我們來看下s3c6410 datasheet上關(guān)于GPIO引腳的設(shè)置:

首先是GPMCON寄存器:

因為我們要控制GPIO的電平,所以要把對應(yīng)的GPIO引腳設(shè)置為Output,即:0001

像我們這個就是:GPMCON &=0xffff fff1;

把這個引腳設(shè)置好后,我們可以通過改變GPMDAT的值來改變引腳上的電平。下面是GPMDAT:

可以看出來我們只要把對應(yīng)的位設(shè)置為0或1,就可以控制LED了。簡單吧?

下面看下源程序:

  1. void(*printf)(char*,...)=0xc7e11650;
  2. #defineGPMCON(*(unsignedlongvolatile*)0x7F008820)
  3. #defineGPMDAT(*(unsignedlongvolatile*)0x7F008824)
  4. #defineGPMPUD(*(unsignedlongvolatile*)0x7F008828)
  5. /*
  6. *NLED1GPM0
  7. *NLED2GPM1
  8. *NLED3GPM2
  9. *NLED4GPM3
  10. */
  11. voidset_gpio(void);
  12. voidudelay();
  13. intmain(void)
  14. {
  15. set_gpio();
  16. printf("%2x/n",GPMDAT);
  17. GPMDAT=0x00;
  18. inti;
  19. while(1){
  20. for(i=0;i<=3;i++)
  21. {
  22. GPMDAT=(1<
  23. udelay();
  24. }
  25. }
  26. return0;
  27. }
  28. /*
  29. *delay
  30. */
  31. voidudelay()
  32. {
  33. unsignedlongi=0;
  34. for(i=0;i<1000000;i++);
  35. }
  36. voidset_gpio(void)
  37. {
  38. GPMCON&=0xffff1111;
  39. }

這樣,leds就交替亮了。



關(guān)鍵詞: OK6410裸機(jī)程序led

評論


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

關(guān)閉