导航:首页 > 源码编译 > 第二章编译教学视频

第二章编译教学视频

发布时间:2022-12-09 15:25:14

A. C语言全套教学视频

C语言程序设计

提取码:8uar复制这段内容后打开网络网盘手机APP,操作更方便哦!

若资源有问题欢迎追问~

B. 哪有能找到编译原理视频最好是陈意云的!!

陈老师编译原理全部授课内容(点“教学录像”即可看到所有视频链接)网页:http://www.bb.ustc.e.cn/webapps/portal/frameset.jsp?tab_id=_2_1&url=/bin/common/course.pl?course_id%3D_229_1
中科大精品课网站:http://www.bb.ustc.e.cn/jpkc/yi_lan.html

C. linux 编译内核几个常见问题解决方法

第一次把自己编译的驱动模块加载进开发板,就出现问题,还好没花费多长时间,下面列举出现的问题及解决方案
1:出现insmod: error inserting 'hello.ko': -1 Invalid mole format
法一(网上的):是因为内核模块生成的环境与运行的环境不一致,用linux-2.6.27内核源代码生成的模块,可能就不能在linux-2.6.32.2内核的linux环境下加载,需要在linux-2.6.27内核的linux环境下加载。
a.执行 uname -r //查看内核版本
b.一般出错信息被记录在文件/var/log/messages中,执行下面命令看错误信息
# cat /var/log/messages |tail
若出现类似下面:
Jun 4 22:07:54 localhost kernel:hello: version magic '2.6.35.6-45.fc14.i686.PAE
' should be '2.6.35.13-92.fc14.i686.PAE'
则把 Makefile里的KDIR :=/lib/moles/2.6.35.6-45.fc14.i686.PAE/build1 改为
KDIR :=/lib/moles/2.6.35.13-92.fc14.i686.PAE/build1 //改成自己内核源码路径
(这里的build1是一个文件链接,链接到/usr/src/kernels/2.6.35.6-45.fc14.i686.PAE和13-92的)
然并卵,我的fedora 14 /usr/src/kernels下并没有2.6.35.13-92.fc14.i686.PAE,只有2.6.35.13-92.fc14.i686,虽然不知道两者有什么区别,但改成2.6.35.13-92.fc14.i686还是不行,照样这个问题,还好后来在看教学视频的到启发
法二:改的还是那个位置
KDIR :=/opt/FriendlyARM/linux-2.6.32.2 //把这里改成你编译生成kernel的那个路径
all:
$ (MAKE) -C $ (KDIR) M = $ (PWD) moles ARCH=arm CROSS_COMPILE=arm-linux- //加这句
2. [70685.298483] hello: mole license 'unspecified' taints kernel.
[70685.298673] Disabling lock debugging e to kernel taint
方法:在模块程序中加入: MODULE_LICENSE("GPL");
3. rmmod: chdir(2.6.32.2-FriendlyARM): No such file or directory 错误解决
方法:lsmod 可查看模块信息
即无法删除对应的模块。
就是必须在/lib/moles下建立错误提示的对应的目录((2.6.32.2)即可。
必须创建/lib/moles/2.6.32.2这样一个空目录,否则不能卸载ko模块.
# rmmod nls_cp936
rmmod: chdir(/lib/moles): No such file or directory
但是这样倒是可以卸载nls_cp936,不过会一直有这样一个提示:
rmmod: mole 'nls_cp936' not found
初步发现,原来这是编译kernel时使用make moles_install生成的一个目录,
但是经测试得知,rmmod: mole 'nls_cp936' not found来自于busybox,并不是来自kernel
1).创建/lib/moles/2.6.32.2空目录
2).使用如下源码生成rmmod命令,就可以没有任何提示的卸载ko模块了[luther.gliethttp]
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
int main(int argc, char *argv[])
{
const char *modname = argv[1];
int ret = -1;
int maxtry = 10;
while (maxtry-- > 0) {
ret = delete_mole(modname, O_NONBLOCK | O_EXCL);//系统调用sys_delete_mole
if (ret < 0 && errno == EAGAIN)
usleep(500000);
else
break;
}
if (ret != 0)
printf("Unable to unload driver mole \"%s\": %s\n",
modname, strerror(errno));
}
3).把生成的命令复制到文件系统
# arm-linux-gcc -static -o rmmod rmmod.c
# arm-linux-strip -s rmmod
# cp rmmod /nfs/
cp /nfs/rmmod /sbin
代码如下:
proc.c
[html] view plain
<span style="font-size:18px;">#include <linux/mole.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/proc_fs.h> /* Necessary because we use the proc fs */
#define procfs_name "proctest"

