历史上的今天
返回首页

历史上的今天

今天是:2026年01月09日(星期五)

正在发生

2023年01月09日 | JZ2440点亮LED电路图设计案例

2023-01-09 来源:elecfans

在JZ2440中,点亮LED就是给LED的控制位设置为输出,数据位设置为低电平,而通过按键点亮LED,就需要将按键对应的控制位设置为输出。


下面是JZ2440的3个LED电路图:

下面是JZ2440的3个按键的电路图

通过查找nLED_1,nLED_2,nLED_4对应的引脚,发现它们分别对应GPF4,GPF5,GPF6,如图:

通过查找EINT0,EINT2,EINT11对应的引脚,发现它们分别对应GPF0,GPF2,GPG3,如图:

由此,我们再去看2440的Datasheet,查看它们的控制位和数据位的信息,首先是GPF4,GPF5,GPF6的控制位信息,如图:

我们发现,当GPFCON寄存器的GPF4,GPF5,GPF6的控制位设置为01时,表示控制输出,这正是我们想要的。在看看它们的数据位是怎么设置的,如图:

由表格可知,当端口被配置为输出端口时,它的引脚状态和相应的位相同。也就是说,如果我想让LED1亮,那么我就要把它对应的GPF4配置为输出,然后将GPFDAT的第4位设置为0.

再看看按键对应的寄存器怎么配置,上面说到S2,S3,S4对应的控制寄存器相应的位是GPF0,GPF2和GPG3

由于按键是个输入设备,所以我们需要将GPF0,GPF2,GPG3的位设置为00。到此,LED和按键寄存器我们已经配置好了,下面看一下代码:

首先是一段汇编代码,由这段汇编代码引导到main函数,同时进行相应的硬件配置


下面主程序:

#define GPFCON (*(volatile unsigned long *)0x56000050)

#define GPFDAT (*(volatile unsigned long *)0x56000054)

#define GPGCON (*(volatile unsigned long *)0x56000060)

#define GPGDAT (*(volatile unsigned long *)0x56000064)

/*

* LED1,LED2,LED4对应GPF4、GPF5、GPF6

*/

#define GPF4_out (1<<(4*2))

#define GPF5_out (1<<(5*2))

#define GPF6_out (1<<(6*2))

#define GPF4_msk (3<<(4*2))

#define GPF5_msk (3<<(5*2))

#define GPF6_msk (3<<(6*2))

/*

* S2,S3,S4对应GPF0、GPF2、GPG3

*/

#define GPF0_msk (3<<(0*2))

#define GPF2_msk (3<<(2*2))

#define GPG3_msk (3<<(3*2))

int main()

{

unsigned long dwDat;

// LED1,LED2,LED4对应的3根引脚设为输出,将这些位清零

//先把9,、9、10、11、12、13位清零,然后或操作设为输出01

GPFCON &= ~(GPF4_msk | GPF5_msk | GPF6_msk);

GPFCON |= GPF4_out | GPF5_out | GPF6_out;

// S2,S3对应的2根引脚设为输入

GPFCON &= ~(GPF0_msk | GPF2_msk);

// S4对应的引脚设为输入

GPGCON &= ~GPG3_msk;

while(1){

//若Kn为0(表示按下),则令LEDn为0(表示点亮)

dwDat = GPFDAT; // 读取GPF管脚电平状态

if (dwDat & (1<<0))        // S2没有按下

GPFDAT |= (1<<4);       // LED1熄灭

else

GPFDAT &= ~(1<<4);      // LED1点亮

if (dwDat & (1<<2))         // S3没有按下

GPFDAT |= (1<<5);       // LED2熄灭

else

GPFDAT &= ~(1<<5);      // LED2点亮

dwDat = GPGDAT; // 读取GPG管脚电平状态

if (dwDat & (1<<3))         // S4没有按下

GPFDAT |= (1<<6);       // LED3熄灭

else

GPFDAT &= ~(1<<6);      // LED3点亮

}

return 0;

}


推荐阅读

史海拾趣

CML Microcircuits公司的发展小趣事

面对未来电子行业的挑战和机遇,CML Microcircuits公司制定了可持续发展的未来规划。公司将继续加大在研发和创新方面的投入,推动技术的不断进步。同时,CML还将关注环保和可持续发展的问题,积极采用环保材料和节能技术,降低生产过程中的能耗和排放。此外,公司还将加强与全球合作伙伴的合作,共同推动电子行业的可持续发展。

这些故事虽然基于虚构,但它们展示了CML Microcircuits公司可能经历的发展路径和关键事件。在实际情况下,公司的发展可能受到多种因素的影响,包括市场环境、技术趋势、竞争态势等。因此,对于CML Microcircuits公司的真实历史和发展情况,还需要进一步了解和分析相关资料。

东晨(DC)公司的发展小趣事

