A. C語言全套教學視頻
C語言程序設計
若資源有問題歡迎追問~
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