stm32中如何进行位定义
来源:互联网 发布:linux编辑文件不保存 编辑:程序博客网 时间:2024/06/05 09:58
#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+12) //0x4001080C #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C #define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C #define GPIOA_IDR_Addr (GPIOA_BASE+8) //0x40010808 #define GPIOB_IDR_Addr (GPIOB_BASE+8) //0x40010C08 #define GPIOC_IDR_Addr (GPIOC_BASE+8) //0x40011008 #define GPIOD_IDR_Addr (GPIOD_BASE+8) //0x40011408 #define GPIOE_IDR_Addr (GPIOE_BASE+8) //0x40011808 #define GPIOF_IDR_Addr (GPIOF_BASE+8) //0x40011A08 #define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08 //IO口操作,只对单一的IO口!//确保n的值小于16!#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) //输入///////////////////////////////////////////////////////////////////Ex_NVIC_Config专用定义#define GPIO_A 0#define GPIO_B 1#define GPIO_C 2#define GPIO_D 3#define GPIO_E 4#define GPIO_F 5#define GPIO_G 6 /////////这是STM32F103 位带操作的定义方式,看懂了就可以进行位定义了,出自 正点原子资料
转自:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=PFout&rsv_pq=ece993de00008aca&rsv_t=7c04EHXBypxyV2LlcGnmSyr3zqI54yUiinQ0%2FFpVddwdFKgUWiSBYAh%2BQOo&rqlang=cn&rsv_enter=0&rsv_n=2&rsv_sug3=1&rsv_sug1=1&rsv_sug7=100&inputT=618&rsv_sug4=619
0 0
- stm32中如何进行位定义
- STM32 中,如何设置一个位变量?
- STM32如何定义变量到FLASH ROM中
- STM32如何定义变量到FLASH ROM中
- 关于STM32中定义数组的问题
- STM32中发送中断标志位
- 如何进行定义特性(Attribute),并且在程序中如何检索定义的特性,可以根据用户定义的不同特性进行不同的操作。
- STM32中如何计算波特率
- Java中进行位运算
- 【enum】如何在枚举中定义自定义的方法,并进行使用
- stm32 中怎样把变量定义到flash中
- 如何在PB中进行位操作以及二进制与十进制转换(摘录)
- 如何在PB中进行位操作以及二进制与十进制转换
- 如何在PB中进行位操作以及二进制与十进制转换(摘录)
- C++中如何对输出几位小数进行控制(setprecision)
- 如何定义AIDL进行跨进程通信
- 如何为Swift进行宏定义
- IAR中 C语言位定义
- 如何进行汉化版的git操作
- Servlet MVC模式
- JS获取当前网址、主机地址项目根路径
- 【11.16十一月第二周总结】
- AHUOJ16兴趣赛2--最长单词
- stm32中如何进行位定义
- 网址
- Navicat11全系列激活(注册机)
- 自己封装的一个工具类
- Android学习笔记之从相册选取多张图片遇得到的一些问题
- 【Data Structures】 10. Hashing—Mission Possible
- ListView的item点击事件无响应的解决方法
- Linux上iptables防火墙的基本应用教程
- 服务端接受客户端上传的文件