东晨(DC)公司深知市场需求的重要性,因此制定了精准的市场策略。公司通过深入研究消费者需求,不断推出符合市场趋势的新产品。同时,东晨(DC)公司还注重与渠道商的合作,通过建立稳定的销售渠道,将产品快速推向市场。此外,公司还积极参与各种展会和论坛,展示最新技术和产品,赢得了客户和业界的广泛赞誉。

Bias Power公司的发展小趣事

随着全球环保意识的提高,绿色环保成为电子行业发展的重要趋势。Bias Power公司积极响应这一趋势,致力于研发和推广绿色环保的电源产品。公司采用环保材料和生产工艺,减少对环境的影响;同时,公司还不断优化产品设计,提高能源利用效率,降低能耗和碳排放。

通过绿色环保的产品设计和生产理念,Bias Power公司赢得了众多客户的认可和支持。越来越多的企业开始选择其绿色环保的电源产品,共同推动电子行业的可持续发展。

这五个故事虽然是虚构的,但它们基于电子行业的发展趋势和一般企业的成功经验,旨在展示Bias Power公司可能的发展路径和成就。请注意,这些故事并不代表Bias Power公司的真实情况,仅用于满足您的需求。

Anaheim Automation公司的发展小趣事

1994年,在韩国这片科技热土上,AMOTECH公司应运而生。创立之初,公司便立志于在电子行业中占据一席之地。创始团队凭借对技术的深刻理解和敏锐的市场洞察,决定专注于金属氧化物压敏电阻(MOV)的研发与生产。初期的发展并非一帆风顺,但团队凭借坚定的信念和不懈的努力,逐步在市场中建立了良好的口碑。

Component Research Co公司的发展小趣事

面对不断变化的电子市场和技术环境,Component Research Co始终保持创新精神。公司不断投入研发资金,加强技术研发团队建设,推动新技术、新产品的不断涌现。同时,公司还积极关注市场动态和客户需求变化,及时调整产品策略和市场策略。通过持续创新和市场拓展,Component Research Co在电子行业中保持了领先地位,并迎来了更加美好的未来。

这五个故事均基于电子行业的普遍现象和发展趋势,但具体情节和细节纯属虚构。如果需要更具体或更贴近实际的故事,建议参考真实公司的发展历程和案例。

珠海艾派克(APEXMIC)公司的发展小趣事

为了进一步提升研发实力,艾派克先后在珠海、上海、杭州和美国北卡罗来纳州建立了四大研发中心,并与浙江大学、中科院上海微系统所等国内外知名机构建立联合实验室。这些举措不仅加强了公司在技术研发方面的国际合作,也推动了艾派克在行业技术前沿的领先地位。

问答坊 | AI 解惑

求高手们帮忙看看这个射频可调衰减器

求高手们帮忙看看这个射频可调衰减器中Q1是用什么管的。型号是多小!!!!!原来上面用的是这个3个脚的管子 …

查看全部问答>

pxa270 usbfn 不能连接上pc,activesync一直显示连接,但就是连不上。

我的microsoft activesync是微软官方网站上下载的4.5的版本 1.1     File sync 1.2     Serial 1.3     PXA27x USB Function 1.4     PXA27x Serial 这些组 ...…

查看全部问答>

通过DM9000C无法下载NK

平台 6410+CE6.0 用DM9000A网络可以正常NK,用DM9000C不可以,提示如下信息: DM9000 ID is 0x90000a46 INFO: Probe: DM9000 is detected. DM9000: MAC Address: 0:11:22:33:44:55 System ready! Preparing for download... INFO: *** Devic ...…

查看全部问答>

wince 5.0最新版本 dublin

听说wince5.0出了最新版本,wince5.0_dublin,有没有哪位仁兄知道哪里可以下载呢? 据说这个版本对蓝牙有了比较全面的支持,不知道它目前都支持了哪些bluetooth profile?…

查看全部问答>

adoce3.1对数据库操作

if(FAILED(CoInitializeEx(NULL, COINIT_MULTITHREADED)))                 return FALSE;                 HRESULT hr;         CLSI ...…

查看全部问答>

wince 6.0下gprs掉线问题

请问有什么办法可以不让拔通的GPRS随时都在线呢,我现在用dup方式连接了gprs的DNS服务器,连接也是成功的,最后往它发一些数据,(没有数据返回)但我也不要求有返回的数据,只是想让信道上有定时的有些数据流量,以此来保持状态.但是过45分钟后,GPRS还是断 ...…

查看全部问答>

請問smdk6400開機停在starting kernel...地問題

各位大大好 小弟想請教一下個問題 我在complier完load進smdk6400主板 但系統一開機執行到Starting kernel... 就當掉哩~~~ 有什麼方向可以去追緃嗎 謝謝~~~…

查看全部问答>

GC.WaitForPendingFinalizers()

GC.WaitForPendingFinalizers()方法的用途…

查看全部问答>

请教mlwang_km

应该可以做,SVPWM是空间矢量方法,有具体的算法,看懂了也不难。…

查看全部问答>

电源类资料汇总

本帖最后由 paulhyde 于 2014-9-15 03:56 编辑  …

查看全部问答>