国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

s3c2440之點(diǎn)亮led

發(fā)布者:legend8最新更新時(shí)間:2024-07-19 來(lái)源: cnblogs關(guān)鍵字:s3c2440  點(diǎn)亮led 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

原理是操作led 與 CPU 相連管腳的GPIO,具體操作哪個(gè)GPIO,需要查看原理圖。將對(duì)應(yīng)GPIO配置為輸出模式,并設(shè)置GPIO的對(duì)應(yīng)位為低電平即可點(diǎn)亮led,相反,設(shè)置對(duì)應(yīng)位為高電平則熄滅led

韋東山的JZ2440為例,原理圖:

可以看出3個(gè)led分別對(duì)應(yīng)GPF4,GPF5,GPF6設(shè)置為輸出狀態(tài),查看芯片手冊(cè):

 

 

得知GPFCON寄存器地址為 0x56000050,GPFDAT寄存器地址為 0x56000054,GPF4,GP5,GPF6 的對(duì)應(yīng)配置分別為8-9,10-12,12-13位,需要將這連續(xù)的6位設(shè)置為010101 即可配置設(shè)置GPF4-6為輸出模式,然后控制 GPFDAT 4-6 位,0點(diǎn)亮,1熄滅。

代碼如下,匯編:

 1 .global _start

 2 

 3 _start:

 4     // 關(guān)閉看門狗

 5     ldr r0, =0x53000000

 6     ldr r1, =0

 7     str r1, [r0]

 8   //初始化棧

 9     mov sp,#4096


10     bl main 


c代碼:


  1 #define GPFCON  (*(volatile unsigned int *) 0x56000050)

  2 #define GPFDAT  (*(volatile unsigned int *) 0x56000054)

  3 

  4 

  5 void delay()

  6 {

  7     volatile int d = 100000;

  8     while(d--);

  9 }

 10 

 11 void led_all_off()

 12 {

 13     GPFDAT |= (7 << 4); 

 14 }

 15 

 16 void led_all_on()

 17 {

 18     

 19     GPFDAT &= ~(7 << 4);

 20 }

 21 

 22 

 23 void led_light_one(int index)

 24 {

 25     GPFDAT &= ~(1 << (4 + index));

 26 }

 27 

 28 void led_off_one(int index)

 29 {

 30     GPFDAT |= (1 << (4 + index));

 31 }

 32 

 33 void config_gpio()

 34 {

 35     //清0

 36     GPFCON    &= ~ ((3 << 8) | (3 << 10)    | (3 << 12));

 37     //設(shè)置1

 38     GPFCON    |= ((1 << 8) | (1    << 10)    | (1 << 12));

 39 }

 40 

 41 void horse_left()

 42 {

 43     int i;

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

 45     {

 46         led_light_one(i);

 47         delay();

 48         led_off_one(i);

 49         

 50     }

 51 }

 52 

 53 void horse_right()

 54 {

 55     int i;

 56     for(i =3; i >= 0;i --)

 57     {

 58         led_light_one(i);

 59         delay();

 60         led_off_one(i);

 61     }

 62 }

 63 

 64 void horse_race()

 65 {

 66     int i;

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

 68     {

 69         horse_left();

 70         horse_right();

 71     }

 72 } 

 73 

 74 

 75 void twinkle()

 76 {

 77     int i;

 78     led_all_off();

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

 80     {

 81         led_all_on();

 82         delay();

 83         led_all_off();

 84         delay();

 85     }

 86 }

 87 

 88 void one_by_one_on()

 89 {

 90     int i;

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

 92     {

 93         led_light_one(i);

 94         delay();

 95     }

 96 }

 97 

 98 void one_by_one_off()

 99 {

100     int i;

101     for(i =3; i >= 0;i --)

102     {

103         led_off_one(i);

104         delay();

105     }

106 }

107 void one_by_one()

108 {

109     int i;

110     led_all_off();

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

112     {

113         one_by_one_on();

114         one_by_one_off();

115     }

116 }

117 

118 int main()

119 {

120     config_gpio();

121     while(1)

122     {

123         twinkle();

124         horse_race();

125         one_by_one();

126     }

127     

128     return 0;

129 }


Makefile


all:

arm-linux-gcc -O3 -c -o led.o led.S 

arm-linux-gcc -O3 -c -o main.o main.c

arm-linux-ld -Ttext 0 led.o main.o -o led.elf

arm-linux-objcopy -O binary -S led.elf led.bin 


clean:

rm led.o led.ef led.bin -rf


此代碼實(shí)現(xiàn)了3個(gè)led同時(shí)閃爍,流水燈。


關(guān)鍵字:s3c2440  點(diǎn)亮led 引用地址:s3c2440之點(diǎn)亮led

