嵌入式C语言开发经典资料
飞飞现将个人收集的一些嵌入式C语言开发资料上传,这些会对你有用的,我也从一个门外汉一步一步全靠自学走进嵌入式的大门。从单片机到FPGA,最后走到ARM,从C到VC++,在到JAVA,linux,一路走来收获很多,感触很深。这条道路需要执着和毅力才能走向辉煌。最重要的是把它当成一种乐趣!这样你才会走得更远,更坚实!还需要耐得住寂寞,飞飞在读大学期间几乎很少去游玩,早晨7:30去实验室晚上23:00才回宿舍(实验楼锁门时间)!现在回想当时的确很辛苦,但经历过这些之后,才发现这些确是学生生涯最宝贵的财富!
点击此处下载 ourdev_652046NCVH6Q.pdf(文件大小:28.52M) (原文件名:《C和指针》.pdf)
点击此处下载 ourdev_652047TXM9RS.pdf(文件大小:1.01M) (原文件名:C程序设计语言(第2版?新版).pdf)
点击此处下载 ourdev_652048ODWSXP.pdf(文件大小:1.61M) (原文件名:C嵌入式系统编程.pdf)
点击此处下载 ourdev_652049T0HEQR.pdf(文件大小:400K) (原文件名:C语言嵌入式系统编程修炼.pdf)
点击此处下载 ourdev_652051XAL6DK.pdf(文件大小:898K) (原文件名:C语言深度解剖.pdf)
点击此处下载 ourdev_652052ISN3Z6.pdf(文件大小:13.45M) (原文件名:c专家编程.pdf)
点击此处下载 ourdev_652053DHU7CE.pdf(文件大小:24.18M) (原文件名:UCOSII.pdf)
点击此处下载 ourdev_652054ZFJ1JL.pdf(文件大小:2.53M) (原文件名:uCOS-II中文版电子书.pdf)
点击此处下载 ourdev_652055HQ38PL.pdf(文件大小:383K) (原文件名:如何修炼成嵌入式高手.pdf) 谢谢。 ding 顶lz,谢谢了~~~ 顶 mark 作者这段时间对ucGUI进行了了解!ucGUI界面设计采用Windos开发机制,非常适合嵌入式界面设计。各位网友有兴趣可用ucGUI设计一些简单的界面,作者近期会公布一些实验源代码,并对ucGUI的各个API函数功能和用法做简要的介绍! 谢谢了 嵌入式C
mark
谢谢 mark 如何修炼成高手 mark下 现给大家介绍USGUI的第一个实例:
首先看看应用VC++仿真的结果:
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653906K4US2K.jpg
(原文件名:1.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653907ZHBRHM.jpg
(原文件名:2.jpg)
在看看移植到ARM系统上的界面:
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653908YKS63F.jpg
(原文件名:图片 001.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653909J4EI5K.jpg
(原文件名:图片 004.jpg)
注:摄像头拍摄,效果不太好,界面和VC仿真完全相同!
下面为测试code:
void MainTask(void) {
int Cnt =0;
int i,YPos;
int LCDXSize = LCD_GET_XSIZE();
int LCDYSize = LCD_GET_YSIZE();
const GUI_BITMAP *pBitmap;
GUI_Init();
GUI_SetBkColor(GUI_RED); //设置背景为红色
GUI_Clear();
GUI_Delay(1000);
GUI_SetBkColor(GUI_BLUE); //蓝色背景
GUI_Clear();
GUI_Delay(1000);
GUI_SetColor(GUI_WHITE); //设置字体颜色
for (i=0; i<1000; i+=10)
{
GUI_DrawHLine(i,0,100);
GUI_DispStringAt("Line ",0,i);
GUI_DispDecMin(i);
}
GUI_Delay(10000);
GUI_Delay(10000);
GUI_SetColor(0x0);
GUI_SetBkColor(0xffffff);
for (i=0; i<160; i++) {
int len = (i<80) ? i : 160-i;
GUI_DrawHLine(i,20,len+20);
}
GUI_Delay(1000);
GUI_Clear();
if (LCD_GET_YSIZE()>(100+bmMicriumLogo_1bpp.YSize)) {
pBitmap=&bmMicriumLogo;
} else {
GUI_SetColor(GUI_BLUE);
pBitmap=&bmMicriumLogo_1bpp;
}
GUI_DrawBitmap(pBitmap,(LCDXSize-pBitmap->XSize)/2,10);
YPos=20+pBitmap->YSize;
GUI_SetFont(&GUI_FontComic24B_1);
GUI_DispStringHCenterAt("www.micrium.com",LCDXSize/2,YPos);
GUI_Delay(1000);
GUI_SetColor(GUI_RED);
GUI_DispStringHCenterAt("?2002\n", LCDXSize/2,YPos+30);
GUI_SetFont(&GUI_Font10S_1);
GUI_DispStringHCenterAt("Micri祄 Inc.",LCDXSize/2,YPos+60);;
GUI_Delay(1000);
while(1);
} 上传完整工程文件:
点击此处下载 ourdev_653910JIWTSW.rar(文件大小:6.20M) (原文件名:test1 UCGUI.rar)
请继续关注本帖!作者会陆续发一些ucGUI的实例!便于大家交流和参考! 注释更详细一点:
void MainTask(void) {
int Cnt =0;
int i,YPos;
int LCDXSize = LCD_GET_XSIZE();
int LCDYSize = LCD_GET_YSIZE();
const GUI_BITMAP *pBitmap;
GUI_Init();
GUI_SetBkColor(GUI_RED); //设置背景为红色
GUI_Clear();
GUI_Delay(1000);
GUI_SetBkColor(GUI_BLUE); //蓝色背景
GUI_Clear();
GUI_Delay(1000);
GUI_SetColor(GUI_WHITE); //设置字体颜色
//画横线
for (i=0; i<1000; i+=10)
{
GUI_DrawHLine(i,0,100);
GUI_DispStringAt("Line ",0,i);
GUI_DispDecMin(i);
}
//GUI_Delay(10000);
GUI_Delay(1000);
//-------------------------------------------------------
GUI_SetColor(0x0); //画三角符号,S设置其颜色为黑色
GUI_SetBkColor(0xffffff);
for (i=0; i<160; i++) {
int len = (i<80) ? i : 160-i;
GUI_DrawHLine(i,20,len+20);
}
//---------------------------------------------------------
GUI_Delay(1000);
GUI_Clear();
if (LCD_GET_YSIZE()>(100+bmMicriumLogo_1bpp.YSize)) {
pBitmap=&bmMicriumLogo;
}
else {
GUI_SetColor(GUI_BLUE);
pBitmap=&bmMicriumLogo_1bpp;
}
GUI_DrawBitmap(pBitmap,(LCDXSize-pBitmap->XSize)/2,10); //显示自定义图片 “MICRIUM”
YPos=20+pBitmap->YSize; //定义显示字体y坐标
GUI_SetFont(&GUI_FontComic24B_1); //设置显示字体类型
GUI_SetColor(GUI_BLACK); //设置字体为红色
GUI_DispStringHCenterAt("www.micrium.com",LCDXSize/2,YPos);
GUI_DispStringHCenterAt("www.TMFMCU.com",LCDXSize/2,YPos+100);
GUI_Delay(1000);
GUI_SetColor(GUI_RED); //设置字体为红色
GUI_DispStringHCenterAt("?2002\n", LCDXSize/2,YPos+30);
GUI_SetFont(&GUI_Font10S_1); //设置新的字体颜色
GUI_DispStringHCenterAt("Micri祄 Inc.",LCDXSize/2,YPos+60);;
GUI_Delay(1000);
while(1);
}
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653944TSZOA6.jpg
(原文件名:3.jpg) 现在发布UCGUI第二个移植实例:
基VC仿真:
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653972XV2JZA.jpg
(原文件名:DrawPolygon.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653973JNIQ5B.jpg
(原文件名:DrawPolygon-1.jpg)
ARM移植效果:
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653974JYPMS4.jpg
(原文件名:图片 006.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653975UPHQH3.jpg
(原文件名:图片 007.jpg)
这个实例介绍如何进行图形绘制:
实验code
点击此处下载 ourdev_653976MYZRMZ.rar(文件大小:6.45M) (原文件名:UCGUI(基于VC++).rar) 现向大家介绍UCGUI第三个例子:2DGL_DrawScale
VC仿真结果:
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653977D24KAE.jpg
(原文件名:2DGL_DrawScale.jpg)
ARM移植效果:
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_653978HCDHJA.jpg
(原文件名:图片 008.jpg)
实验Code:
static void _DrawScale(void) {
int XSize = LCD_GetXSize(); //获取LCD 边界
int YSize = LCD_GetYSize();
int XMid= XSize / 2;
int i;
int r1 = 110;
int r2 = 140;
int rt = 100;
int y = 240;
int step =15;
int r = (r1 + r2) / 2;
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
GUI_SetColor(GUI_WHITE);
GUI_SetFont(&GUI_Font24_ASCII); //区24X24字符
GUI_SetTextAlign(GUI_TA_HCENTER); //居中显示
GUI_DispStringAt("DrawScale - Sample", 160, 5);
while (1) {
int c = 0;
GUI_SetColor(GUI_WHITE);
GUI_SetFont(&GUI_Font8x16);
GUI_SetTextAlign(GUI_TA_LEFT);
GUI_Delay(1000);
GUI_DispStringAtCEOL("using", 5, 40);
GUI_DispStringAtCEOL("GUI_AA_DrawArc", 5, 55);
GUI_Delay(1750);
GUI_SetPenSize(r2 - r1);
GUI_SetColor(0x0000AA);
GUI_AA_DrawArc(XMid, y, r, r, 45, 60);
GUI_Delay(1500);
GUI_SetColor(0x00AA00);
GUI_AA_DrawArc(XMid, y, r, r, 60, 90);
GUI_Delay(1500);
GUI_SetPenSize(2);
GUI_SetColor(GUI_WHITE);
GUI_AA_DrawArc(XMid, y, r1, r1, 45, 135);
GUI_Delay(1500);
GUI_AA_DrawArc(XMid, y, r2, r2, 45, 135);
GUI_Delay(2000);
GUI_DispStringAtCEOL("", 5, 55);
GUI_Delay(200);
GUI_DispStringAtCEOL("using", 5, 40);
GUI_DispStringAtCEOL("GUI_AA_DrawLine & GUI_DispCharAt", 5, 55);
GUI_Delay(5000);
for (i = 45; i <= 135; i += step) {
float co = cos(i * 3.1415926 / 180);
float si = sin(i * 3.1415926 / 180);
int x1 = XMid - r1 * co;
int y1 = y - r1 * si;
int x2 = XMid - (r2 - 1) * co;
int y2 = y - (r2 - 1) * si;
int xt = XMid - rt * co;
int yt = y - rt * si;
GUI_SetColor(GUI_WHITE);
GUI_SetPenSize(2);
GUI_AA_DrawLine(x1, y1, x2, y2);
GUI_SetColor(GUI_GREEN);
GUI_SetFont(&GUI_Font8x8);
GUI_DispCharAt('0' + c++, xt - 4, yt - 4);
GUI_Delay(750);
}
GUI_Delay(5250);
GUI_ClearRect(0, 30, 320, 240);
}
} mark 发布ucGUI的第三个实例:HiResPixels
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654071OPUX07.jpg
(原文件名:HiResPixels.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654072VB0OYB.jpg
(原文件名:HiResPixels_1.jpg)
移植ARM系统上效果:
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654073GW0FTP.jpg
(原文件名:图片 010.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654074RCM2XT.jpg
(原文件名:图片 011.jpg)
Code:
点击此处下载 ourdev_654075THFT23.zip(文件大小:8.41M) (原文件名:UCGUI(基于VC++).zip) 牛, 楼主厉害。 现在发布ucGUI第四个例子:Antialiased lines
实现功能:刷屏、三种模式划线
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654095RVDGAE.jpg
(原文件名:AA_Lines.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654096WFVA91.jpg
(原文件名:AA_Lines_1.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654097BKSW75.jpg
(原文件名:图片 005.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654099KR3697.jpg
(原文件名:图片 007.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654100VXT8CZ.jpg
(原文件名:图片 008.jpg)
测试Code:
点击此处下载 ourdev_654101U8KHA9.rar(文件大小:6.62M) (原文件名:UCGUI(基于VC++).rar)
static void _DemoAntialiasing(void)
{
int i, x1, x2, y1, y2;
const GUI_FONT *font_old;
y1 = 65;
y2 = 5;
/* Set drawing attributes */
GUI_SetColor(GUI_BLACK); //设置字体色
GUI_SetBkColor(GUI_WHITE); //设置背景色
GUI_SetPenShape(GUI_PS_FLAT); //设置画笔
GUI_Clear();
/* draw headline */
font_old = GUI_SetFont(&GUI_Font24_ASCII); //选择字体
GUI_SetTextAlign(GUI_TA_HCENTER); //设置字体显示位置
GUI_DispStringAt("Antialiased lines - Sample", 160, 0);
/* Draw lines without antialiased */
GUI_SetFont(&GUI_Font8x16); //重新选择字体
GUI_SetColor(GUI_RED);
GUI_DispStringAt("Hello,I am feifei!", 80, 70);
GUI_Delay(1000);
GUI_SetColor(GUI_BLACK); //设置字体颜色
GUI_SetFont(&GUI_Font8x16); //重新选择字体
GUI_SetTextAlign(GUI_TA_LEFT); //字符串从左向右显示
GUI_DispStringAtCEOL("draw normal lines using", 5, 35);
GUI_DispStringAtCEOL("GUI_DrawLine", 5, 50);
GUI_Delay(2500);
x1 = 20;
x2 = 100;
GUI_SetFont(font_old);
GUI_DispStringHCenterAt("Normal", (x1 + x2) / 2, 30 + y1);
for (i = 1; i < 8; i++) {
GUI_SetPenSize(i);
GUI_DrawLine(x1, 40 + i * 15 + y1, x2, 40 + i * 15 + y1 + y2);
}
/* Draw lines with antialiasing quality factor 2 */
GUI_Delay(3000);
GUI_SetFont(&GUI_Font8x16);
GUI_DispStringAtCEOL("", 5, 40);
GUI_DispStringAtCEOL("", 5, 55);
GUI_Delay(200);
GUI_DispStringAtCEOL("draw normal lines using", 5, 35);
GUI_DispStringAtCEOL("GUI_DrawLine", 5, 50);
GUI_Delay(3500);
x1 = 120;
x2 = 200;
GUI_AA_SetFactor(2);
GUI_SetFont(font_old);
GUI_DispStringHCenterAt("Antialiased\nusing factor 2", (x1 + x2) / 2, 30 + y1);
for (i = 1; i < 8; i++) {
GUI_SetPenSize(i);
GUI_AA_DrawLine(x1, 40 + i * 15 + y1, x2, 40 + i * 15 + y1 + y2);
}
/* Draw lines with antialiasing quality factor 6 */
GUI_Delay(1500);
x1 = 220;
x2 = 300;
GUI_AA_SetFactor(6);
GUI_SetFont(font_old);
GUI_DispStringHCenterAt("Antialiased\nusing factor 6", (x1 + x2) / 2, 30 + y1);
for (i = 1; i < 8; i++) {
GUI_SetPenSize(i);
GUI_AA_DrawLine(x1, 40 + i * 15 + y1, x2, 40 + i * 15 + y1 + y2);
}
GUI_Delay(7500);
} 现在发布ucGUI第五个例子:Dialog,这是一个非常经典的例子,可以在您的嵌入式系统上可以进行类Windows操作啦
看看VC仿真的界面:
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654104T7OE2H.jpg
(原文件名:DIALOG_All.jpg)
Codeourdev_654105YY29Z2.rar(文件大小:6.71M) (原文件名:UCGUI(基于VC++).rar)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654106J12J23.jpg
(原文件名:图片 001.jpg)
可以触摸控制的:
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654107NCNTN2.jpg
(原文件名:图片 002.jpg)
http://cache.amobbs.com/bbs_upload782111/files_42/ourdev_654108WZO97L.jpg
(原文件名:图片 003.jpg) 标记 牛. mark党 MARK 支持!! 有界面,很多场合很好用 mark mark 收藏了 灰常感谢!!!!!!!!!!!!! mark 灰常感谢 学习中 mark 好东西 资料好吖 mark 很好 顶,好多资料 感谢楼主! mark 好好学习 太感谢了。。。无敌啊这个 mark 那天用手机上Mark不了! mark mark! mark mark 马一下。 多谢楼主分享!我大学专业也是EE,现在是第三年,感觉自己前两年学东西好少,只是把GPA刷的很高,却没有掌握实用技术,向楼主学习! 先mark一下,等有空,在试机操作一下,学习学习 m mark谢谢! mark Mark,uC GUI
谢过楼主了 lz,能不能谈谈怎样使用模拟器的? 回复【65楼】luhuaneda
-----------------------------------------------------------------------
你说的模拟器指的是? mark,谢谢楼主分享 mark 回复【66楼】tmfwt 飞飞
回复【65楼】luhuaneda
-----------------------------------------------------------------------
你说的模拟器指的是?
-----------------------------------------------------------------------
怎样在电脑上面仿真啊?要装vc++? 回复【69楼】luhuaneda
-----------------------------------------------------------------------
安装VC6.0,在PC上界面设计好后,可移植到嵌入式系统中! MARK! 好东西,学习了!谢谢楼主! mark 顶上 MARK!! 很给力,如果能整理出个文档,估计会很受欢迎 回复【77楼】a305566
-----------------------------------------------------------------------
这段时间比较忙,UCGUI应用实例停止发布,9月份会重新发布新的应用实例。有时间会整理成文档资料! 好贴,很给力. 好帖啊。。。学习学习。。。 MARK mark C语言 UCOSii 谢谢共享! 正在找嵌入式c语言的资料了 谢谢楼主了 灰常不错的说。 支持~ mark 深入了解C资料备份:
点击此处下载 ourdev_680853SEHJBZ.rar(文件大小:678K) (原文件名:谭浩强C语言word版.rar)
点击此处下载 ourdev_680854L70X4G.rar(文件大小:52K) (原文件名:经典C程序100例.rar)
点击此处下载 ourdev_680855LCCJHF.rar(文件大小:371K) (原文件名:《c程序设计语言》英文第2版课后答案.rar)
点击此处下载 ourdev_680856NVW4QG.pdf(文件大小:2.77M) (原文件名:C程序设计语言(英文第2版)Prentice Hall.-.The C Programming Language(2nd Edition).pdf) 赞 一个
标记一下 以后学习 不错,很好~~ 谢谢楼主 你太厉害了 mark 也是个烧钱的行业啊~~~ 好贴啊啊啊啊啊啊 mark mark mark!! LZ真强悍 支持 ,MARK 好东西啊好东西啊 顶起 楼主牛人啊,学习了 顶 mark mark 这个必须顶 mark 谢谢楼主分享 都是好书 灰常感谢啊
页:
[1]
2