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

歷史上的今天

今天是:2024年09月03日(星期二)

正在發生

2020年09月03日 | stm32中gpio的學習淺談

發布者:老衛 來源: eefocus關鍵字:STM32  GPIO 手機看文章 掃描二維碼
隨時隨地手機看文章

在基本入門熟悉了開發環境后,我開始學習stm32中的gpio口用法,學習的方法還是最直觀簡便的先控制LED燈。然而stm32中點亮led倒沒有51單片機那么簡便。有過51單片機學習經驗的伙伴們,肯定熟悉下圖的代碼(51中控制led的程序)。

      

如果同樣方法寫在stm32中肯定是不行的了,首先因為stm32中沒有51頭文件中那樣定義好了P0口可以直接進行總線操作,其次stm32中的gpio口默認是輸入模式并且還需要打開相關引腳口的時鐘。可能很多人會覺得stm32中官方給的固件庫可以直接操作寄存器從而控制gpio口,但是我覺得我這樣的初學者還是多了解下底層的方法便于更好的理解。要實現stm32點亮一個led燈(即讓gpio口輸出一個高電平)一共分三步:


       第一步:通過時鐘控制寄存器rcc打開相應gpio口的時鐘如下例中的PB0。

       第二步:通過CRL寄存器設置gpio口為推挽輸出模式。

       第三步:通過ODR寄存器將相應gpio口輸出電平。


所謂單片機中的寄存器,其實就是一些有特殊功能的內存單元,是生產官方配置的。而我們正是通過寄存器來實現單片機的各種控制。下面來講解下我所用的三種方法,首先是最原始的直接操作內存單元。相應的寄存器內存地址是通過官方手冊查找的,代碼如下:

      

很明顯,雖然第一種方法是非常簡短且不需要額外庫函數的代碼,但是程序的可讀性和可移植性都非常差。于是我便采用了第二種使用寄存器映射的方法,所謂寄存器映射也可以理解成就是定義寄存器別名的過程。


第三種也是最后一種便是使用官方所給的固件庫了,其實原理大致也就是用宏定義和結構體定義些基地址,然后把寄存器的位操作過程等都寫在庫函數中封裝起來,我們只要操作相應庫函數就可以了。為了增加可讀性,我把庫函數再宏定義了一遍。


上圖代碼中那個延時函數是為因為還有沒有學習中斷才這樣寫,師兄也指出來和我說那是很不好的習慣,因為在等待延時過程中別的任務都無法運行并且時鐘的延時精度不高。由于之前我的C語言功底并不很扎實,所以在結構體,枚舉,宏定義以及一些強制類型轉換的指針操作,我都添加了許多注釋來增加印象。以上圖文便是我本篇博客的全部內容了,繼續保持學習分享更多的博客。

關鍵字:STM32  GPIO 引用地址:stm32中gpio的學習淺談

上一篇:STM32學習系列---STM32之GPIO
下一篇:stm32F051系列教程 1.點燈

推薦閱讀

體積小巧,功能強大,靈活方便,Kenos KCS真空抓具的這些特點使它可以在任何地方搬運任何類型的物體。 ab公司的Kenos KCS抓具使得協作機器人(cobot)能夠隨時隨地搬運任何物體。這使其成為理想的“協同工作”,尤其適用于需要靈活搬運各種物體的小型企業。最初Piab公司與一家領先的協作機器人制造商一道,面向客戶提供量身定制的自動化工具,最終的協...
通用同步異步收發器—–USART 通訊方式: 1、串行通訊 2、異步/同步 3、全雙工物理層 RS232標準 兩個通訊設備的“DB9 接口”之間通過串口信號線建立起連接,串口信號線中使用“RS-232標準”傳輸數據信號。由于 RS-232電平標準的信號不能直接被控制器直接識別,所以這些信號會經過一個“電平轉換芯片”轉換成控制器能識別的“TTL 標準”的電平信號,才能...
據外媒報道,代爾夫特理工大學(Delft University of Technology)與清華大學的研究人員合作,首次成功制造了一種可與鋰金屬負極良好匹配的電解質,朝著研制新型鋰離子電池邁出了重要一步,這種電池可用于電動汽車、智能手機和筆記本電腦等領域。從理論上講,與目前的電池相比,這種材料可以獲得兩到三倍的能量密度。圖片來源:Delft官網鋰離子電池充放...
集微網消息 隨著8月接近尾聲,上市公司中期業績披露也即將結束。雖然迄今為止海外疫情、中美貿易摩擦、零部件缺貨等問題依舊困擾著整個消費電子市場,但可喜的是,智能手機市場在上半年還是保持了較為樂觀的增長。據機構Omdia數據統計,2021年上半年全球智能手機行業總出貨量約為6.52億部,同比增長約17.4%。值得注意的是,在市場總出貨量的保持增勢的同...

