STM32 IO口的位操作实现.doc

STM32 IO口的位操作实现.doc

ID:55955574

大小:23.00 KB

页数:5页

时间:2020-06-18

STM32 IO口的位操作实现.doc_第1页
STM32 IO口的位操作实现.doc_第2页
STM32 IO口的位操作实现.doc_第3页
STM32 IO口的位操作实现.doc_第4页
STM32 IO口的位操作实现.doc_第5页
资源描述:

《STM32 IO口的位操作实现.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、STM32IO口的位操作实现该部分代码实现对STM32各个IO口的位操作,包括读入和输出。当然在这些函数调用之前,必须先进行IO口时钟的使能和IO口功能定义。此部分仅仅对IO口进行输入输出读取和控制。代码如下:  #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))  #define MEM_ADDR(addr) *((volatile unsigned long *)(addr))  #defin

2、e 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) //0

3、x4001140C  #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) //0x40010

4、C08  #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 55  #define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08  /

5、/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) //输出#

6、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_OD

7、R_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) //输入STM32 中 BIT_BAND(位段/位带)和别名区使用入门一、什么是位段和别名区   是这样的,记得MCS51吗?MCS51就是有位操作,以一位(BIT)为数据对象的操作,MCS51可以简单的将P1口的第2位独立操作:P1

8、.2=0;P1.2=1;这样就把P1口的第三个脚(BIT2)置0置1。而现在STM32的位段、位带别名区就为了实现这样的功能。   它的对象可以是SRAM、I/O和外设空间。要实现对这些地方的某一位的操作。它是这样做的:在寻址空间(3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。