① 想往嵌入式發展,c語言應該怎麼精通
我也正在向這個方向發展,以後多多交流。
如果你是學電子的,那麼做驅動比較吃香。如果你是學計算機的,那麼就做應用程序開發吧。
無論做什麼都要對linux內核有足夠的了解,因為他們基本都是編譯在一起的,因為arm的ROM空間有限,不像PC機有那麼大的RAM和磁碟空間。
個人覺得還是做驅動比較好,就多看看驅動方面的程序,成品有很多(都是C語言邊的,嵌入式中很少有匯編,除非必須,如bootloader的第一階段stage1),基本都大同小異,改一改都可以用,主要是看一下他們的設計思想,前途一片光明。
還要多看看linux編程和unix編程,因為他們都支持POSIX,互相兼容,linux也是在unix的基礎上發展起來的。
最主要的是持之以恆,祝你好運!!!沒事call我:[email protected]
② 如何學慣用C語言編寫arino嵌入式
有C語言基礎後,直接購買arino嵌裂洞入式相關書藉去練習,去模仿,直接肆逗枯你有了arino嵌入式系統概念後,就差不多可以指衡寫一點有功能程序了
③ surf演算法C語言編寫,要做嵌入式開發,不要C++和基於OPENCV的
surf借鑒了sift中簡化近似的思想,將DOH中的高斯二階微分模板進行了近似簡化,使得模板對圖像的濾波只需要進行幾個簡單的加減法運算,並且,這種運算與濾波模板的尺寸有關。實驗證明surf演算法較sift演算法在運算速度上要快3倍左右。
1積分圖像
surf演算法中要用到積分圖像的概念。藉助積分圖像,圖像與高斯二階微分模板的濾波轉化為對積分圖像的加減運算。積分圖像(IntegralImage)的概念是由viola和Jones提出來的,而將類似積分圖像用於盒子濾波是由Simard等人提出。
積分圖像中任意一點(i,j)的值為ii(i,j)為原圖像左上角到任意點(i,j)相應的對角線區域灰度值的總和即:
公式中,I(x`,y`)表示原圖像中點(i`,j`)的灰度值,ii(x,y)可以由下面兩公式迭代計算得到:
公式中,S(x,y)表示一列的積分,且S(i,-1)=0,ii(-1,j)=0.求積分圖像,只需對原圖像的所有像素素進行一遍掃描。下面的代碼為c++語言的實現
pOutImage[0][0]=pInImage[0][0];
for(intx=1,x<nWidth;i++)
{
pOutImage[x][0]=pInImage[x-1][0]+pInImage[x][0];
}
for(inty=1;y<nHeight;y++)
{
intnSum=0;
for(intx=0;x<nWidth;x++)
{
nSum=pInImage[x][y];
pOutImage[x][y]=pInImage[x][y-1]+nSum;
}
}
如圖表示,在求取窗口w內的像元灰度和時,不管窗口W的大小如何,均可利用積分圖像的4個對應點(i1,j1)(i2,j2)(i3,j3)(i4,j4)的值計算的到。也就是說,求取窗口W內的像元灰度和與窗口的尺寸是無關的。窗口W內的像元的灰度和為
Sum(W)=ii(i4,j4)-ii(i2,j2)-ii(i3,j3)+ii(i1,j1)
下面看以截圖,相信都可以看懂
關於矩形區域內像素點的求和應該是一種簡單重復性運算,採用這種思路總體上提高了效率。為什麼這么說呢?假設一幅圖片共有n個像素點,則計算n個位置的積分圖總共的加法運算有n-1次(注意:可不是次哦,要充分利用遞推思想),將這些結果保存在一個跟原圖對應的矩陣M中。當需要計算圖像中某個矩形區域內的所有像素之和是直接像查表一樣,調出A,B,C,D四點的積分圖值,簡單的加減法(注意只需要三次哦)即可得到結果。反之,如果採用naive的方式直接在原圖像中的某個矩形區域內求和,你想想,總共可能的矩形組合有多少?!!且對於一幅圖像n那是相當大啊,所以2^n
那可是天文數字,而且這裡面絕大部分的矩形有重疊,重疊意味著什麼?在算求和的時候有重復性的工作,其實我們是可以有效的利用已經計算過的信息的。這就是積分圖法的內在思想:它實際上是先計算n個互不重疊(專業點說是不相交)的矩形區域內的像素點求和,充分利用這些值(已有值)計算未知值,有點類似遞推的味道...這就完全避免了重復求和運算。
這樣就可以進行2種運算:
(1)任意矩形區域內像素積分。由圖像的積分圖可方便快速地計算圖像中任意矩形內所有像素灰度積分。如下圖2.3所示,點1的積分圖像ii1的值為(其中Sum為求和):
ii1=Sum(A)
同理,點2、點3、點4的積分圖像分別為:
ii2=Sum(A)+Sum(B);ii3=Sum(A)+Sum(C);ii4=Sum(A)+Sum(B)+Sum(C)+Sum(D);
矩形區域D內的所有像素灰度積分可由矩形端點的積分圖像值得到:
Sum(D)=ii1+ii4-(ii2+ii3)(1)
(2)特徵值計算
矩形特徵的特徵值是兩個不同的矩形區域像素和之差,由(1)式可以計算任意矩形特徵的特徵值,下面以圖2.1中特徵原型A為例說明特徵值的計算。
如圖2.4所示,該特徵原型的特徵值定義為:
Sum(A)-Sum(B)
根據(1)式則有:Sum(A)=ii4+ii1-(ii2+ii3);Sum(B)=ii6+ii3-(ii4+ii5);
所以此類特徵原型的特徵值為:
(ii4-ii3)-(ii2-ii1)+(ii4-ii3)-(ii6-ii5)
另示:運用積分圖可以快速計算給定的矩形之所有象素值之和Sum(r)。假設r=(x,y,w,h),那麼此矩形內部所有元素之和等價於下面積分圖中下面這個式子:
Sum(r)=ii(x+w,y+h)+ii(x-1,y-1)-ii(x+w,y-1)-ii(x-1,y+h)
由此可見,矩形特徵特徵值計算只與此特徵端點的積分圖有關,而與圖像坐標值無關。對於同一類型的矩形特徵,不管特徵的尺度和位置如何,特徵值的計算所耗費的時間都是常量,而且都只是簡單的加減運算。其它類型的特徵值計算方法類似。
④ 嵌入式系統需要學什麼語言
嵌入式系統需要學C語言編程。
根據中國物聯網山滾校企聯盟的建議,學習嵌入式系統的必備知識與學習方法如下:
1、C開發經驗
條件:Linux。方法:主要是掌握ANSI C編程(逗胡余不包括gtk,qt等圖形可視化開發)
2、網路、操作系統、體系結構
條件:Linux,各種書,演算法、常式。方法:通過C編程實現簡單的網路等知識的演算法和過程。
3、嵌入式系統概念
條件:各個嵌入式網站,討論組,書籍。方法:少提問,多留給自己思考的空間。
4、嵌入式開發實踐
條件:各種嵌入式系統開發工具的demo版,包括編譯器,模擬器。
方法:一個是基於MCU/MDSP的嵌入式系統開發,另一個是像Palm OS,WinCE,uC/OS II等RTOS下的應用軟體開發。第一個是針對硬體開發而言的,而第二個則是針對軟體開發而言的。
(4)c語言編程嵌入式圖形擴展閱讀
發展趨勢:
1、嵌入式開做掘發是一項系統工程,因此要求嵌入式系統廠商不僅要提供嵌入式軟硬體系統本身,同時還需要提供強大的硬體開發工具和軟體包支持。
目前很多廠商已經充分考慮到這一點,在主推系統的同時,將開發環境也作為重點推廣。比如三星在推廣Arm7,Arm9晶元的同時還提供開發板和板級支持包(BSP)。
而WindowCE在主推系統時也提供Embedded VC++作為開發工具,還有Vxworks的Tonado開發環境,DeltaOS的Limda編譯環境等等都是這一趨勢的典型體現。當然,這也是市場競爭的結果。
2、網路化、信息化的要求隨著網際網路技術的成熟、帶寬的提高日益提高,使得以往單一功能的設備如電話、手機、冰箱、微波爐等功能不再單一,結構更加復雜。
⑤ C語言 編程語言 嵌入式
程序不完整,將兩個數據送到8位數碼管顯示,程序里求余除法等操作時為了獲取每位的數,Disp_Tab存放的是編碼好的0~9對應的數據編碼,然後將Disp_Tab[]賦值到數碼管,顯示數據。
⑥ 單片機c語言和圖形化編程的區別
單片機可以用匯編語言編程,也可以用高級語言C、Basic編程,也可以用圖形化語言編程。工業控制中普遍採用可編程式控制制器,其CPU模塊內的微控制器往往是普通的單片機,而可編程式控制制器可以梯形圖編程,或者用流程圖編程。現在的智能教育機器人控制器均用單片機,而這些機器人的編程大多支持流程圖編程。上海廣茂達電子信息有限公司的能力風暴系列機器人採用VJC可視化流程圖與C語言編程;中鳴機器人系列採用機器人快車軟體編程,該軟體也是可視化流程圖與C語言編程;西米亞公司的樂高系列、博思威龍機器人、美國的VEX系列機器人、雙龍公司的機器人DIY系列均可以採用可視化流程圖與C語言編程。而這些機器人的控制系統核心均為單片機。由此可知,普通單片機的開發一定可以採用流程圖編程。其實,機器人的流程圖編制軟體可以反過來作為相應單片機的編程軟體。下面用一個實例詳細說明單片機如何用圖形化編程。
1 問題描述
某機器上,2台電機通過滾珠絲杠驅動工作台做順序運動,如圖1所示。用單片機系統控制2台電機,實現規定的順序動作。當行程開關KX1壓下時,電機D1帶動卡緊機構右移,右移到撞塊壓下KX2時,電機D1停轉,並且這種狀態延遲一段時間T1。電機D2按以下順序開始動作:當行程開關KX3壓下時,電機D2帶動工作台右移,工作台右移到撞塊壓下KX4時,電機D2停轉,並且這種狀態延遲一段時間T2;然後電機D2反轉,帶著工作台向左返回,工作台返回左側壓下KX3時,電機D2停轉,同時電機D1反轉,松開卡緊機構直到KX1壓下,電機D1停轉。
圖1 卡緊機構和工作台的順序動作動作
順序如圖2所示。
圖2 動作順序圖
2 單片機控制系統組成
實現上述控制功能的方案有多種,如繼電器接觸器控制系統、可編程序控制器控制系統、單片機控制系統等。本文用單片機控制系統來實現上述控制動作,單片機控制系統的組成如圖3所示。
圖3 單片機控制系統結構圖
單片機採用Motorola公司的MC68HC11E1。為了模擬實驗的需要,單片機控制系統採用上海廣茂達電子信息有限公司的能力風暴機器人ASUII中的主控制板。行程開關KX1~KX4用機器人上的碰撞開關來模擬,碰撞開關電路如圖4(a)所示。電機D1、D2用機器人2輪的驅動電機來模擬,電路如圖4(b)所示。其中,電機驅動晶元選用的是TI公司的SN754410。
型笑
圖4 能力風暴機器人上的碰撞開關電路和驅動電機電路
3 VJC程序流程
使用能力風暴機器人的編程開發環境VJC1.6(可以從上海廣茂達電子信息有限公司網站www.grandar.com上下載)編制、調試和下載程序。針對上述單片機雙電機啟停控制系統,用VJC1.6編制的流程圖如圖5所示。實際的單片機控制系統,只要把相應的感測器及其驅動電路、電機及其驅動電路更改成適應實際對象的元器件,就仍然可以用這種單片機控制板和相應的編程軟體。更進一步的應用可以擴充軟硬體系統。
程序總體為一循環程序。在每一次循環中,依次檢測4個碰撞開關,按照電機的動作順序要求啟動或停止電機。程序模塊的使用和變數的設置方法此處從略,請參見說明書,或與上海廣茂達電子信息有限公司聯系。
圖5的流程圖在VJC1.6環境下可以轉化為C語言程序,具體可卜搏含參看VJC1.6的使用。
在VJC1.6環境下編制的程序,無論是流程圖還是C語言程序,均可以直接下載到單片機的快閃記憶體或EEPROM中, 這也是這種編程和開發方法受到人們歡迎的原因。但是目前這種方法僅用在以單片機為核心的智能機器人的程序開發之中,還沒有專門用於單片機開發的這種圖形化編程環境,相信不久的將來就會出現這種方法。
圖5 雙電機啟停控制部分流程圖
結語
這里單片機系統實現的功能就相當於一個可編程式控制制器系統,而且編程語言是流程圖語言。可見,某些單片機系統略加擴充就可以成為一個可以使用流程圖編程、C語言編程和匯編語言編程的功能相當完備的可編程式控制制器,從而與現有的可編程式控制制器銀雹在工業控制領域並駕齊驅。
打開APP閱讀更多精彩內容
相關推薦
圖形
面向STEM教育的圖形化編程機器人
2023-01-03
16
Codecraft:嵌入式機器學習的圖形化編程
2022-11-08
79
求openharmony圖形化的編程軟體
2022-05-05
0
Mixly圖形化編程軟體介紹
2021-09-01
0
最近做了個【51單片機積木式圖形化中文編程軟體/c語言代碼生成器/電路模擬】
2021-08-08
0
淺析Mixly圖形化編程軟體
2021-08-04
0
Scratch圖形化編程軟體安裝包下載
2021-06-18
752
labview圖形化編程分享!
2019-10-20
0
【推薦】Arino圖形化編程軟體
2018-05-13
0
LabVIEW圖形化編程語言的編程範式
2015-01-19
0
圖形化編程軟體LabVIEW應用課程
2013-08-01
0
圖形化編程
2013-05-24
0
Arino教程_Arino圖形化編程教程_ArBlock
2012-09-25
10969
cpuview圖形化單片機編程軟體下載
2010-04-09
5615
當千本櫻遇上步進電機。。。
機械工程 電路設計分析
周廣x
2022年02月11日 10:21:57
教你製作流水燈
電工技術 電路設計分析 流水燈
周廣x
2022年02月10日 16:20:29
和同學製作特斯拉線圈,暑假特別的一天
元器件 晶元驗證板 開發板
周廣x
2022年02月10日 16:15:25
高中某UP用7分鍾教你製作特斯拉線圈 - 1.高中某UP用7分鍾教你製作特斯拉線圈
電氣設備 電路設計分析
周廣x
2022年02月11日 10:29:51
教你製作LM317擴流可調穩壓電源,最大電流能到5A呢!
穩壓電源 LM lm317 可調穩壓電源
周廣x
2022年02
⑦ 急求這道嵌入式系統C語言編程的題解答
1,使能GPIO和串口1的時鍾。
2,設置串口波特率為115200.
3,設置串口數據寬度為8位
4,設置串口停止位為1位
5,設置串口無校驗
6,設置串口無需硬體控制。
7,設置串口的模式
8,根據配置初始化串口。
9,串口使能。
⑧ 嵌入式系統開發中的C語言編程和普通C語言編程有何區別
無區別,只不過編譯器不一樣罷了。因為不同的cpu構架有不同的指令集。而嵌入式基本使用RISC結構的cpu,需要使用pc上的cpu編譯出在能嵌入式cpu上運行的二進製程序。這叫交叉編譯。pc上的程序不可以直接在其他cpu上運行,需要重新編譯。
因為編譯器不一樣,執行的c語言標准就跟編譯器相關。
管理內存映射,設置中斷系統等在pc上也有,不是嵌入式的專利。
只是做嵌入式里的界面、網路、文件編程的話,跟pc上幾乎沒有差別,因為有操作系統罩著。如果開發驅動程序,就要求你對所使用的cpu和板子的結構很了解,也就是看得懂硬體手冊即可。
另外嵌入式環境同pc的差別 如cpu位數、硬體資源緊缺等是需要程序員考慮的。
⑨ 用c語言編寫程序在屏幕顯示圖形
最簡單姿氏枝的方法,不像其他人那麼麻煩跡敏核李的
#include<stdio.h>
voidmain()
{
printf("* *** ***** *** *");
}
⑩ c語言編程如何實現圖形化
這要看你所使用的系統平台,圖形化編程與系統平台息息相關
對於C語言來說,有許多成熟的框架。比如Windows上可使用Windows的系統API,Linux下有GTK,嵌入式環境下有miniGUI等。
C語言是一門比較特殊的語言,雖然也是高級編程語言的一種,但是為了和其他語言區分開來,部分人也會將C語言稱作中級語言,主要是因為C語言不是面向對象的語言,並且有指針這樣的利器可以直接對底層以及硬體進行操作。
正是因為C語言不是面向對象的語言,在圖形化這樣更偏上層的應用中,一般會使用C++替代C語言,這樣能極大的降低開發的工作量。
比如,Windows下可使用MFC,WPF也支持C++。Linux下一般用跨平台的QT(可在Windows/MAC等多種平台運行)。嵌入式環境下有嵌入式的QT版本。