1、在51微控制器裡 ,下面這兩種操作方法都是一樣的,沒有什麼問題!
(1) 、 out1_r1 是微控制器的乙個io口 , dat是傳進來的乙個資料
if ( (dat & 0x80) == 0)
out1_r1 = 0;
// 0是不亮,1是亮
else
out1_r1 = 1;
(2)、
out1_r1 = (dat&0x8000);// stm32裡,這樣操作不行,因為stm32裡沒有bit ; 在51裡會自動把(dat&0x8000)強制轉化為bit 。
2、但是在編譯 stm32的keil 裡編譯上面的兩個程式,就發生了不同。
在stm32裡, (1) 是可以正常的往io裡輸入資料的,但是(2)卻不能!我猜測是stm32裡不支援位操作( 沒有bit )!才導致這種差異!
我在除錯led螢幕的時候,遇到了這個問題,我當時做夢都沒想到,這句話竟然有問題。
在此,強烈建議:遇到問題,多使用**器!(這種神器,也算是除錯必備了! 學生黨太窮了,之前自學stm32也沒捨得花錢買jlink**器!)
再次,感謝鄭老師指導!
本人能力有限,若描述有誤,請指出。
stm32的位操作
位繫結的區域 sram區 0x2000 0000 0x200f ffff 1mstm32的位帶操作簡單的說就是把乙個位址a的8個位,分別單獨的重新定義8個位址,操作乙個位址等同於操作乙個位,形象的理解即為取別名。sram 0x22000000 a 0x20000000 8 n 4 這裡的8表示8個位...
STM32 位帶應用
from cortex m3 支援了位操作後,可以使用普通的載入 儲存指令來對單一的位元進行讀寫。在 cm3 支援的位帶中,有兩個區中實現了位帶。其中乙個是 sram區的最低 1mb 範圍,0x20000000 0x200fffff sram 區中的最低 1mb 第二個則是片內外設區的最低 1mb範...
STM32資料位錯位問題研究
不久前,本人需要用多路stm32adc取樣,用dma傳輸,發現資料錯位問題,真的很惱火。有時候發現adc位錯一位的有,錯兩位的有,也有三位四位的,查查網上大神,一般都是說adc不能在連續轉換模式下工作就ok了,但是我程式的問題依舊。前幾天,不經意間發現,原來我程式的adc轉換是先早開於dma轉換的。...