MODULE_LICENSE("GPL");
struct proc_dir_entry *Our_Proc_File;
int procfile_read(char *buffer,char **buffer_location,off_t offset, int buffer_length, int *eof, void *data)
{ int ret;
ret = sprintf(buffer, "HelloWorld!\n");
return ret;
}

int proc_init()
{ Our_Proc_File = create_proc_entry(procfs_name, 0644, NULL);
if (Our_Proc_File == NULL) {
remove_proc_entry(procfs_name, NULL);
printk(KERN_ALERT "Error: Could not initialize /proc/%s\n",procfs_name);
return -ENOMEM; }
Our_Proc_File->read_proc = procfile_read;//
// Our_Proc_File->owner = THIS_MODULE;
Our_Proc_File->mode = S_IFREG | S_IRUGO;
Our_Proc_File->uid = 0;
Our_Proc_File->gid = 0;
Our_Proc_File->size = 37;
printk("/proc/%s created\n", procfs_name);
return 0;
}
void proc_exit()
{ remove_proc_entry(procfs_name, NULL);
printk(KERN_INFO "/proc/%s removed\n", procfs_name);
}
mole_init(proc_init);
mole_exit(proc_exit);</span></span></span></span></span>
[html] view plain
<span style="font-size:18px;">

ifneq ($(KERNELRELEASE),)
obj-m :=proc.o
else
KDIR :=/opt/FriendlyARM/linux-2.6.32.2
#KDIR :=/lib/moles/2.6.35.13-92.fc14.i686.PAE/build1
PWD :=$(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PWD) moles ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif</span></span></span></span></span>
make后生成proc.ko,再在开发板上insmod proc.ko即可
执行 dmesg 就可以看到 产生的内核信息啦

D. 【编译原理】第二章:语言和文法



上述文法 表示,该文法由终结符集合 ,非终结符集合 ,产生式集合 ,以及开始符号 构成。
而产生式 表示,一个表达式(Expression) ,可以由一个标识符(Identifier) 、或者两个表达式由加号 或乘号 连接、或者另一个表达式用括号包裹( )构成。

约定 :在不引起歧义的情况下,可以只写产生式。如以上文法可以简写为:

产生式

可以简写为:

如上例中,

可以简写为:

给定文法 ,如果有 ,那么可以将符号串 重写 为 ,记作 ,这个过程称为 推导
如上例中, 可以推导出 或 或 等等。

如果 ,
可以记作 ,则称为 经过n步推导出 ,记作 。

推导的反过程称为 归约

如果 ,则称 是 的一个 句型(sentential form )。

由文法 的开始符号 推导出的所有句子构成的集合称为 文法G生成的语言 ,记作 。
即:


文法

表示什么呢?
代表小写字母;
代表数字;
表示若干个字母和数字构成的字符串;
说明 是一个字母、或者是字母开头的字符串。
那么这个文法表示的即是,以字母开头的、非空的字符串,即标识符的构成方式。

并、连接、幂、克林闭包、正闭包。
如上例表示为:

中必须包含一个 非终结符


产生式一般形式:
即上式中只有当上下文满足 与 时,才能进行从 到 的推导。

上下文有关文法不包含空产生式( )。


产生式的一般形式:
即产生式左边都是非终结符。

右线性文法
左线性文法
以上都成为正则文法。
即产生式的右侧只能有一个终结符,且所有终结符只能在同一侧。

例:(右线性文法)

以上文法满足右线性文法。
以上文法生成一个以字母开头的字母数字串(标识符)。
以上文法等价于 上下文无关文法

正则文法能描述程序设计语言中的多数单词。