上一篇:s3c2440之cpu提速
下一篇:內(nèi)存接口概念

推薦閱讀最新更新時(shí)間:2025-06-30 06:14

匯編寫51單片機(jī)之循環(huán)點(diǎn)亮LED
二話不說(shuō),先上代碼: ORG 0000H AJMP MAIN MAIN:SETB P1.0 LCALL DELAY CLR P1.0 LCALL DELAYA AJMP MAIN DELAY: MOV R7,#255 D1: MOV R6,#255 D2: DJNZ R6,D2 DJNZ R7,D1 RET DELAYA: MOV R7,#100 K1: MOV R6,#100 K2: DJNZ R6,K2 DJNZ R7,K1 RET END 讓我從頭到尾來(lái)分析這整個(gè)程序:首先,這段程序是用于循環(huán)點(diǎn)亮P1.0這個(gè)燈的。 ORG 0000H ;這句話我們說(shuō)過(guò)他的作用了,不懂的往前看。 AJMP MAIN ;這句話分成兩個(gè)部
[單片機(jī)]
點(diǎn)亮一個(gè)發(fā)光二極管LED--51的第一個(gè)程序
一、發(fā)光二極管LED的參數(shù) 要點(diǎn)亮LED,首先要清楚LED的參數(shù),這樣才能將它點(diǎn)亮。LED的壓降一般為1.5~2.0 V,其工作電流一般取10~20 mA為宜。換句話說(shuō),只要我們給LED加上1.5~2.0V的正向電壓,10~20mA的電流,那么就可以使LED正常發(fā)光了。 二、單片機(jī)與LED電路圖如下所示: 由于51單片機(jī)的驅(qū)動(dòng)能力有限,所以外接74HC245總線驅(qū)動(dòng)器,加強(qiáng)驅(qū)動(dòng)能力。當(dāng)OE接地,AB/BA接Vcc時(shí),數(shù)據(jù)流向?yàn)锳到B,即當(dāng)P2.0輸出“1”時(shí),B0也為“1”,這時(shí),LED的壓降為0,故LED不亮;當(dāng)P2.0輸出“0”時(shí),B0也為“0”,這時(shí),LED的壓降不為為0,但為多少呢?這個(gè)取決與R1,為了LED正
[單片機(jī)]
<font color='red'>點(diǎn)亮</font>一個(gè)發(fā)光二極管<font color='red'>LED</font>--51的第一個(gè)程序
【開(kāi)篇】&【STM32】點(diǎn)亮LED
一、開(kāi)篇作序 其實(shí)本人去年(2019年)就開(kāi)始學(xué)習(xí)32了,CSDN也早就用了,一直沒(méi)有寫博客的想法。今年寒假就試著寫寫,雖然之前沒(méi)寫過(guò),但是想努力寫好吧。之前沒(méi)有寫博客的習(xí)慣。 但是我感覺(jué)有一個(gè)這樣的習(xí)慣挺好的,若干年后,當(dāng)自己再回頭看這些文字時(shí),可能不經(jīng)意間會(huì)感受到當(dāng)時(shí)自己的心路歷程,回味著那年今日的自己,懷揣著未來(lái)的夢(mèng)想,踐行著對(duì)自己的承諾! 在CSDN上以此序作為開(kāi)篇,序很短,不過(guò)
[單片機(jī)]
【開(kāi)篇】&【STM32】<font color='red'>點(diǎn)亮</font><font color='red'>LED</font>
【STM32Cube_03】使用GPIO點(diǎn)亮一個(gè)LED
1. 準(zhǔn)備工作 硬件準(zhǔn)備 首先需要準(zhǔn)備一個(gè)開(kāi)發(fā)板,這里我準(zhǔn)備的是STM32L4的開(kāi)發(fā)板(BearPi): 軟件準(zhǔn)備 需要安裝好Keil - MDK及芯片對(duì)應(yīng)的包,以便編譯和下載生成的代碼。 2.生成MDK工程 選擇芯片型號(hào) 打開(kāi)STM32CubeMX,打開(kāi)MCU選擇器: 搜索并選中芯片STM32L431RCT6: 配置時(shí)鐘源 如果選擇使用外部高速時(shí)鐘(HSE),則需要在System Core中配置RCC; 如果使用默認(rèn)內(nèi)部時(shí)鐘(HSI),這一步可以略過(guò); 這里我都使用外部時(shí)鐘: 配置GPIO引腳 在原理圖上如下: 所以接下來(lái)我們選擇配置PC13引腳: 配置時(shí)鐘樹(shù) STM32L4的最高主頻到80M,所
[單片機(jī)]
【STM32Cube_03】使用GPIO<font color='red'>點(diǎn)亮</font>一個(gè)<font color='red'>LED</font>
基于MSP430F5438的led點(diǎn)亮設(shè)計(jì)
首先看電路圖: 這個(gè)電路圖是關(guān)鍵,理解,首先必須要打開(kāi)VCC,這個(gè)是我今天犯錯(cuò)的最主要的原因,因?yàn)槲议_(kāi)始以為開(kāi)發(fā)板上的電源是自動(dòng)接上的,導(dǎo)致程序調(diào)試了一上午,沒(méi)有成功 之后看VCC,也就是標(biāo)號(hào)1,搜索一下VCC的引腳 也就是要控制P5.4口輸出一個(gè)高電平 代碼: put_P5DIR_BIT4(1);//引腳為輸出引腳 put_P5_OUT_BIT4(1);//打開(kāi)外部電源 接下來(lái)看標(biāo)號(hào)2 標(biāo)號(hào)2是一個(gè)led_PWR,注意這里是一個(gè)控制輸出一個(gè)0,就可以導(dǎo)通三極管, 在電路圖上搜索一下led_PWR,這里出現(xiàn)如圖管腳 這里顯示的是LED PWR是第P7.3管腳,即P7.3只需要輸出一個(gè)低信號(hào)就可以了 示例代碼: pu
[單片機(jī)]
基于MSP430F5438的<font color='red'>led</font><font color='red'>點(diǎn)亮</font>設(shè)計(jì)
STM32開(kāi)發(fā)筆記75: 使用STM32CubeMX點(diǎn)亮一個(gè)LED
今天調(diào)試在自己的程序框架下調(diào)試RTC始終不成功,只要初始化RTC就進(jìn)入死機(jī)狀態(tài)?,F(xiàn)在重溫一下STM32CubeMX的使用方法,看STM32CubeMX生成的程序是否有RTC初始化不成功的問(wèn)題。本日志從工程的建立講到點(diǎn)亮一個(gè)LED。 1、啟動(dòng)STM32CubeMX,我現(xiàn)在使用的版本是5.2.1。 2、File-New Project,選擇相應(yīng)的芯片類型。 3、雙擊相應(yīng)的芯片類型后,進(jìn)入配置界面。進(jìn)行SYS配置,選中Debug Serial Wire,由于我習(xí)慣于使用FreeRTOS所以在我的項(xiàng)目中Timebase Source都選擇定時(shí)器。 4、進(jìn)行RCC設(shè)置。 5、時(shí)鐘設(shè)置如下:
[單片機(jī)]
STM32開(kāi)發(fā)筆記75: 使用STM32CubeMX<font color='red'>點(diǎn)亮</font>一個(gè)<font color='red'>LED</font>
SFR地址操作點(diǎn)亮LED
//實(shí)例7:通過(guò)對(duì)P0口地址的操作流水點(diǎn)亮8位LED #include reg51.h //包含單片機(jī)寄存器的頭文件 //sfr x=0x80; //P0口在存儲(chǔ)器中的地址是80H, 通過(guò)sfr可定義8051內(nèi)核單片機(jī) //的所有內(nèi)部8位特殊功能寄存器,對(duì)地址x的操作也就是對(duì)P0口的操作 sfr x=0x90; //P1口在存儲(chǔ)器中的地址是90H, 通過(guò)sfr可定義8051內(nèi)核單片機(jī) //的所有內(nèi)部8位特殊功能寄存器,對(duì)地址x的操作也就是對(duì)P1口的操作 /**************************************** 函數(shù)功能:延時(shí)一段時(shí)間 ************************
[單片機(jī)]
單片機(jī)環(huán)境的搭建-1.4點(diǎn)亮一個(gè)LED
1.4 點(diǎn)亮一個(gè)LED 在本教程中,我們使用最常見(jiàn)的STC89C52RC-DIP40單片機(jī)作為主控芯片,這也是很多初學(xué)者入門的單片機(jī)。IDE采用Keil軟件,該軟件自帶編譯器,然后通過(guò)燒寫器將指令下載到單片機(jī)。 1.4.1 新建一個(gè)keil工程 (1) 雙擊keil軟件 (2) 點(diǎn)擊project- New uvision Project, 選擇保存路徑,取一個(gè)工程名字LED (3) 在CPU中選擇Atmel,找到并選擇AT89C52,點(diǎn)擊確定 接下來(lái)彈出一個(gè)對(duì)話框,選擇 否 (5) 點(diǎn)擊 創(chuàng)建一個(gè)空白文件 或者使用ctrl+N(File下面的那個(gè)圖標(biāo)) ?然后點(diǎn)擊保存(ctrl
[單片機(jī)]
單片機(jī)環(huán)境的搭建-1.4<font color='red'>點(diǎn)亮</font>一個(gè)<font color='red'>LED</font>
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved