娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月30日(星期四)

2019年01月30日 | STM32位帶操作總結

發布者:王大雷 來源: eefocus關鍵字:STM32  位帶操作 手機看文章 掃描二維碼
隨時隨地手機看文章

51單片機估計都用過,可以單獨對P1口的第一個IO進行操作,然而STM32是不允許這樣做的,為了像51單片機一樣能夠單獨的對某一個IO單獨操作,就引入了位帶操作這樣的概念,簡而言之,言而總之,就是為了單獨操作32里面的某個端口,所以才有了位帶這樣的操作機制。


位帶區,和位帶別名區,位帶區,就是你想單獨操作的IO的區域,也就是PA,PB等等這一堆IO口的內存所在區,而位帶別名區,就是給每一位重新起了個名字的那一片地址區域。M3內核 存儲器映射表,1M內存的BitBand區,還有與之對應的32M內存的BitBand別名區,因為你將每一位膨脹成為了一個32位,所以相應的別名區的內存也會是位帶區的32倍。

官方給出的相應的計算公式,以外設為例


AliasAddr=0X42000000+((A-0X40000000)*8+n)*4=0X42000000+(A-0X40000000)*32+n*4


AliasAddr是別名區的地址,A是GPIOA->ODR的地址,n是該端口的上的某一位,這里就是1,通過這個公式你可以找到對應的別名區的地址,接下來就是對這個地址進行操作了,你給他寫1,該位輸出1,寫0,就輸出0。



  0x42000000是位帶別名區域的起始地址,A是輸出數據寄存器GPIOA->ODR的地址,A的地址先減去位帶區基地址,得到的是相對于位帶區基地址的偏移地址,那么膨脹之后還是一個偏移地址,是相對于位帶別名區基地址的偏移量,加上位帶別名區域基地址,就得到了其對應的別名區地址,這是總的原理,


  ((A‐0x40000000)*8+n)*4 =0x42000000+ (A‐0x40000000)*32 + n*4  


  每一位對應一個32位的字,這樣最終的地址轉換就完成,關鍵還是要注意兩點,一是,兩部分地址的互相轉換,主要是每一部分的基地址。二就是位上升的32位地址這樣的一個方法概念。


//位帶操作,實現51類似的GPIO控制功能

//具體實現思想,參考《CM3權威指南》第五章(87頁~92頁)。M3同M4類似,只是寄存器地址變了


//IO口操作宏定義

#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 

#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr)) 

#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum)) 

//IO口地址映射

#define GPIOA_ODR_Addr    (GPIOA_BASE+20) //0x40020014

#define GPIOB_ODR_Addr    (GPIOB_BASE+20) //0x40020414 

#define GPIOC_ODR_Addr    (GPIOC_BASE+20) //0x40020814 

#define GPIOD_ODR_Addr    (GPIOD_BASE+20) //0x40020C14 

#define GPIOE_ODR_Addr    (GPIOE_BASE+20) //0x40021014 

#define GPIOF_ODR_Addr    (GPIOF_BASE+20) //0x40021414    

#define GPIOG_ODR_Addr    (GPIOG_BASE+20) //0x40021814   

#define GPIOH_ODR_Addr    (GPIOH_BASE+20) //0x40021C14    

#define GPIOI_ODR_Addr    (GPIOI_BASE+20) //0x40022014     


//IO口操作,只對單一的IO口


//確保n的值小于16

#define GPIOA_IDR_Addr    (GPIOA_BASE+16) //0x40020010 

#define GPIOB_IDR_Addr    (GPIOB_BASE+16) //0x40020410 

#define GPIOC_IDR_Addr    (GPIOC_BASE+16) //0x40020810 

#define GPIOD_IDR_Addr    (GPIOD_BASE+16) //0x40020C10 

#define GPIOE_IDR_Addr    (GPIOE_BASE+16) //0x40021010 

#define GPIOF_IDR_Addr    (GPIOF_BASE+16) //0x40021410 

#define GPIOG_IDR_Addr    (GPIOG_BASE+16) //0x40021810 

#define GPIOH_IDR_Addr    (GPIOH_BASE+16) //0x40021C10 

#define GPIOI_IDR_Addr    (GPIOI_BASE+16) //0x40022010 

 


#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  //輸出

#define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  //輸入



#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //輸出

#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //輸入



#define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  //輸出

#define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  //輸入 



#define PDout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)  //輸出

#define PDin(n)    BIT_ADDR(GPIOD_IDR_Addr,n)  //輸入 



#define PEout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  //輸出 

#define PEin(n)    BIT_ADDR(GPIOE_IDR_Addr,n)  //輸入



#define PFout(n)   BIT_ADDR(GPIOF_ODR_Addr,n)  //輸出 

#define PFin(n)    BIT_ADDR(GPIOF_IDR_Addr,n)  //輸入



#define PGout(n)   BIT_ADDR(GPIOG_ODR_Addr,n)  //輸出

#define PGin(n)    BIT_ADDR(GPIOG_IDR_Addr,n)  //輸入



#define PHout(n)   BIT_ADDR(GPIOH_ODR_Addr,n)  //輸出 

#define PHin(n)    BIT_ADDR(GPIOH_IDR_Addr,n)  //輸入



#define PIout(n)   BIT_ADDR(GPIOI_ODR_Addr,n)  //輸出

#define PIin(n)    BIT_ADDR(GPIOI_IDR_Addr,n)  //輸入


關鍵字:STM32  位帶操作 引用地址:STM32位帶操作總結

上一篇:STM32的位帶操作分析
下一篇:STM32時鐘基礎知識

推薦閱讀

集微網1月29日消息,據路透社報道,諾基亞今日表示,正在推出應用于下一代(5G)無線網絡的全新芯片組,該芯片組不僅將天線尺寸減半,數據處理容量提高兩倍,更能有效的減少移動通訊基站的能耗。諾基亞表示,該芯片組命名為“ReefShark”,目前正與30家移動通訊運營商努力將其部署于無線基站上,這意味著搭載ReefShark的首批網絡將于今年稍晚些時候升級,未...
集微網消息,日前蘋果公布了 2019 財年第一財季的業績。據財報悉,蘋果公司第一財季營收為 843 億美元,凈利潤 130 億美元。其中大中華地區的營收為 131.69 億美元,與去年同比下降 26% 。盡管第一季度的營收狀況略高于此前分析師所預期的 839.7 億美元,但有消息稱蘋果 CEO 庫克仍在考慮調整定價來提高銷量。對此,庫克稱:“當你看看國外...
示波器是一種用途十分廣泛的電子測量儀器。它能把肉眼看不見的電信號變換成看得見的圖像,便于人們研究各種電現象的變化過程。接下來我們就來了解一下示波器的X-Y模式以及示波器觸發模式,同時了解一下兩種模式的使用示波器的X-Y模式X-Y模式得到的圖形稱為利薩如圖形,將兩個信號分別輸入到示波器的CH1和CH2,以CH1**信號電壓**為X-Y坐標軸的X正半軸數值,...
2020年已經走過去,疫情下技術進步和行業需求的雙向驅動更為明顯,商業變革也從未停止,各個領域依然在不斷發生顛覆和創新,而2021年也將會開啟新的篇章。光速中國創業投資基金(Lightspeed China Partners)(以下簡稱“光速中國”)是一家專注于中國市場的早期創業投資基金,聚焦消費互聯網、“互聯網+”、企業服務/硬科技等領域,通過七支美元基金和...

史海拾趣

問答坊 | AI 解惑

DS1302的問題

我在做一個基于單片機的電子萬年歷設計,其中用到了DS1302,因為之前沒學過,所以不太懂,老師給了一個陽歷程序流程圖,看不太懂,希望高手可以幫我解釋一下這個流程圖,謝謝大家!…

查看全部問答∨

可察言觀色的車載機器人

好像很早前就有個一個概念,現在用在了車載上。 AIDA將具備察言觀色的能力,能夠根據面部表情以及其它線索讀懂駕駛者的心情 如果駕駛者心情不好,它甚至還會表現出很同情的樣子。 AIDA能夠根據路況報道為駕駛者尋找最理想的回家路線 ...…

查看全部問答∨

程序啟動時的圖片加載問題

我現在是在EVC下做一個簡單的對話框程序,程序是在2440XP開發板上運行,系統是WinCE5.0 這個程序就是一個基于對話框的程序,首先我給對話框設置一張背景圖片,然后還在對話框上加了一些CBitmapButton和CStatic這些控件我都把它們的背景設置成一些 ...…

查看全部問答∨

侃侃我的成果

本人長期從事單片機開發應用,積累了一定的經驗。本人將畢生研究心得集成了文字,放在我的博客里,希望大家光臨指導,并給點意見。我的博客地址;http://blog.mcuol.com/user/Article/500.html…

查看全部問答∨

請教香版:關于USBCustom_HID中顯示ST的問題

香版:您好! 我在使用Custom_Hid的時候,發現其需要安裝驅動,但其啟動好像是PC系統自帶,這倒沒有什么問題。 問題是,在第一次插入PC的時候,會提示ST等信息。而作為我們設計的產品,希望能提示公司自己的ID或者什么都不顯示。不知道這樣 ...…

查看全部問答∨

【求助】遠程通信問題

    各位大哥大姐:    小弟最近在設計方案,涉及到兩塊板子的通信問題。 要求兩塊板的電源,地完全隔離;能夠進行數據通信,通信距離在10米至30米。 小弟我苦思幾天,通信不過就如下幾種: 232,485,CAN,紅外。但好像這 ...…

查看全部問答∨

【MSP430共享】基于藍牙通訊的便攜式心電監護儀的研制

目的研制一種具有無線傳輸功能的便攜式&nbsp;電監護儀 。方法以MS P 4 3 0單片機為核心 , 控制心電采集 、 放大模塊 , 并通過 BC M一 0 3藍牙模塊 將心電數據發送到掌上 電腦上進 行監護。結果&nbsp; 實現了心數據的采集及與P D A的藍牙無線 ...…

查看全部問答∨

【設計工具】Quartus中FFT模塊中文說明

Altera FFT兆核函數2.0.0版簡介一.FFT兆核函數簡介Altera FFT兆核函數2.0.0版是一個高性能、參數化快速傅立葉變換(FFT)處理器,對Altera Stratix II、Stratix GX、Stratix以及Cyclone器件系列已經進行了設計優化。FFT兆核函數可以完成高性能復數FFT ...…

查看全部問答∨

請各位大??催^來,關于BSL的一個問題。

大家好:       我現在想用BSL給MSP430下載程序,但是不想用硬件產生進入BSL的時序,想通過兩個I/O口產生TEST和RST的時序,問題是:直接把TXT格式的文件傳入BSL_R就可以了嗎?還是需要考慮其他問題? 謝謝!…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 盐源县| 松潘县| 建阳市| 泾川县| 留坝县| 江孜县| 延庆县| 商水县| 朝阳县| 西充县| 寻甸| 通河县| 营山县| 江源县| 光泽县| 庆元县| 东平县| 永丰县| 江西省| 志丹县| 安顺市| 大方县| 巨野县| 浦城县| 鄂尔多斯市| 容城县| 科技| 云林县| 延川县| 左贡县| 达州市| 永定县| 车致| 华蓥市| 鹤岗市| 贵德县| 云龙县| 神农架林区| 石柱| 新宁县| 营口市|