請問stm32中如何設定位變數??keil51中

時間 2021-06-08 18:21:36

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來代替

stm32微控制器spi問題,STM32微控制器SPI問題

才慕悅臧優 基本的底層驅動都是有的,如果使用到某個感測器,而網上一時還沒有對應的驅動庫,可以自己根據感測器的手冊編寫對應的驅動 和spi口的cs sck sdi sdo是怎麼對應的 這是你從裝置上的標識吧。一般接線為 左邊主裝置,右邊從裝置 spix nss cs spix sck sck spix...

stm32f767採用什麼核心,stm32f767可以達到多快的速度?

雌高中生酶 我也沒學過核心,一樣能控制stm32。但是,沒有這些知識,你只會執行主管的要求,卻很難做到設計。想進一步提高,必須要學習這些基礎知識。這些我遲早也要花時間去了解下的。stm32f767可以達到多快的速度? 核心可以達到216mhz 長瀨綿秋 32的用原子的可以,隨便選擇一款,微控制器用吳...

stm32f103系列效能如何,STM32F103字尾名不同,其功效有什麼區別?

西西哩的小馬甲 優點如下 1 stm32屬於arm核心的一個版本,比傳統的51微控制器高階多了,有很多資源是51不具備的,如usb控制器。而且已經廢除了機器週期什麼的,速度不是51能比的。2 stm32微控制器程式都是模組化的,介面相對簡單些,因為它自身帶好多功能,工作速度也快。而51的自身功能少,...