正则文法能描述程序设计语言中的多数单词,但不能表示句子构造,所以用到最多的是CFG。

根节点 表示文法开始符号S;
内部节点 表示对产生式 的应用;该节点的标号是产生式左部,子节点从左到右表示了产生式的右部;
叶节点 (又称边缘)既可以是非终结符也可以是终结符。

给定一个句型,其分析树的每一棵子树的边缘称为该句型的一个 短语
如果子树高度为2,那么这棵子树的边缘称为该句型的一个 直接短语

直接短语一定是某产生式的右部,但反之不一定。

如果一个文法可以为某个句子生成 多棵分析树 ,则称这个文法是 二义性的

二义性原因:多个if只有一个else;
消岐规则:每个else只与最近的if匹配。

E. 谁能详细地说明一下怎么在mac自己写c语言的程序吗用makefile编译,用终端运行的那种

makefile里面所写的内容其实就是你要编译的命令,那么,什么是编译命令呢?
假写你已经写好一个程序代码,并将之存在一个.c文件中,如:hello.c,在终端上你可以这样做!在终端上输入gcc -o hello hello.c
然后回车,看一看有没有什么反映,如果没有打出很多英文的话,恭喜你!你完美地完成了第一步!然后,在终端中输入./hello 看看是不是有什么输出了?
现在来解释一下编译命令:上面的命令的意思就是,使用gcc编译器编译hello.c源代码,生成的文件名称叫做hello.最后,要看程序运行结果,就要运行生成的程序也就是“./hello”了,“./”的意思就是在当前的目录下运行。
而makefile中内容的就是上面的编译命令,如:在makefile文件中写入
Hello:hello.c
gcc -o Hello hello.c
保存文件之后直接在终端中输入make,就完成编译了!makefile存在的意义只是让编译更加方便,也就说,可以把所以的编译都写在一个makefile文件中,然后在终端中输入make就可以完成makefile文件里的命令!
建议还是先将C语言入门,然后再学使用makefile编译程序吧!因为刚开始的时候不用编译很多文件,如果一个文件要编写一个makefile文件的话,那岂不是很繁?

F. 编译原理这门课程第二章词法分析的知识点有哪些

编译原理这门课第二章词法分析的知识点包含章节导引,第一节词法记号及属性,第二节词法记号的描述与识别,第三节有限自动机,第四节从正规式到有限自动机,课后练习,。

G. 如何编译hi3520d sdk

第一章 Hi3520D_SDK_Vx.x.x.x版本升级操作说明
如果您是首次安装本SDK,请直接参看第2章。

