1樓:
都已經用上32位機了,不要死抱著8位機的那些老觀念不放。
針對位的操作,用標準c的位域就可以。
如果對效率方面有要求,或者要求實現原子級的操作,就用__attrib__((bitband))屬性將結構體成員宣告成位繫結操作即可。
另外要注意,位繫結是m3、m4核心的特性。m0核心是不支援位繫結的。
2樓:匿名使用者
keil51使用的不是標準c,而是在c基礎上針對51微控制器的硬體做了修改的c51。因為51微控制器對某些地址可以位定址,並且要節約每一個資源,所以才有bit這個型別。
arm的資源比51多得多,所以沒有對bit做特別的處理,你可以把普通的字元型變數作為布林型使用。
請問stm32 中,如何設定一個位變數? ? keil51中是用 bit 加上 變數名字 就可以了!!stm32中呢?
3樓:庚新蘭達雲
keil51使用的不是標準c,而是在c基礎上針對51微控制器的硬體做了修改的c51。因為51微控制器對某些地址可以位定址,並且要節約每一個資源,所以才有bit這個型別。
arm的資源比51多得多,所以沒有對bit做特別的處理,你可以把普通的字元型變數作為布林型使用。
keil中結構體變數能定義位變數嗎?怎麼定義?
4樓:藏在水中的人
位結構是c51語言中的一種特殊結構,可以用於訪問一個位元組或字的多個位。位結構一般形式如下。
struct 位結構名
位結構變數;
其中,struct為關鍵字,位結構資料型別必須是整型int(unsigned或signed);整形常熟必須是非負的整數,範圍是0~15,用於表示有多少位,即表示二進位制位的個數,變數名是可選項,可以省略。位結構的定義,例項如下。
struct
bit;
位結構成員的訪問與結構成員的訪問相同,例如訪問上列位結構中的lbit成員可寫成如下形式
bit.lbit
在使用位結構時,應注意以下幾點。
1、位結構中的成員必須是int,但可以定義為unsigned或者signed。
2、當位結構成員長度為1時,c51語言將其認為是unsigned型別。
3、位結構總長度(位數)是各個位成員定義的位數之和,可以超過兩個位元組。
4、位結構中的成員不能使用陣列和指標,但位結構變數可以是陣列和指標。如果是指標,其成員訪問方式同結構指標。
5、位結構可以成為巢狀式結構的成員,與其他結構成員一起使用,示例如下。
struct student;
5樓:
keil的結構體與標準c的結構體一樣,想實現位變數只能通過位域(bit field),也就是樓上貼出來的那一大堆。
需要注意的是位域其實是通過對結構體變數反覆進行按位運算取出的,執行效率上比較低下。如果你期望實現效率很高的位成員操作,對於51而言可以利用bdata,對於cortex-m3核而言可以利用位繫結對映(bit-banding)。
「位結構是c51語言中的一種特殊結構,」
這句話比較搞笑。位域是標準c的內容,不是c51的獨創。
6樓:
typdef structtest;
test abc
abc.a=1;
stm32 c語言中如何定義位變數
7樓:匿名使用者
可以利用c語言擴充套件特性定義結構體如下
struct bitblock;
引用 bitblock.bit0
請問stm32全域性位域(位段)怎麼定義? 5
8樓:童之新
你在.h檔案下建立ctrlbit這個共用體型別,然後在對應的.c檔案全域性處定義這個共用體,最後在.h檔案加extern 宣告為外部變數就行了。
這裡共用體跟結構體宣告的格式是這樣的喔:union ctrlbit;或者typedef unionctrlbit; 在.c檔案全域性處定義union ctrlbit ctrlbit1;或者 ctrlbit ctrlbit1;(這個是typdef前提下),最後在.
h檔案進行外部變數宣告extern union ctrlbit ctrlbit1;
微控制器keil c51 c語言多檔案如何使用全域性位變數?跪拜!!
9樓:匿名使用者
extern就可以。在一個檔案裡定義:
bdata m;
sbit x=m^1;
然後在另一個檔案裡宣告:
extern bdata m;(如果不使用m可以不宣告。)extern bit x;
這樣就可以使用了。如果變數較多,建議樓上的方法,用全域性標頭檔案。
10樓:匿名使用者
新件一個標頭檔案 gloab.h
在裡面定義好,bata m;
在定義需要的全域性變數
最好加上不重複包含標頭檔案的定義
然後1.c,2.c,3.c寫上一句
#include「gloab.h」就可以用了
11樓:匿名使用者
不管你引用再多的檔案
main函式只有一個吧!!
如果引用的c檔案需要使用全域性變數。就把變數寫在引用檔案前面比如 int i; //全域性變數
#include "1.h"
#include "2.h"
#include "3.h"
不知道能不能幫到你 反正我是這麼理解的
stm32怎樣訪問一個變數的某一個位
12樓:匿名使用者
給你個思路如果
x是一個無符號int變數,其掩碼可以為~0,也就是0xffffffff
如果想訪問其中得某一位可以定義一個巨集比如#define bit(x) (1< 訪問最低位可以 x&bit(0) 訪問次低位可以x&bit(1) 、、、、、依次類推 比如在微控制器裡可以這樣定義sbit a=p2^0,在stm32中怎麼直接把引腳號直接賦給一個變數?? 13樓:匿名使用者 #define a=pb(x); 14樓:匿名使用者 stm32沒有sbit指令,通過對gpio的暫存器賦值修改管腳的值 程式中u8是uchar,u16是uint,stm32中bit不識別啊,定義一個bit變數怎麼辦? 15樓:匿名使用者 stm32不能定義位變數,雖然有個「位帶」但也麻煩,如果你真的想用到位,那就試試「位域」。 16樓: bit可以直接用u8來代替 用庫時,這樣 62616964757a686964616fe78988e69d8331333335313166 gpio setbits gpioa,gpio pin 0 pa0 1 gpio resetbits gpioa,gpio pin 0 pa0 0 是不是很簡單,如果你還要更簡單的用它,做... 我很平凡,也很簡單,骨子裡的我卻很勇敢。用stm32控制四軸 應該怎麼控制電調 stm32只是處理器,bai還得選用其他配du件。下面針對zhi入門人員diy大四軸 採用無刷電dao機 的製作框架。專 處理器一般 屬為stm32f103,姿態感測器為mpu6050,遙控採用航模的4通道遙控,無刷電機... 可以用變數進行傳值,做運算 axure中怎麼使用樣式編輯器與變數管理?axure怎麼設定選項組 axure中變數如何使用?變數主要是在條件判斷當中進行使用,你也可以建立新的變數。不過axure用來做原型圖,沒有必要設計太多複雜的變數進行互動設計,高保真的demo會消耗太多的時間,建議最好是放在需求說...在stm32中比如對gpioa的某幾個引腳進行操作請
真心求幫助如何使用stm32驅動無刷電調好贏
請問Axure變數如何使用,Axure中怎麼使用樣式編輯器與變數管理?Axure怎麼設定選項組