完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近接收任务,要读懂在Arm developer suite程序中 led 的c 语言,因为没有基础,打开源程序看起来很茫然,请问这个要从什么地方开始学起呢?
以下是相应的源程序: ************************************************************************************* * Copyright (c) 2005 by National ASIC System Engineering Research Center. * PROPRIETARY RIGHTS of ASIC are involved in the subject matter of this * material. All manufacturing, reproduction, use, and sales rights * pertaining to this subject matter are governed by the license agreement. * The recipient of this software implicitly accepts the terms of the license. * * File Name: led.c * * File Description: * The file consists of the function used to config uart * * Function Description: * STATUS ModuleLed(void); * void LedDisPlay(U8 data[]); * void GPIO_Init(void); * void Hex2Seg (U8 data[], U8 * p); * void LedOut(U8 data[], U32 times); * void LedUpdate(void); * void delay(int cycle); * * * Created by Wuer xiao **************************************************************************************/ #include "garfield.h" #include U8 SEGMENT[16] = { (U8)(sect2 + sect3 + sect4 + sect5 + sect6 + sect7), //0 (U8)(sect5 + sect6), //1 (U8)(sect1 + sect3 + sect4 + sect6 + sect7), //2 (U8)(sect1 + sect4 + sect5 + sect6 + sect7), //3 (U8)(sect1 + sect2 + sect5 + sect6), //4 (U8)(sect1 + sect2 + sect4 + sect5 + sect7), //5 (U8)(sect1 + sect2 + sect3 + sect4 + sect5 + sect7), //6 (U8)(sect5 + sect6 + sect7), //7 (U8)(sect1 + sect2 + sect3 + sect4 + sect5 + sect6 + sect7), //8 (U8)(sect2 + sect3 + sect4 + sect5 + sect6 + sect7), //9 (U8)(sect1 + sect2 + sect3 + sect5 + sect6 + sect7), //a (U8)(sect1 + sect2 + sect3 + sect4 + sect5), //b (U8)(sect2 + sect3 + sect4 + sect7), //c (U8)(sect1 + sect3 + sect4 + sect5 + sect6), //d (U8)(sect1 + sect2 + sect3 + sect4 + sect7), //e (U8)(sect1 + sect2 + sect3 + sect7) //f }; U8 prochip[8] = { 0xce, 0x60, 0x6e, 0x9c, 0xfc, 0xee, 0xce }; // prochip LOGO U8 display[8] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}; // 实验中显示的数据(0-0xf) //U8 display[8] = {0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08}; // 实验中显示的数据(0-0xf) #define ROLL; // 是否以滚屏方式显示: no define: 不滚屏 // define: 滚屏方式 int main(void) { char *s1,*s2,*s3; s1="There is no LED on GE00n"; s2="Error in Led lab!!!n"; s3="Succeeded in Led lab!!!n"; #ifdef GE00 DBG_Printf(s1); return; #else if(E_OK != ModuleLed()) DBG_Printf("Error in Led lab!!!n"); //PRINT(s2); else //PRINT(s3); DBG_Printf("Succeeded in Led lab!!!n"); #endif while(1); return E_OK; } STATUS ModuleLed(void) { /* system initialized */ system_init(); // 系统初始化 /* GPIO initialized */ GPIO_Init(); /* led lab body */ // LedOut(prochip,5); // 在LED上显示“PROCHIP〉的logo LedDisPlay(display); // 显示用户设定的内容 return E_OK; } void LedDisPlay(U8 data[]) { U8* SegData; Hex2Seg(data, SegData); // 十六进制数字翻译成7段译码值 LedOut(SegData, 10); // 在led上显示 } void GPIO_Init() { *(RP)PORTD_SEL = 0x7; // 设定GPIO口 PD0/1/2 为通用口 *(RP)PORTD_DIR = 0x0; // 设定GPIO口 PD0/1/2 为数据输出 } void Hex2Seg (U8 hexdata[], U8 * p) { int i; for (i=0;i<8;i++) { *p++ = SEGMENT[hexdata[i]]; // 将要显示的数值,通过查找7段译码表翻译成码值 } } void LedOut(U8 data[], U32 times) { int Segment_i,Bit_i,i; U8 Segment_Data; U8 tempData; for(i = 0; i < times; i++) { for (Bit_i = 0; Bit_i < 8 ;Bit_i++) // 依次串行导入八个led的显示内容 { Segment_Data=*(data + Bit_i); // 获得一个led显示的码值 for (Segment_i = 0; Segment_i < 8; Segment_i++) // 将7段译码值依次串行输入到GPIO口中 { tempData=(Segment_Data>>Segment_i) & 0x1; // 得到一段发光管的译码值 *(RP)PORTD_DATA = tempData; // 写入74HC595的输入端,同时拉低PD3 //delay(0x200000); tempData |= 0x04; *(RP)PORTD_DATA = tempData; // 拉高PD3,触发74HC595,移位寄存 //delay(0x200000); } #ifdef ROLL LedUpdate(); // 显示到LED上 delay(0x100000); // 决定滚屏时间长短的等待时间 #endif } #ifndef ROLL LedUpdate(); // 显示到LED上 #endif } } void LedUpdate(void) // 74HC595锁存锁存输出,即led显示使能 { *(RP)PORTD_DATA |= 0x2; } void delay(int cycle) { int j = 0; for(j = 0; j < cycle; j++); return; } |
|
相关推荐
2个回答
|
|
|
|
先把硬件原理图接口搞懂,再来看程序
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式-ELFBOARD 硬件知识分享-ELF 2电源电路讲解
800 浏览 0 评论
1569 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程介绍之烧写所需镜像
1394 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写方法
844 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
1335 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 07:06 , Processed in 0.614631 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号