1、對(duì)齊算法
在相同的對(duì)齊方式下,結(jié)構(gòu)體內(nèi)部數(shù)據(jù)定義的順序不同,結(jié)構(gòu)體整體占據(jù)內(nèi)存空間也不同。
如下結(jié)構(gòu)體定義:
struct A {
// a 的自身對(duì)齊值為 4,偏移地址為 0x00~0x03,a 的起始地址 0x00 滿足 0x00%4=0
int a;
// b 的自身對(duì)齊值為 1,由于緊跟 a 之后的地址,即 0x04 滿足 0x04%1=0,所以 b 存放在 0x04 地址空間
char b;
// c的自身對(duì)齊值為2,由于緊跟b之后的地址0x05%2不是0,而0x06%2=0
// 因此c的存放起始地址為0x06,存放在0x06~0x07空間。
// 在b和c之間的0x05地址則補(bǔ)空字節(jié)
short c;
};
結(jié)構(gòu)體A中包含:
1)4 字節(jié)長(zhǎng)度的 int;
2)1 字節(jié)長(zhǎng)度的 char;
3)2 字節(jié)長(zhǎng)度的 short 型數(shù)據(jù)一個(gè)。
所以 A 用到的空間應(yīng)該是 7 字節(jié)。
但是因?yàn)?a href="http://www.nncyjs.com/zhuanti/vv5yz9" style="color:#4595e6;" target="_blank">編譯器要對(duì)數(shù)據(jù)成員在空間上進(jìn)行對(duì)齊,由于結(jié)構(gòu)體自身對(duì)齊值取數(shù)據(jù)成員中自身對(duì)齊值的最大值,即 4,并且 0x00~0x07 的 8 字節(jié)空間滿足 8%4=0,所以 sizeof(strcut A) 值為 8。
現(xiàn)在把該結(jié)構(gòu)體調(diào)整成員變量的順序:
struct B {
// b的自身對(duì)齊值為1,其起始地址為0x00,由于滿足0x00%1=0,所以b存放在0x00地址空間
char b;
// a的自身對(duì)齊值為4,由于緊跟b之后的地址0x01%4不是0,而0x04%4=0
// 因此c的存放起始地址為0x04,存放在0x04~0x07空間。
// 在b和a之間的0x01~0x03地址則補(bǔ)3個(gè)空字節(jié)。
int a;
// c的自身對(duì)齊值為2,由于緊跟a之后的地址0x08%2=0,因此c的存放起始地址為0x08,存放在0x08~0x09空間
short c;
};
這時(shí)候同樣是總共7個(gè)字節(jié)的變量,但是由于結(jié)構(gòu)體自身對(duì)齊值取數(shù)據(jù)成員中自身對(duì)齊值的最大值,即4;
并且0x00~0x09的10字節(jié)空間不滿足10%4=0,而12%4=0,所以sizeof(struct B)的值卻是12,即在緊跟c之后的0x0A~0x0B地址還需補(bǔ)兩個(gè)空字節(jié),使得整個(gè)結(jié)構(gòu)體占用的字節(jié)空間為12個(gè)字節(jié)。
下面我們使用預(yù)編譯指令#pragma pack (value)來(lái)告訴編譯器,使用我們指定的對(duì)齊值來(lái)取代缺省的。
#pragma pack (2) /*指定按2字節(jié)對(duì)齊,等價(jià)于#pragma pack(push,2)*/
struct C {
char b;
int a;
short c;
};
#pragma pack () /*取消指定對(duì)齊,恢復(fù)缺省對(duì)齊,等價(jià)于#pragma pack(pop)*/
sizeof(struct C) 值是8。
修改對(duì)齊值為1:
#pragma pack (1) /*指定按1字節(jié)對(duì)齊*/
struct D {
char b;
int a;
short c;
};
#pragma pack () /*取消指定對(duì)齊,恢復(fù)缺省對(duì)齊*/
sizeof(struct D) 值為7。
對(duì)于char型數(shù)據(jù),其自身對(duì)齊值為1,對(duì)于short型為2,對(duì)于int,float,long類型,其自身對(duì)齊值為4,double,long long類型,其自身對(duì)齊值為8單位字節(jié)。
2、四個(gè)概念值
1)數(shù)據(jù)類型自身的對(duì)齊值,就是上面交代的基本數(shù)據(jù)類型的自身對(duì)齊值;
2)指定對(duì)齊值:#pragma pack (value)時(shí)的指定對(duì)齊值value;
3)結(jié)構(gòu)體或者類的自身對(duì)齊值:其數(shù)據(jù)成員中自身對(duì)齊值最大的那個(gè)值;
4)數(shù)據(jù)成員、結(jié)構(gòu)體和類的有效對(duì)齊值:自身對(duì)齊值和指定對(duì)齊值中小的那個(gè)值;
有了這些值,我們就可以很方便的來(lái)討論具體數(shù)據(jù)結(jié)構(gòu)的成員和其自身的對(duì)齊方式。
有效對(duì)齊值N是最終用來(lái)決定數(shù)據(jù)存放地址方式的值,最重要。
有效對(duì)齊N,就是表示“對(duì)齊在N上”,也就是說(shuō)該數(shù)據(jù)的"存放起始地址%N=0"。
而數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)變量都是按定義的先后順序來(lái)排放的。
第一個(gè)數(shù)據(jù)變量的起始地址就是數(shù)據(jù)結(jié)構(gòu)的起始地址。
結(jié)構(gòu)體的成員變量要對(duì)齊排放,結(jié)構(gòu)體本身也要根據(jù)自身的有效對(duì)齊值圓整,就是結(jié)構(gòu)體成員變量占用總長(zhǎng)度需要是對(duì)結(jié)構(gòu)體有效對(duì)齊值的整數(shù)倍。
這樣就不難理解上面的幾個(gè)例子的值了。
例子分析:
struct B {
char b;
int a;
short c;
};
假設(shè)B從地址空間0x0000開(kāi)始排放。
該例子中沒(méi)有定義指定對(duì)齊值,該值默認(rèn)為4。
第一個(gè)成員變量b的自身對(duì)齊值是1,比指定或者默認(rèn)指定對(duì)齊值4小,所以其有效對(duì)齊值為1,所以其存放地址0x0000符合0x0000%1=0.
第二個(gè)成員變量a,其自身對(duì)齊值為4,所以有效對(duì)齊值也為4,所以只能存放在起始地址為0x0004到0x0007這四個(gè)連續(xù)的字節(jié)空間中,符合0x0004%4=0, 且緊靠第一個(gè)變量。
第三個(gè)變量c,自身對(duì)齊值為2,所以有效對(duì)齊值也是2,可以存放在0x0008到0x0009這兩個(gè)字節(jié)空間中,符合0x0008%2=0。所以從0x0000到0x0009存放的都是B內(nèi)容。
再看數(shù)據(jù)結(jié)構(gòu)B的自身對(duì)齊值為其變量中最大對(duì)齊值(這里是a)和指定對(duì)齊值(這里是4)中較小的那個(gè),所以就是4,所以結(jié)構(gòu)體的有效對(duì)齊值也是4。
根據(jù)結(jié)構(gòu)體圓整的要求,0x0009到0x0000=10字節(jié),(10+2)%4=0。
所以0x0000A到0x000B也為結(jié)構(gòu)體B所占用,故B從0x0000到0x000B共有12個(gè)字節(jié),sizeof(struct B)=12;、
#pragma pack (2) /*指定按2字節(jié)對(duì)齊*/
struct C {
char b;
int a;
short c;
};
#pragma pack () /*取消指定對(duì)齊,恢復(fù)缺省對(duì)齊*/
第一個(gè)變量b的自身對(duì)齊值為1,指定對(duì)齊值為2,所以,其有效對(duì)齊值為1,假設(shè)C從0x0000開(kāi)始,那么b存放在0x0000,符合0x0000%1=0;
第二個(gè)變量,自身對(duì)齊值為4,指定對(duì)齊值為2,所以有效對(duì)齊值為2,所以順序存放在0x0002、0x0003、0x0004、0x0005四個(gè)連續(xù)字節(jié)中,符合0x0002%2=0。
第三個(gè)變量c的自身對(duì)齊值為2,所以有效對(duì)齊值為2,順序存放在0x0006、0x0007中,符合0x0006%2=0。
所以從0x0000到0x00007共八字節(jié)存放的是C的變量,又C的自身對(duì)齊值為4;
所以C的有效對(duì)齊值為2。又8%2=0,C只占用0x0000到0x0007的八個(gè)字節(jié)。所以sizeof(struct C)=8.
更改c編譯器的缺省字節(jié)對(duì)齊方式:
在缺省情況下,c編譯器為每一個(gè)變量或數(shù)據(jù)單元按其自然對(duì)界條件分配空間;
一般地可以通過(guò)下面的兩種方法來(lái)改變?nèi)笔〉膶?duì)界條件:
方法一:
使用#pragma pack(n),指定c編譯器按照n個(gè)字節(jié)對(duì)齊;
使用#pragma pack(),取消自定義字節(jié)對(duì)齊方式。
方法二:
__attribute(aligned(n)),讓所作用的數(shù)據(jù)成員對(duì)齊在n字節(jié)的自然邊界上;
如果結(jié)構(gòu)中有成員的長(zhǎng)度大于n,則按照最大成員的長(zhǎng)度來(lái)對(duì)齊;
__attribute((packed)),取消結(jié)構(gòu)在編譯過(guò)程中的優(yōu)化對(duì)齊,按照實(shí)際占用字節(jié)數(shù)進(jìn)行對(duì)齊。
比如:
typedef struct
{
...
}__attribute__((aligned(4))) param_t;
3、示例
例子一:
#pragma pack(4)
class TestB
{
public:
int aa; //第一個(gè)成員,放在[0,3]偏移的位置,
char a; //第二個(gè)成員,自身長(zhǎng)為1,#pragma pack(4),取小值,也就是1,所以這個(gè)成員按一字節(jié)對(duì)齊,放在偏移[4]的位置。由于下一成員short b是按2字節(jié)對(duì)齊,因此char a后面只需補(bǔ)一個(gè)空字節(jié)
short b; //第三個(gè)成員,自身長(zhǎng)2,#pragma pack(4),取小值為2,按2字節(jié)對(duì)齊,所以放在偏移[6,7]的位置。
char c; //第四個(gè),自身長(zhǎng)為1,放在[8]的位置。
};
可見(jiàn),此類實(shí)際占用的內(nèi)存空間是9個(gè)字節(jié)。
根據(jù)規(guī)則5,結(jié)構(gòu)整體的對(duì)齊是min( sizeof( int ), pack_value ) = 4,所以sizeof( TestB ) = 12;
char a 占用一個(gè)字節(jié),后面補(bǔ)3個(gè)空字節(jié);
short b和char c可以放在同一4字節(jié)空間中,后面只需補(bǔ)一個(gè)空字節(jié)。
例子二:
#pragma pack(2)
class TestB
{
public:
int aa; //第一個(gè)成員,放在[0,3]偏移的位置,
char a; //第二個(gè)成員,自身長(zhǎng)為1,#pragma pack(4),取小值,也就是1,所以這個(gè)成員按一字節(jié)對(duì)齊,放在偏移[4]的位置。由于下一成員short b按2字節(jié)對(duì)齊,因此char a后面只需補(bǔ)一個(gè)空字節(jié)
short b; //第三個(gè)成員,自身長(zhǎng)2,#pragma pack(4),取2,按2字節(jié)對(duì)齊,所以放在偏移[6,7]的位置。
char c; //第四個(gè),自身長(zhǎng)為1,放在[8]的位置。
};
可見(jiàn)結(jié)果與例子一相同,各個(gè)成員的位置沒(méi)有改變,此時(shí)結(jié)構(gòu)整體的對(duì)齊是min( sizeof( int ), pack_value ) = 2,所以sizeof( TestB ) = 10;char a后面補(bǔ)一個(gè)空字節(jié);char c后面補(bǔ)一個(gè)空字節(jié)。
例子三:
#pragma pack(4)
class TestC
{
public:
char a; //第一個(gè)成員,放在[0]偏移的位置,由于下一成員short b按2字節(jié)對(duì)齊,因此char a后面只弱補(bǔ)一個(gè)空字節(jié)
short b; //第二個(gè)成員,自身長(zhǎng)2,#pragma pack(4),取2,按2字節(jié)對(duì)齊,所以放在偏移[2,3]的位置。
char c; //第三個(gè),自身長(zhǎng)為1,放在[4]的位置。
};
整個(gè)類的實(shí)際內(nèi)存消耗是5個(gè)字節(jié),整體按照min( sizeof( short ), 4 ) = 2對(duì)齊,所以結(jié)果是sizeof( TestC ) = 6。
例子四:
struct Test
{
char x1; //第一個(gè)成員,放在[0]位置。由于下一成員short x2按2字節(jié)對(duì)齊,因此char x1后面只需補(bǔ)一個(gè)空字節(jié),
short x2; //第二個(gè)成員,自身長(zhǎng)度為2,按2字節(jié)對(duì)齊,所以放在偏移[2,3]的位置,
float x3; //第三個(gè)成員,自身長(zhǎng)度為4,按4字節(jié)對(duì)齊,所以放在偏移[4,7]的位置,
char x4; //第四個(gè)成員,自身長(zhǎng)度為1,按1字節(jié)對(duì)齊,所以放在偏移[8]的位置,
};
所以整個(gè)結(jié)構(gòu)體的實(shí)際內(nèi)存消耗是9個(gè)字節(jié),考慮到結(jié)構(gòu)整體的對(duì)齊是4個(gè)字節(jié),所以整個(gè)結(jié)構(gòu)占用的空間是12個(gè)字節(jié)。char x1和short x2共用一個(gè)4字節(jié)空間,后面補(bǔ)一個(gè)空字節(jié);char x4后面需要補(bǔ)3個(gè)空字節(jié)。
例子五:
#pragma pack(8)
struct s1
{
short a; //第一個(gè),放在[0,1]位置,
long b; //第二個(gè),自身長(zhǎng)度為4,按min(4, 8) = 4對(duì)齊,所以放在[4,7]位置
};
所以結(jié)構(gòu)體的實(shí)際內(nèi)存消耗是8個(gè)字節(jié);
結(jié)構(gòu)體的對(duì)齊是min( sizeof( long ), pack_value ) = 4字節(jié),所以整個(gè)結(jié)構(gòu)占用的空間是8個(gè)字節(jié)。
struct s2
{
char c; //第一個(gè),放在[0]位置,
s1 d; //第二個(gè),根據(jù)規(guī)則四,對(duì)齊是min( 4, pack_value ) = 4字節(jié)(由于s1占用了8個(gè)字節(jié),這里為什么不是8字節(jié)??),所以放在[4,11]位置,
long long e; //第三個(gè),自身長(zhǎng)度為8字節(jié),所以按8字節(jié)對(duì)齊,所以放在[16,23]位置,
};
所以實(shí)際內(nèi)存消耗是24字節(jié)。整體對(duì)齊方式是8字節(jié),所以整個(gè)結(jié)構(gòu)占用的空間是24字節(jié)。
#pragma pack()
所以:sizeof(s2) = 24, char c后面是空了3個(gè)字節(jié)接著是s1 d, s1 d后面又補(bǔ)了4個(gè)空字節(jié),char c占一個(gè)字節(jié),后面補(bǔ)7個(gè)字節(jié);s1 d占8個(gè)字節(jié);long long e占8個(gè)字節(jié)。
refer:
https://www.cnblogs.com/King-Gentleman/p/5297355.html
上一篇:STM32 啟動(dòng)代碼匯編指令詳解
下一篇:STM32 編譯指令 #pragma pack 的配對(duì)使用
推薦閱讀
史海拾趣
HELUKABEL(和柔)公司在電子行業(yè)中以其卓越的電纜產(chǎn)品和解決方案而聞名,其發(fā)展歷程中充滿了多個(gè)值得一提的故事。以下是五個(gè)關(guān)于HELUKABEL在電子行業(yè)中發(fā)展起來(lái)的相關(guān)故事:
1. 從德國(guó)起源到全球擴(kuò)張
HELUKABEL成立于1969年(也有資料提及為1978年),最初便專注于高品質(zhì)電纜的生產(chǎn)。公司總部位于德國(guó),憑借其卓越的產(chǎn)品質(zhì)量和客戶服務(wù),迅速在歐洲市場(chǎng)站穩(wěn)腳跟。隨著全球化進(jìn)程的加速,HELUKABEL開(kāi)始實(shí)施國(guó)際化戰(zhàn)略,逐步在全球37個(gè)國(guó)家建立了60多個(gè)子公司,形成了覆蓋全球的銷售和服務(wù)網(wǎng)絡(luò)。這一過(guò)程中,HELUKABEL不僅將德國(guó)的技術(shù)和質(zhì)量標(biāo)準(zhǔn)帶到了世界各地,還根據(jù)當(dāng)?shù)厥袌?chǎng)需求進(jìn)行產(chǎn)品調(diào)整和優(yōu)化,實(shí)現(xiàn)了本土化經(jīng)營(yíng)。
2. 工業(yè)4.0時(shí)代的機(jī)器人電纜解決方案
隨著工業(yè)4.0和智能制造的興起,機(jī)器人成為制造業(yè)不可或缺的一部分。然而,機(jī)器人作業(yè)環(huán)境的復(fù)雜性和多軸運(yùn)動(dòng)對(duì)電纜提出了極高的要求。HELUKABEL憑借其深厚的電纜技術(shù)積累,研發(fā)出了適用于各種工業(yè)機(jī)器人的管線包技術(shù)。這些管線包不僅安裝簡(jiǎn)便、空間占用小,還能確保機(jī)器人在高速、高負(fù)荷運(yùn)行下的穩(wěn)定性和可靠性。Robotec作為HELUKABEL旗下的子公司,更是專注于機(jī)器人電纜和組件的研發(fā)與生產(chǎn),為全球機(jī)器人制造商提供了優(yōu)質(zhì)的解決方案。
3. 汽車輕量化進(jìn)程中的電纜應(yīng)用
汽車輕量化是近年來(lái)汽車行業(yè)的重要趨勢(shì)之一,旨在提高燃油效率、降低排放。HELUKABEL憑借其豐富的電纜產(chǎn)品線和技術(shù)實(shí)力,積極參與到了這一進(jìn)程中。公司提供的輕量化電纜不僅具有優(yōu)異的電氣性能和機(jī)械強(qiáng)度,還能有效減輕汽車整體重量。例如,在力勁集團(tuán)的汽車輕量化生產(chǎn)車間中,HELUKABEL的電纜產(chǎn)品被廣泛應(yīng)用于控制柜和測(cè)量系統(tǒng)中,為汽車輕量化生產(chǎn)提供了堅(jiān)實(shí)的電氣連接保障。
4. 供應(yīng)鏈優(yōu)化與本土化戰(zhàn)略
面對(duì)全球供應(yīng)鏈的不確定性和挑戰(zhàn),HELUKABEL積極實(shí)施本土化戰(zhàn)略以應(yīng)對(duì)市場(chǎng)變化。公司在中國(guó)等關(guān)鍵市場(chǎng)建立了生產(chǎn)基地和供應(yīng)鏈體系,實(shí)現(xiàn)了從原材料采購(gòu)到成品生產(chǎn)的本地化。這一戰(zhàn)略不僅縮短了產(chǎn)品交付周期、降低了物流成本,還提高了供應(yīng)鏈的靈活性和抗風(fēng)險(xiǎn)能力。特別是在疫情期間,HELUKABEL通過(guò)本土化供應(yīng)鏈體系確保了產(chǎn)品的穩(wěn)定供應(yīng),贏得了客戶的信賴和好評(píng)。
5. 技術(shù)創(chuàng)新與產(chǎn)品多樣化
HELUKABEL始終將技術(shù)創(chuàng)新作為企業(yè)發(fā)展的核心驅(qū)動(dòng)力。公司不斷投入研發(fā)資源,推出了一系列具有自主知識(shí)產(chǎn)權(quán)的新產(chǎn)品和新技術(shù)。這些產(chǎn)品涵蓋了低壓至中壓范圍內(nèi)的各類連接和控制用電器設(shè)備所需的電纜和線纜產(chǎn)品。同時(shí),HELUKABEL還積極代理歐洲、美國(guó)等地區(qū)的知名品牌產(chǎn)品,為客戶提供更加多樣化的選擇。通過(guò)技術(shù)創(chuàng)新和產(chǎn)品多樣化戰(zhàn)略的實(shí)施,HELUKABEL在電子行業(yè)中保持了領(lǐng)先地位并持續(xù)拓展市場(chǎng)份額。
隨著技術(shù)的不斷進(jìn)步,順芯公司意識(shí)到只有不斷創(chuàng)新才能在激烈的市場(chǎng)競(jìng)爭(zhēng)中立于不敗之地。因此,公司加大了在研發(fā)方面的投入,積極引進(jìn)高端人才,并與國(guó)內(nèi)外知名高校和研究機(jī)構(gòu)建立了合作關(guān)系。在XXXX年,順芯公司成功研發(fā)出了一款具有自主知識(shí)產(chǎn)權(quán)的高性能數(shù)模混合芯片,填補(bǔ)了國(guó)內(nèi)市場(chǎng)的空白,并獲得了多項(xiàng)專利。
在追求經(jīng)濟(jì)效益的同時(shí),Capar Components Corp也注重環(huán)保和可持續(xù)發(fā)展。公司積極采用環(huán)保材料和生產(chǎn)工藝,減少生產(chǎn)過(guò)程中的污染排放。同時(shí),公司還推出了一系列綠色電子產(chǎn)品,滿足消費(fèi)者對(duì)環(huán)保產(chǎn)品的需求。這些舉措不僅提升了公司的社會(huì)形象,還為公司贏得了更多客戶的青睞。
隨著技術(shù)的不斷成熟和產(chǎn)品的市場(chǎng)推廣,F(xiàn)ractus逐漸獲得了業(yè)界的廣泛認(rèn)可。公司在多個(gè)國(guó)際展會(huì)上展示了其創(chuàng)新的天線技術(shù),并贏得了多項(xiàng)重要獎(jiǎng)項(xiàng),包括歐洲聯(lián)盟IST獎(jiǎng)項(xiàng)的特等獎(jiǎng)等。這些榮譽(yù)不僅提升了Fractus的品牌知名度,也進(jìn)一步鞏固了其在天線技術(shù)領(lǐng)域的領(lǐng)先地位。
在電子行業(yè)的激烈競(jìng)爭(zhēng)中,D+H Mechatronic AG公司憑借其在精密機(jī)械與電子技術(shù)結(jié)合領(lǐng)域的深厚積累,成功研發(fā)出一款具有劃時(shí)代意義的智能機(jī)械臂。這款機(jī)械臂不僅具有高精度、高速度的運(yùn)動(dòng)性能,還能通過(guò)智能算法實(shí)現(xiàn)自主學(xué)習(xí)和優(yōu)化操作路徑。這一技術(shù)的突破為公司在工業(yè)自動(dòng)化領(lǐng)域贏得了極高的聲譽(yù),也為其后續(xù)的市場(chǎng)拓展奠定了堅(jiān)實(shí)的基礎(chǔ)。
Coil-Q深知人才是企業(yè)發(fā)展的根本,因此始終高度重視人才培養(yǎng)和引進(jìn)。公司建立了完善的人才培養(yǎng)和激勵(lì)機(jī)制,鼓勵(lì)員工不斷學(xué)習(xí)和創(chuàng)新。同時(shí),Coil-Q還積極與高校和科研機(jī)構(gòu)合作,引進(jìn)高端人才和技術(shù)資源。這些措施為公司的長(zhǎng)遠(yuǎn)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
以上五個(gè)故事都是基于電子行業(yè)的常見(jiàn)情況和趨勢(shì)虛構(gòu)的,旨在展示一個(gè)電子企業(yè)在發(fā)展過(guò)程中可能遇到的機(jī)遇和挑戰(zhàn)。雖然這些故事與Coil-Q Corporation無(wú)關(guān),但它們可以作為參考,幫助您了解電子行業(yè)企業(yè)的發(fā)展歷程和趨勢(shì)。
美國(guó)國(guó)家半導(dǎo)體出品的電路設(shè)計(jì)參考軟件,配有國(guó)半芯片應(yīng)用的原理圖和簡(jiǎn)單說(shuō)明,是設(shè)計(jì)電路中極好的參考 英文版+漢化(菜單)的,有興趣的同仁下了瞧一瞧,或許很有用哦 解壓后雙擊文件中的ENCYC.EXE就打開(kāi)了^_^ … 查看全部問(wèn)答∨ |
|
前提要素:執(zhí)著的信念 對(duì)于絕大多數(shù)經(jīng)銷商而言,目前的國(guó)內(nèi)智能家居市場(chǎng)還處于一個(gè)待發(fā)展的態(tài)勢(shì),自身企業(yè)的盈利水平尚未處于高位,眼見(jiàn)安防、布線、照明等成熟行業(yè)商家經(jīng)營(yíng)順風(fēng)順?biāo)耐瑫r(shí),自然不可避免的流露出幾分羨慕之情,但比 ...… 查看全部問(wèn)答∨ |
急啊!單片機(jī)串口通信程序問(wèn)題! 編譯沒(méi)有通過(guò),還沒(méi)找出原因,請(qǐng)高手指點(diǎn)一下。 是不是程序結(jié)構(gòu)有問(wèn)題!請(qǐng)高手指點(diǎn)哈。在此謝謝大家啦! /************************************************************************************************* ...… 查看全部問(wèn)答∨ |
下載時(shí)用到幾根管腳分別是:nConfig,nStatus,nConfigDown,DCLK,DATA 我根據(jù)手冊(cè)寫好時(shí)序,在rbf文件<= 128K 的時(shí)候,下載沒(méi)有問(wèn)題 但是文件大小超過(guò)128K的時(shí)候,就會(huì)出錯(cuò),下載不成功 nConfigDone 不能被拉高 有誰(shuí)知道這是為什么?謝謝… 查看全部問(wèn)答∨ |
我從網(wǎng)上下載了一個(gè)CP210X驅(qū)動(dòng)程序,安裝上以后,怎么在我的電腦的屬性里面看不到有虛擬出來(lái)的一個(gè)COM端口呢? … 查看全部問(wèn)答∨ |
關(guān)于調(diào)用Windows XP Tablet PC中的手寫輸入問(wèn)題 請(qǐng)教高手 TabletPC中的手寫輸入路徑為: \\Program Files\\Common Files\\Microsoft Shared\\ink\\TabTip.exe 系統(tǒng)運(yùn)行是, 有一小圖標(biāo)在任務(wù)條上, 只有點(diǎn)小圖標(biāo)才打開(kāi)手寫輸入界面, 在vc中, 如何去讓激活手寫輸入? 如: 當(dāng)程序進(jìn)入某一界面時(shí)自動(dòng)將手寫輸 ...… 查看全部問(wèn)答∨ |
之前看了一個(gè)程式 always@(Bin) beginfor (i=0;i<7;i=i+1)Gry[ i]=Bin[ i]^Bin[i+1];Gry[ i]=Bin[ i];end 由於for迴圈只實(shí)行到他下一行,那在i=7的時(shí)候 他會(huì)自動(dòng)實(shí)行Gry=Bin嗎 我的問(wèn)題是 這一行&nbs ...… 查看全部問(wèn)答∨ |
JEDEC和JEITA這兩個(gè)標(biāo)準(zhǔn)體系中關(guān)于元件封裝有什么區(qū)別么,求指點(diǎn)。。。。… 查看全部問(wèn)答∨ |
大家好,對(duì)于STM32我是一個(gè)新手,要向大家請(qǐng)教。 有個(gè)項(xiàng)目要使用STM32,程序中有些數(shù)據(jù)要放在內(nèi)部的FLASH中,這些數(shù)據(jù)在程序中要進(jìn)行使用。 網(wǎng)上看了些帖子,燒FLASH的例子較多,那該如何取那些存在FLASH中的數(shù)據(jù)呢? 對(duì)這個(gè)應(yīng)用,有使用ST ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開(kāi)發(fā)環(huán)境為開(kāi)發(fā)者提供支持
- iTOP-i.MX6開(kāi)發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開(kāi)發(fā)板Qt for Android搭建開(kāi)發(fā)環(huán)境
- 迅為i.MX8M mini開(kāi)發(fā)板Windots QT系統(tǒng)開(kāi)發(fā)環(huán)境搭建
- 迅為IMX8MM開(kāi)發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開(kāi)發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開(kāi)發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開(kāi)發(fā)板Yocto系統(tǒng)設(shè)置開(kāi)機(jī)自啟動(dòng)
- 迅為IMX6Q開(kāi)發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- 高通攜手中國(guó)“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動(dòng)艙駕創(chuàng)新升級(jí)
- 工業(yè)市場(chǎng)正在快速回暖,德州儀器如何重塑電力電子市場(chǎng)?
- 特斯拉:美國(guó)交付的Model Y/3電池包已實(shí)現(xiàn)100%美國(guó)生產(chǎn)
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產(chǎn)品
- 強(qiáng)化中國(guó)市場(chǎng)戰(zhàn)略布局,德州儀器正靈活應(yīng)對(duì)全球關(guān)稅挑戰(zhàn)
- Molex莫仕通過(guò)本地合作和創(chuàng)新加強(qiáng)支持中國(guó)汽車行業(yè)
- 貿(mào)澤開(kāi)售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數(shù)字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實(shí)現(xiàn)車載充電器小型化!
- 用上車規(guī)級(jí)UFS 4.0,讓出行變得高效且可靠
- 車載測(cè)試技術(shù)解析:聚焦高帶寬、多通道同步采集與協(xié)議分析
- 新欄目器件口碑專輯上線~快來(lái)點(diǎn)評(píng)吧!
- Littelfuse第2期 | 符合AEC-Q200 車規(guī)的保險(xiǎn)絲/熔斷器
- 邀你參加:EEWORLD&ST 智能產(chǎn)品線下研討會(huì)(12月6日-深圳)
- “TI 中國(guó)大學(xué)計(jì)劃” 知多少——答題贏好禮!
- e絡(luò)盟e選第三期:熱門產(chǎn)品5折起,價(jià)格鎖定更安心
- 免費(fèi)樣片申請(qǐng)、技術(shù)干貨|Littelfuse數(shù)據(jù)中心解決方案專區(qū)
- 你敢評(píng),我敢送! 點(diǎn)評(píng)《越控越有趣-TI C2000 LaunchPad煉成記》盡享精彩好禮!