色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

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

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

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

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

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

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

據(jù)官方數(shù)據(jù)手冊上面說, 這兩個寄存器用于專門對ODR進行原子操作的位操作, 都是在置1的時候?qū)δ澄挥杏绊?

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

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

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

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

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

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

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

2.對低8位置數(shù)

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

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

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

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

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

總結(jié), 以下的宏實現(xiàn)對某端口的低8位置數(shù), 不影響高8位:

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

3.對高8位置數(shù)

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

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

低16位應(yīng)該置為 0101 0101 0000 0000

高16位應(yīng)該置為 1010 1010 0000 0000, 同樣是取反的結(jié)果; 不影響低8位的數(shù)據(jù)

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

總結(jié), 以下的宏實現(xiàn)對某端口的高8位置數(shù), 不影響低8位:

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

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

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

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120232
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355744

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

文章出處:【微信號:changxuemcu,微信公眾號:暢學(xué)單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    請問stm8s IO操作如何實現(xiàn)?

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

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

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

    STM32單獨設(shè)置IO端口88方法

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

    stm32IO端口如何單獨操作88

    STM32單獨設(shè)置GPIO端口8
    發(fā)表于 02-23 06:08

    AVR單片機的端口操作方法

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

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

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

    STM32操作方法

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

    8端口檢測8獨立按鍵

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

    詳解STM32操作

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

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

    電子發(fā)燒友網(wǎng)為你提供STM32單獨設(shè)置GPIO端口8/
    發(fā)表于 04-21 08:49 ?10次下載
    <b class='flag-5'>STM32</b>中<b class='flag-5'>單獨</b>設(shè)置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一、常規(guī)方法AVR單片機的各類教材
    發(fā)表于 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單片機一樣能夠單獨的對某個端的某一個
    發(fā)表于 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方向設(shè)置問題

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

    STM32F429入門(十一):操作

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

    用于Arduino的8IO端口

    電子發(fā)燒友網(wǎng)站提供《用于Arduino的8IO端口庫.zip》資料免費下載
    發(fā)表于 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>庫
    主站蜘蛛池模板: 动漫美女搞鸡| 好紧的小嫩嫩17p| 美女pk精子2小游戏| 天堂草原天黑黑| 最近在线视频观看2018免费| 国产美女视频一区二区二三区| 内射无码AV-区二区在线观看| 亚洲午夜精品一区二区公牛电影院| 成人小视频免费在线观看| 老师的玉足高跟鞋满足我| 亚欧洲乱码视频一二三区| 吃寂寞寡妇的奶| 女教师杨雪的性荡生活| 约艺术院校96年清纯白嫩| 国产亚洲人成在线视频| 沈芯语麻豆0076 视频| mxgs-877痉挛媚药按摩| 毛片手机在线观看| 伊人在线高清视频| 国内精品久久久久久久试看| 特黄AAAAAAA片免费视频| 办公室里做好紧好爽H| 欧美z000z猪| 506070老熟肥妇bbwxx视频| 久 久 亚洲 少 妇 无 码| 亚洲爆乳少妇精品无码专区| 国产成人精品综合久久久| 秋霞网站一级一片| chinese黑人第一次| 蜜臀AV色欲A片无码一区| 有人有片的观看免费视频| 精品久久久久久无码人妻国产馆| 亚洲、国产综合视频| 国产精品一区二区亚瑟不卡| 手机国产视频福利| 高h肉文合集| 色欲国产麻豆精品AV免费| 粉色视频午夜网站入口| 肉肉高潮液体高干文H| 刺激一区仑乱| 色戒西瓜视频|