在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32的IO端口高8位或低8位單獨操作方法

2oON_changxuemc ? 來源:工程師曾玲 ? 2019-02-02 16:42 ? 次閱讀

幾天前剛接觸stm32的時候, 被單獨操作IO口給弄糊涂了, 現記錄下, 現在發現其實蠻簡單的, 只是剛開始的時候~~~

stm32的IO端口都是16位的, 如果要單獨操作某高8位或低8位, 則不是那么簡單, 先看兩張BSRR/BRR寄存器的圖:

STM32的IO端口高8位或低8位單獨操作方法

STM32的IO端口高8位或低8位單獨操作方法

據官方數據手冊上面說, 這兩個寄存器用于專門對ODR進行原子操作的位操作, 都是在置1的時候對某位有影響.

舉例說下怎么對IO端口賦值:

1.對高8位/低8位/全部清零

很明顯, 這個只需要操作BRR寄存器即可:

對高8位清零:GPIOA->BRR = 0xFF00

對低8位清零:GPIOA->BRR = 0x00FF

全部清零: GPIOA->BRR = 0xFFFF 或 GPIOA->ODR = 0x0000

當然了, 使用下面2,3的兩個宏也可以完全該清零操作~ stm32固件庫是不是應該加上這兩個宏/函數?

2.對低8位置數

涉及到置數, 這個就是操作BSRR寄存器了

比如要使端口A的低8位為 0x55 (01010101B), 那么對于BSRR這個32位寄存器來說:

低16位應該置為 0000 0000 0101 0101, 這個就等于 0x55, 置1使某位為1, 置0的位不影響原來的值

高16位應該置為 0000 0000 1010 1010, 這個就等于 ~0x55(即取反)的結果, 置1使某位為0, 置0不影響原來的值

這樣, BSRR寄存器的值就是 0000 0000 1010 1010 0000 0000 0101 0101, 兩部分的高8位均為0, 所以不會影響到IO口的高8位

總結, 以下的宏實現對某端口的低8位置數, 不影響高8位:

#define GPIO_WriteLow(GPIOx,a) GPIOx->BSRR=(((uint32_t)(uint8_t)~(a))<<16)|((uint32_t)(uint8_t)(a))

3.對高8位置數

這個和單獨對低8位置數其實是一樣的, 只是設置的位不一樣罷了

同樣, 要使高8位為0x55, 那么:

低16位應該置為 0101 0101 0000 0000

高16位應該置為 1010 1010 0000 0000, 同樣是取反的結果; 不影響低8位的數據

這樣, BSRR寄存器的值就是 1010 1010 0000 0000 0101 0101 0000 0000, 可以看出, 其實它就是上面那個結果左移8位

總結, 以下的宏實現對某端口的高8位置數, 不影響低8位:

#define GPIO_WriteHigh(GPIOx,a) GPIOx->BSRR=(((uint8_t)(uint8_t)~(a))<<24)|(((uint32_t)(uint8_t)(a))<<8)

大家不用擔心效率問題, 上面那兩個宏最終的結果就是 GPIOx->BSRR=value 的形式, 所以擔心是多余的

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5359

    瀏覽量

    120812
  • STM32
    +關注

    關注

    2270

    文章

    10915

    瀏覽量

    356776

原文標題:STM32中單獨設置GPIO端口高8位/低8位的方法