第二章 首次安装SDK
1、hi3520D SDK包位置
在"hi3520D_V100R001***/01.software/board"目录下,您可以看到一个 hi3520D_SDK_Vx.x.x.x.tgz 的文件,
该文件就是hi3520D的软件开发包。
2、解压缩SDK包
在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf hi3520D_SDK_Vx.x.x.x.tgz ,
解压缩该文件,可以得到一个hi3520D_SDK_Vx.x.x.x目录。
3、展开SDK包内容
返回hi3520D_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。
如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
4、在linux服务器上安装交叉编译器
1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):
进入hi3520D_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100nptl-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
2) 安装glibc交叉编译器(注意,需要有sudo权限或者root权限,暂时不支持glibc版本):
进入hi3520D_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv200-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
3) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
5、编译osdrv
参见osdrv目录下readme
6、SDK目录介绍
hi3520D_SDK_Vx.x.x.x 目录结构如下:
|-- sdk.cleanup # SDK清理脚本
|-- sdk.unpack # SDK展开脚本
|-- osdrv # 存放操作系统及相关驱动的目录
| |-- busybox # busybox源代码
| |-- drv # drv源代码
| |-- kernel # linux内核源代码
| |-- pub # 编译好的镜像、工具、drv驱动等
| |-- rootfs_scripts # rootfs源代码
| |-- toolchain # 交叉编译器
| |-- tools # linux工具源代码
| |-- uboot # uboot源代码
| `-- Makefile # osdrv Makefile
|-- package # 存放SDK各种压缩包的目录
| |-- osdrv.tgz # linux内核/uboot/rootfs/tools源码压缩包
| |-- mpp.tgz # 媒体处理平台软件压缩包
| `-- image # 可供FLASH烧写的映像文件,如内核、根文件系统
|-- scripts # 存放shell脚本的目录
|-- mpp # 存放媒体处理平台的目录
|-- component # 组件源代码
|-- extdrv # 板级外围驱动源代码
|-- include # 对外头文件
|-- ko # 内核模块
|-- lib # release版本库以及音频库
|-- tools # 媒体处理相关工具
`-- sample # 样例源代码

第三章、安装、升级hi3520DDEMO板开发开发环境
# 如果您使用的hi3520D的DEMO板,可以按照以下步骤烧写u-boot,内核以及文件系统,以下步骤均使用网络来更新。
# 通常,您拿到的单板中已经有u-boot,如果没有的话,就需要使用仿真器进行烧写。
# 更详细的操作步骤及说明,请参见01.software\board\documents目录下的《Linux开发环境用户指南》。
# 以下操作假设您的单板上已经有u-boot,使用网口烧写uboot、kernel及rootfs到Flash中。
# Demo单板默认为从SPI Flahs启动。
1、配置tftp服务器
# 可以使用任意的tftp服务器,将package/image_uclibc(或image_glibc)下的相关文件拷贝到tftp服务器目录下。

2、参数配置
# 单板上电后,敲任意键进入u-boot。设置serverip(即tftp服务器的ip)、ipaddr(单板ip)和ethaddr(单板的MAC地址)。
setenv serverip xx.xx.xx.xx
setenv ipaddr xx.xx.xx.xx
setenv ethaddr xx:xx:xx:xx:xx:xx
setenv netmask xx.xx.xx.xx
setenv gatewayip xx.xx.xx.xx
ping serverip,确保网络畅通。
3、烧写映像文件到SPI Flash
以16M SPI Flash为例。
1)地址空间说明
| 1M | 4M | 11M |
|---------------|---------------|---------------|
| boot | kernel | rootfs |
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
2)烧写u-boot
sf probe 0
mw.b 82000000 ff 100000
tftp 0x82000000 u-boot-hi3520D.bin
sf probe 0
sf erase 0 100000
sf write 82000000 0 100000
reset
3)烧写内核
mw.b 82000000 ff 400000
tftp 82000000 uImage_3520d
sf probe 0
sf erase 100000 400000
sf write 82000000 100000 400000
4)烧写文件系统
mw.b 82000000 ff b00000
tftp 0x82000000 rootfs_3520d_64k.jffs2
sf erase 500000 b00000
sf write 82000000 500000 b00000
5)设置启动参数
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'

sa

4、启动新系统
reset # 重启进入新系统。
第四章、开发前环境准备
1、管脚复用
与媒体业务相关的管脚复用都在mpp/ko_hi3520D目录下的sh脚本中配置,如果与实际情况不符请直接修改,此脚本被load3520D调用,在加载mpp内核模块之前被执行;
mpp之外的其他管脚复用统一在uboot中配置,详细说明请参见《U-boot移植应用开发指南》。

第五章、使用SDK和DEMO板进行开发
1、开启Linux下的网络
# 设置网络
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx;
ifconfig eth0 xx.xx.xx.xx netmask xx.xx.xx.xx;
route add default gw xx.xx.xx.xx
# 然后ping一下其他机器,如无意外,网络将能正常工作。
2、使用NFS文件系统进行开发
# 在开发阶段,推荐使用NFS作为开发环境,可以省去重新制作和烧写根文件系统的工作。
# 挂载NFS文件系统的操作命令:
mount -t nfs -o nolock -o tcp xx.xx.xx.xx:/your-nfs-path /mnt
# 然后就可以在/mnt目录下访问服务器上的文件,并进行开发工作。
3、开启telnet服务
# 网络正常后,运行命令 telnetd& 就可以启动单板telnet服务,然后才能使用telnet登录到单板。
4、运行MPP业务
# 在单板linux系统下,进入mpp/ko目录,加载KO
cd mpp/ko
./load3520D -i

# 进入各sample目录下执行相应样例程序(sample需要先在服务器上成功编译过)
cd mpp/sample/vio
./sample_vio 0

第六章 地址空间分配与使用
1、DDR内存管理说明
1)所有DDR内存中,一部分由操作系统管理,称为OS内存;另一部分由MMZ模块管理,供媒体业务单独使用,称为MMZ内存。
2)OS内存起始地址为0x80000000,内存大小可通过bootargs进行配置,例如第三章中的setenv bootargs 'mem=64M ... ',表示分配给操作系统内存为64M,您可以根据实际情况进行调整。
3)MMZ内存由MMZ内核模块管理(mpp/ko_hi35xx目录下的mmz.ko),加载mmz模块时,通过模块参数指定其起始地址及大小,例如:
insmod mmz.ko mmz=anonymous,0,0x84000000,186M:jpeg,0,0x8fa00000,5M anony=1 || report_error
表示mmz两块区域,区域一的名称为anonymous,起始地址为0x84000000,大小为186M;区域二的名称为jpeg,起始地址为0x8fa00000,大小为5M。
您可以通过修改mpp/ko_hi35XX目录下load3520D脚本中的mmz模块参数,来修改其起始地址和总大小。
4)请注意MMZ内存地址范围不能与OS内存重叠。
2、DEMO板DDR内存管理示意
1) 以容量为256MBytes的DDR内存为例,以下为根据本文档和SDK默认配置得到的内存管理示意图:

DDR:

-----|-------| 0x80000000 # Memory managed by OS.
64M | OS |
| |
-----|-------| 0x84000000 # Memory managed by MMZ block anonymous.
187M | MMZ |
| |
-----|-------| 0x8fa00000 # Memory managed by MMZ block jpeg.
5M | |
| |
-----|-------| 0x8ff00000 # Not used.
1M | |
| |
-----|-------| 0x90000000 # End of DDR.

注意:
(1)用户在配置启动参数时需要设置OS的管理内存为64M,“setenv bootargs 'mem=64M ...”。
(2)系统启动后,配置load3520D的脚本中mmz的管理内存为191M,“insmod mmz.ko mmz=anonymous,0,0x84000000,186M:jpeg,0,0x8fa00000,5M anony=1 || report_error”。

H. STM32 新手要怎么才能快捷的入门,有那种一边写代码一边视频教学的视频教程吗

STM32 神舟I号 开发板资料 目 录
术 语 表 8
前言必读(文档结构与快速入门) 8
第0章 入门了解篇 8
0.1 STM32嵌入式入门必看之文章(学习STM32的理由!!!!) 8
0.2 如何从零开始开发一款嵌入式产品(20年的嵌入式经验分享学习神舟系列) 10
0.2.1 需求定义 10
0.2.2 处理器的选择 12
0.2.3 开发成本的预测和估计 16
0.2.4 产品开发设计文档(需要包括硬件和软件两个方面) 16
0.2.5 嵌入式高手对技术的理解(含辛茹苦这么多年的精华体验) 18
第1章 神舟I号开发套件硬件结构 19
1.1. 电路原理图 19
1.2. 功能特点 19
1.3. 神舟I号开发板硬件电路分析 21
1.3.1. STM32F103RBT6处理器 21
1.3.2. LED指示灯 24
1.3.3. 普通按键与复位按键 25
1.3.4. USB接口 26
1.3.5. USB转串口接口 27
1.3.6. 供电电源 28
1.3.7. RTC实时时钟 29
1.3.8. 电位器(ADC介绍) 31
1.3.9. EEPROM存储器(IIC接口控制) 31
1.3.10. W25X16 16M SPI FLASH(LCD屏上安装) 32
1.3.11. MicroSD卡接口 33
1.3.12. JTAG调试接口 35
1.3.13. 液晶显示模块 37
1.3.14. 温度传感器 38
1.3.15. 315M无线模块 39
1.3.16. 2.4G无线模块 40
1.3.17. 液晶屏 41
1.3.18. 其他扩展接口 41
1.4. 硬件结构说明 43
1.5. 连接器说明 44
1.6. 硬件资源分配 46
1.6.1. 处理器连接外围器件管脚分配 46
1.7. STM32系列ARM最小系统设计 48
第2章 其他篇 53
2.1. 带触摸的液晶屏显示屏 53
2.2. 液晶屏底板设计说明 53
第3章 STM32神舟I号基本操作篇 53
3.1 简介 53
3.2 MDK 4.12集成开发环境的组成 53
3.3 安装MDK的流程步骤 54
3.4 工程的编辑 54
3.4.1 建立工程 54
3.4.2 建立文件 58
3.4.3 添加文件到工程 59
3.4.4 管理工程目录以及源文件 60
3.4.5 编译和连接工程 64
3.4.6 打开旧工程 66
3.5 RVMDK使用技巧 68
2.3.1. 快速定位函数/变量被定义的地方 68
2.3.2. 快速注释与快速消注释 69
2.3.3. 快速打开头文件 69
3.6 JLINK V8仿真器的安装与应用 70
3.6.1 JLINK V8仿真器简介 71
3.6.2 JLINK ARM主要特点 71
3.6.3 JLINK V8仿真器安装 71
3.6.4 JLINK V8仿真器配置(MDK KEIL环境) 73
3.6.5 JLINK V8仿真器配置(IAR 环境) 79
3.6.6 J-FLASH如何烧写固件到芯片FLASH里 83
3.6.7 JLINK Commander工具查看相关信息 87
3.6.8 JLINK V8仿真器如何自动升级 88
3.7 在MDK开发环境中JLINK V8的调试技巧 90
3.8 如何通过串口下载一个固件到神舟I号开发板 92
3.9 从零开始新建一个STM32的工程模板 95
第3章 STM32神舟I号快速入门篇 115
3.1. STM32神舟I号实验例程结构 115
3.2. 如何给神舟I号板供电 117
3.1.1. 使用USB供电 117
3.1.2. 使用USB转串口接口供电 117
3.1.3. 使用JLINK V8供电 117
3.3. 烧录固件程序的三种方法 118
3.4. 如何编译和运行光盘里的第一个程序: 119
3.10 如何用JLINK V8仿真和调试第一个程序 123
第4章 STM32神舟I号功能部件基础篇 127
4.1 通用输入/输出(GPIO) 127
4.1.1. 特性 127
4.1.2. 应用领域 127
4.1.3. 管脚描述 127
4.1.4. 功能描述 127
4.1.5. 寄存器描述 133
4.1.6. 寄存器小结 137
4.1.7. 例程01 单个LED点灯程序 137
4.1.8. 例程02 单个LED灯闪烁 139
4.1.9. 例程03 LED流水灯程序 140
4.2 中断控制器 143
4.2.1 简介 143
4.2.2 特性 143
4.2.3 关于NVIC 143
4.2.4 电平中断与脉冲中断 144
4.2.5 中断初始化与设置流程概述 144
4.2.6 寄存器描述 145
4.2.7 中断控制函数 148
4.2.8 外部中断示例 148
4.2.9 嵌套向量中断控制器(NVIC)使用示例 148
4.2.10 IRQ使用示例 148
4.2.11 软件中断使用示例 148
4.2.12 中断嵌套使用示例 148
4.2.13 这个例子说明如何设置在特定的CortexM3量表 地址以外的默认使用的功能的NVIC_SetVectorTable misc.h / .c驱动程序。 148
4.2.14 实验的意义与作用 148
4.3 KEY_LED按键与315M无线模块实验 149
4.2.1. 实验的意义与作用 149
4.2.2. 实验原理 149
4.2.3. 硬件设计 150
4.2.4. 软件设计 150
4.2.5. 下载与测试 154
4.4 USART-COM串口发送实验 155
4.3.1. 实验的意义与作用 155
4.3.2. 实验原理 155
4.3.3. 硬件设计 157
4.3.4. 软件设计 157
4.3.5. 下载与现象 159
4.5 USART-COM串口发送与接收实验 162
4.4.1. 实验的意义与作用 162
4.4.2. 实验原理 162
4.4.3. 硬件设计 162
4.4.4. 软件设计 162
4.4.5. 下载与现象 164
4.6 ADC模数转换实验 165
4.5.1 实验的意义与作用 165
4.5.2 实验原理 165
4.5.3 硬件设计 166
4.5.4 软件设计 166
4.5.5 下载与现象 168
4.7 EEPROM读写程序实验 169
4.6.1. 实验的意义与作用 169
4.6.2. 试验原理 169
4.6.3. 硬件设计 170
4.6.4. 软件设计 171
4.6.5. 下载与测试 174
4.8 SPI FLASH(W25X16)读写程序实验 175
4.7.1. SPI FLASH(W25X16)读写程序实验的意义与作用 175
4.7.2. 实验原理 175
4.7.3. 硬件设计 178
4.7.4. 软件设计 178
4.7.5. 下载与测试现象 185
4.9 实时时钟与年月日实验 186
4.8.1. 实验的意义与作用 186
4.8.2. 实验原理 186
4.8.3. 硬件设计 187
4.8.4. 软件设计 188
4.8.5. 下载与测试 194
4.10 独立看门狗实验 195
4.9.1. 实验的意义与作用 195
4.9.2. 实验原理 195
4.9.3. 硬件设计 197
4.9.4. 软件设计 197
4.9.5. 下载与测试 199
4.11 SYSTICK实验 200
4.10.1. 硬件设计 200
4.10.2. 软件设计 201
4.10.3. 下载与测试 202
4.12 TFT彩屏显示实验 203
4.11.1 实验的意义与作用 203
4.11.2 实验原理 203
4.11.3 硬件设计 205
4.11.4 软件设计 206
4.11.5 下载与现象 211
4.13 TFT触摸屏显示加触摸实验 212
4.12.1. 实验的意义与作用 212
4.12.2. 实验原理 212
4.12.3. 硬件设计 213
4.12.4. 软件设计 213
4.12.5. 下载与现象 218
4.14 DS18B20温度传感器实验 219
4.13.1. 实验的意义与作用 219
4.13.2. 试验原理 219
4.13.3. 硬件设计 220
4.13.4. 软件设计 220
4.13.5. 下载与现象 222
4.15 2.4G模块通信试验 223
4.14.1. 2.4G模块通信实验的意义与作用 223
4.14.2. 实验原理 223
4.14.3. 硬件设计 223
4.14.4. 软件设计 224
4.14.5. 下载与测试现象 230
4.16 USB遥控鼠标实验 231
4.15.1. 实验的意义与作用 231
4.15.2. 实验原理 231
4.15.3. 硬件设计 232
4.15.4. 软件设计 233
4.15.5. 下载与测试 236
4.17 MICRO SD卡实验 237
4.16.1. 实验的意义与作用 237
4.16.2. 实验原理 237
4.16.3. 硬件设计 239
4.16.4. 软件设计 240
4.16.5. 下载与测试 244
4.18 SD-USB读卡器实验 245
4.17.1. 实验的意义与作用 246
4.17.2. 试验原理 246
4.17.3. 硬件设计 246
4.17.4. 软件设计 247
4.17.5. 下载与测试 250
4.19 UCOS_UCGUI_DEMO实验 251
第5章 高级实验 252
第6章 实验现象 252

I. 32位汇编怎么编译程序 我看罗云斌的32位汇编书看到第二章卡住了,

要了解nmake语法
用RadASM很不错的IDE

阅读全文

与第二章编译教学视频相关的资料

热点内容
在线视频教育源码 浏览:39
快四十学什么编程 浏览:754
gnumakelinux 浏览:537
视易峰云服务器怎么改系统 浏览:535
javamap取值 浏览:768
mac和win磁盘加密软件 浏览:474
苹果为什么会连接不到服务器 浏览:726
pdf格式文件如何保存 浏览:303
小霸王服务器tx什么意思 浏览:75
解释dns命令 浏览:584
dmx512怎么编程 浏览:744
北京云主机17t云服务器 浏览:232
php服务器url地址 浏览:440
哪里看书免费app 浏览:437
php删除数组中重复值 浏览:786
经理下命令咱都别说话是什么意思 浏览:625
上海风机可编程控制器价格 浏览:249
工行app取消自动转账功能在哪里 浏览:719
传奇特殊命令 浏览:677
怎么查移动定向流量使用的app 浏览:82