在短短的兩周內,我們集中學習了ARM體系結構相關課程和ucos基礎課程,并第一次深入一個操作系統的內部進行詳細的學習探究。
在學習了ucos和相關工具下的demo之后,我終于將匯編、hex、c等底層代碼和硬件聯系在了一起。一直做web、桌面應用開發,我這次算是體驗到了另外的世界和開發思路。
?
關注于:
- 代碼計數用大小k
- 關注效率
- 關注空間
- 注意賦值--掩碼賦值
- 學會看芯片時序圖
- 看清引腳
- 等等
下面開始我們的Hello world之旅吧。
在實驗室寫blog,沒有linux環境,所以在描述windows相關操作和技巧時會有疏漏,如果疑問敬請斧正。
?
點燈和閃亮的基本原理:對于一個發光二極管(流水燈的顯示器),其發光是電流可正向通過,也就是說兩邊一邊高電壓一邊低電壓。如下圖所示,如果上面是高電壓,下面是低電壓則這個發光二極管就可以亮。
?
首先需要建立一個工程,在這里使用的是一個強大的嵌入式IDE:Keil uVision3. Project->New u...Project->choose a file-> select device -> NXP(LPC2124)->確定拷貝數據
然后,讓這個工程在編譯完文件后輸出hex(用于電路板的二進制文件)文件.
Project-> Options about... -> Output -> Create HEX File
?
最后編碼并生成。
繪制電路圖,并導入HEX文件。
?電路圖的關鍵:左下方電源的配置連接,發光二極管的電阻連接。
代碼結構:
#include <LPC21xx.h> //多用宏,不論是遷移還是使用都很方便,而且方便閱讀 #define ALL 0x3;//用于燈連接的端口 P0.0 P0.1 unsigned long i;//用于延時計數的變量 int j; void delay(){ i=0x000FFFFF; while(i)i--; } int main(){ //所有的芯片默認狀態時GPIO,輸入輸出數據口 IO0DIR = ALL;//對應的二進制數是:0000 0000 0000 0011 , //即對應的P0.0, P0.1口為數據輸出口 j = 0; while(1){ IO0SET = ALL;//導致二極管的兩極都為高電位,從而不亮 j++; j%=2;//奇偶計數 if(j){ IO0CLR = 0x1; //讓P0.0低電壓 }else{ IO0CLR = 0x2; //讓P0.1低電壓 } delay(); } }
?細節的討論還會補充。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