史海拾趣

問答坊 | AI 解惑

高端訪談----與職場領袖分享工作“秘笈”

求職、面試、薪水、跳槽。無論剛畢業的學生,還是職場老兵都將是不得不面對的問題。如何在眾多競爭對手中脫穎而出?如何在邁入公司第一步的同時就能對該企業有個全面的了解,談妥自己期望的薪金?如何撰寫出一份漂亮的簡歷,闖過人事部門的第一關? ...…

查看全部問答∨

關于NK.NB0下載的問題

我們通常都是通過eboot進入菜單選擇U,然后通過dnw下載nk.bin的,其實,NK.NB0也可以直接下載到內存里面運行的,至少我用nor起來下載過NK.NB0運行的,這樣有個好處,不用每次都燒寫nand,效率高速度快。 但我手頭的開發板沒有nor,USB又不好使,我 ...…

查看全部問答∨

想做智能小車 誰有好點的車模啊?~~

想做智能小車  誰有好點的車模啊?~~…

查看全部問答∨

地址復用總線,內存和cpu的連接關系或特點

這個是我的面試題(軟件方向),由于我硬件知識薄弱,面試官允許我搜集資料后再回答。 應該是入門或者典型的概念 (老式的)數據地址和指令地址共用同一條總線時,cpu和內存的連接關系或者要注意什么特點? 也許是問如何區分開數據和指令的 公 ...…

查看全部問答∨

請教讀串口的問題

我在Linux下用read()讀串口時,若串口的數據中有0x0D時,發現無法讀到0x0D后的數據,請教大家應該如何解決??? 串口設置如下,其他的數據位、校驗等未設置 tcgetattr(spfd,&oldtio); cfmakeraw(&oldtio); cfsetispeed(&oldtio,B9600) ...…

查看全部問答∨

platform builder4.2 如何調試驅動程序??

platform builder4.2 如何調試驅動程序?? 我想讓設備運行debug版wince,然后在串口驅動設置斷點,之后單步調試,請問步驟如何,能否說得具體點.我編譯時候選擇kitl了,可是通過網口下載到設備后怎么設置斷點啊??????? 搞了半個月了,暈倒了.大家幫忙看 ...…

查看全部問答∨

protel 99 SE元件加載問題!!!

protel 99 se 里面的元件庫大部分都不能加載(Add),加載時提示說“files not recognized!”,只能是Sch文件夾里的前面一些.DDB才能加進去,是不是要重新裝載呀!!!請教各位大俠了。 問題算是簡單,本人積分少,請諒解,還要問其他問題,呵呵…

查看全部問答∨

100分緊急求助:USB HID類設備開發中用CreateFile無法得到設備句柄,如何解決?

利用開發板的資源做了一個USB接口的鼠標,就是用開發板上的一個搖桿作為鼠標方向的移動,另外用兩個按鍵分別模擬鼠標的左鍵和右鍵。 現在想寫上位機程序(VC6.0)對它進行讀寫,在得到了設備路徑名之后,調用CreateFile總是失敗,用GetLastError看 ...…

查看全部問答∨

Zstack學習經驗點滴:AF_DataRequest數據包發送

AF_DataRequest數據包發送。這個函數是AF框架下的數據包發送請求,函數逐步構造一個應用層的數據包,然后調用下APS層函數APSDE_DataReq發送數據包。函數操作過程如下:1)檢驗源端點是否有效。2)檢驗目標地址是否廣播地址,如果地址和模式有沖突 ...…

查看全部問答∨

置換開發板

本人手上有閑置 原裝TI公司的 LM3S8962 Evaluation Kit 開發板(9.9成新),和2.4寸的TFT(帶觸摸屏)LCD ,等一些電子元件希望和大家置換或轉讓。 TI的 LM3S1138(一片) LM3S608(一片)STM8S105K(兩片)  ISO124-DIP(兩片)  LM124 ...…

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

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 丁青县| 湘西| 眉山市| 资阳市| 齐齐哈尔市| 雷州市| 宁波市| 淮滨县| 濮阳市| 咸阳市| 临潭县| 尼勒克县| 大同县| 梧州市| 江安县| 台南县| 滦南县| 龙海市| 克东县| 慈溪市| 中阳县| 博客| 乌什县| 两当县| 巫溪县| 息烽县| 娄底市| 郓城县| 宝山区| 万荣县| 大化| 沙坪坝区| 冷水江市| 达拉特旗| 弥渡县| 内乡县| 安达市| 海原县| 博罗县| 延吉市| 澳门|