欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
32單片機位帶操作程序
[打印本頁]
作者:
sr861126
時間:
2024-12-2 13:46
標題:
32單片機位帶操作程序
#ifndef __SYS_H
#define __SYS_H
#include "hk32f030m.h"
#define u16 unsigned int
#ifdef __cplusplus
extern "C" {
#endif
typedef struct
{
u16 bit0 : 1;
u16 bit1 : 1;
u16 bit2 : 1;
u16 bit3 : 1;
u16 bit4 : 1;
u16 bit5 : 1;
u16 bit6 : 1;
u16 bit7 : 1;
u16 bit8 : 1;
u16 bit9 : 1;
u16 bit10 : 1;
u16 bit11 : 1;
u16 bit12 : 1;
u16 bit13 : 1;
u16 bit14 : 1;
u16 bit15 : 1;
}Bits16_TypeDef;
//IO口操作,只對單一的IO口!
//確保n的值小于16!
#define PAout(n) ( ((Bits16_TypeDef *)(&(GPIOA->ODR)))->bit##n )
#define PAin(n) ( ( GPIOA->IDR&(1 << (n)) )>>n ) //輸入
#define PBout(n) ( ((Bits16_TypeDef *)(&(GPIOB->ODR)))->bit##n )
#define PBin(n) ( ( GPIOB->IDR&(1 << (n)) )>>n ) //輸入
#define PCout(n) ( ((Bits16_TypeDef *)(&(GPIOC->ODR)))->bit##n )
#define PCin(n) ( ( GPIOC->IDR&(1 << (n)) )>>n ) //輸入
#define PDout(n) ( ((Bits16_TypeDef *)(&(GPIOD->ODR)))->bit##n )
#define PDin(n) ( ( GPIOD->IDR&(1 << (n)) )>>n ) //輸入
#ifdef __cplusplus
}
#endif
#endif
作者:
zhxzhx
時間:
2024-12-31 17:17
你這是 位帶?這不是域嗎?
作者:
joyb
時間:
2025-4-10 08:35
位帶操作簡單的說,就是把每個比特膨脹為一個 32 位的字,當訪問這些字的時候就達到了訪問比特的目的,比如說 GPIO 的 ODR 寄存器有 32 個位,那么可以映射到 32 個地址上,我們去訪問這 32 個地址就達到訪問 32 個比特的目的。這樣我們往某個地址寫 1 就達到往對應比特位寫 1 的目的,同樣往某個地址寫 0 就達到往對應的比特位寫 0 的目的。
支持了位帶操作后,可以使用普通的加載、存儲指令來對單一的比特進行讀寫。在CM3中,有兩個區中實現了位帶。其中一個是 SRAM 區的最低 1MB 范圍,第二個則是片內外設區的最低 1MB 范圍。這兩個區中的地址除了可以像普通的 RAM 一樣使用外,它們還都有自
己的“位帶別名區”,位帶別名區把每個比特膨脹成一個 32 位的字。當你通過位帶別名區訪問這些字時,就可以達到訪問原始比特的目的。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1