文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問stm8s IO操作如何實現?

    請教各位了,stm8s IO操作如何實現像stm32類似的
    發表于 05-09 07:10

    STM32學習筆記-GPIO做為輸出時操作方法

    操作方法。GPIOx_ODR: 端口輸出數據寄存器,它的31:16保留不用,15:0對應x的相應引腳,他只能以16方式操作。GPIOx
    發表于 10-07 15:51

    STM32單獨設置IO端口88方法

    幾天前剛接觸stm32的時候, 被單獨操作IO口給弄糊涂了, 現記錄下, 現在發現其實蠻簡單的, 只是剛開始的時候~~~stm32
    發表于 05-26 08:00

    stm32IO端口如何單獨操作88?

    STM32單獨設置GPIO端口8
    發表于 02-23 06:08

    AVR單片機的端口操作方法

    一、常規方法AVR單片機的各類教材編程應用參考資料,對介紹的端口操作方法不外乎宏定義及整體和某個常量相
    發表于 07-13 08:11

    AVR單片機的端口操作方法解析

    AVR單片機的端口操作方法解析來源:未知?作者:工程師周亮?2018年11月22日 16:07?3708次閱讀正在上傳…重新上傳取消?0一、常規方法AVR單片機的各類教材
    發表于 11-23 08:35

    STM32操作方法

    前言這篇文章主要用來講解STM32中的操作,學習過51單片機的應改了解,在控制51單片機IO引腳時,只需要向某一個IO口賦值就可以實現,
    發表于 01-17 06:27

    8端口檢測8獨立按鍵

    8端口檢測8獨立按鍵 C51單片機源碼,KEIL源文件,C語言編寫
    發表于 06-20 16:36 ?17次下載

    詳解STM32操作

    51單片機相信各位都用過,假設P1.1的IO口上掛了一個LED,那么你單獨對LED的操作就是P1.1 = 0P1.1 = 1,注意,是你可以單獨
    發表于 06-01 09:54 ?6460次閱讀
    詳解<b class='flag-5'>STM32</b>的<b class='flag-5'>位</b>帶<b class='flag-5'>操作</b>

    STM32單獨設置GPIO端口8/8方法資料下載

    電子發燒友網為你提供STM32單獨設置GPIO端口8/
    發表于 04-21 08:49 ?10次下載
    <b class='flag-5'>STM32</b>中<b class='flag-5'>單獨</b>設置GPIO<b class='flag-5'>端口</b><b class='flag-5'>高</b><b class='flag-5'>8</b><b class='flag-5'>位</b>/<b class='flag-5'>低</b><b class='flag-5'>8</b><b class='flag-5'>位</b>的<b class='flag-5'>方法</b>資料下載

    "AVR單片機的端口操作方法解析:域bit field(和STM32帶bit-band不同,帶是利用域的功能做成的)方

    AVR單片機的端口操作方法解析來源:未知?作者:工程師周亮?2018年11月22日 16:07?3708次閱讀正在上傳…重新上傳取消?0一、常規方法AVR單片機的各類教材
    發表于 11-15 09:21 ?21次下載
    "AVR單片機的<b class='flag-5'>端口</b><b class='flag-5'>位</b><b class='flag-5'>操作方法</b>解析:<b class='flag-5'>位</b>域bit field(和<b class='flag-5'>STM32</b><b class='flag-5'>位</b>帶bit-band不同,<b class='flag-5'>位</b>帶是利用<b class='flag-5'>位</b>域的功能做成的)方

    《嵌入式 - 深入剖析STM32》詳解STM32操作

    的第一個IO口進行上下拉操作,然而對于STM32,是沒有這種操作的,那么為了像51單片機一樣能夠單獨的對某個端的某一個
    發表于 11-26 09:51 ?37次下載
    《嵌入式 - 深入剖析<b class='flag-5'>STM32</b>》詳解<b class='flag-5'>STM32</b><b class='flag-5'>位</b>帶<b class='flag-5'>操作</b>

    STM32端口IO方向設置問題

    STM32端口IO方向設置問題STM32端口寄存器配置STM32
    發表于 11-29 13:36 ?28次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>端口</b><b class='flag-5'>IO</b>方向設置問題

    STM32F429入門(十一):操作

    操作P0^0 = 0; //設置單個io口,這種叫做操作//stm32單片機GPIOH_ODR &= ~(1
    發表于 12-31 19:56 ?13次下載
    <b class='flag-5'>STM32</b>F429入門(十一):<b class='flag-5'>位</b>帶<b class='flag-5'>操作</b>

    用于Arduino的8IO端口

    電子發燒友網站提供《用于Arduino的8IO端口庫.zip》資料免費下載
    發表于 12-14 10:52 ?8次下載
    用于Arduino的<b class='flag-5'>8</b><b class='flag-5'>位</b><b class='flag-5'>IO</b><b class='flag-5'>端口</b>庫
    主站蜘蛛池模板: 日韩一区二区视频| 四虎影院成人在线观看| 2019天天爱天天做| 91破处视频| 好爽好紧好大的免费视频国产 | 精品视频免费看| 精品视频卡1卡2卡3| 国产成人一区二区三中文| www三级免费| 天天射天天操天天色| 久久久免费观看| 欧美亚洲啪啪| 男女视频在线看| 亚洲人与牲动交xxxxbbbb| 五月天婷婷在线视频| 日本人的色道免费网站| 激情五月开心网| 97视频免费上传播放| 日日干狠狠操| 啪啪午夜视频| 在线国产高清| 日韩午夜r电影在线观看| 黄色a级免费| 天天视频观看| 2019天天干天天操| 8050午夜一级| 日本a免费| cijilu刺激 国产| 国产午夜一区二区在线观看| 亚洲欧美在线一区二区| 一级待一黄aaa大片在线还看| 欧美综合久久| 在线天堂资源www中文在线| 国内自拍2021| 老师在办公室被躁得舒服小说| 色香蕉在线观看| 国产三级精品视频| 日日爱视频| 日不卡| 日本中文字幕在线播放| 成年人在线网站|