STM32别名区端口从定义头文件
- 格式:doc
- 大小:69.50 KB
- 文档页数:14
/***********************************************
*@file name : gpioremap.h
*@by : artisan CO.,L TD
* : artisan
*@version : V1.0.0
*@date :08/06/2010
**************************************************/
/*************************************************
别名区重映射实现端口位操作
GPIOA BASE ADDRESS 0x4001 0800
END ADDRESS 0x4001 0BFF
GPIOB BASE ADDRESS 0x4001 0C00
END ADDRESS 0x4001 0FFF
GPIOC BASE ADDRESS 0x4001 1000
END ADDRESS 0x4001 13FF
GPIOD BASE ADDRESS 0x4001 1400
END ADDRESS 0x4001 17FF
GPIOE BASE ADDRESS 0x4001 1800
END ADDRESS 0x4001 1BFF
GPIOF BASE ADDRESS 0x4001 2000
END ADDRESS 0x4001 23FF
GPIOG BASE ADDRESS 0x4001 2000
END ADDRESS 0x4001 23FF
GPIO_CLR OFFSET ADDRESS OX00 //GPIO Config low reg
GPIO_CHR OFFSET ADDRESS OX04 //GPIO Config high reg
GPIO_IDR OFFSET ADDRESS OX08 //GPIO Data InPut reg
GPIO_ODR OFFSET ADDRESS OX0C //GPIO Data OutPut reg
GPIO_BSRR OFFSET ADDRESS OX10 //GPIO Bit SET/CLR reg
GPIO_BRR OFFSET ADDRESS OX14 //GPIO Bit CLR reg
GPIO_LCKR OFFSET ADDRESS OX18 //GPIO LOCK Config reg
计算公式
别名区= ADDRESS=0x4200 0000 + ((GPIOX BASE ADDRESS - 0X4000 0000 + reg
OFFSET ADDRESS )*0x20)+ (GPIO_Pin_x*4) //X为端口号x 为引脚号
*************************************************/
#ifndef __GPIO_REMAP_H
#define __GPIO_REMAP_H
#define SUBADD 0x42000000
#define uSUBADD 0x40000000
#define GPIOA_BASE_ADDRESS 0x40010800
#define GPIOB_BASE_ADDRESS 0x40010C00
#define GPIOC_BASE_ADDRESS0x40011000
#define GPIOD_BASE_ADDRESS 0x40011400
#define GPIOE_BASE_ADDRESS0x40011800
#define GPIOF_BASE_ADDRESS 0x40012000
#define GPIOG_BASE_ADDRESS 0x40012000
#define GPIO_IDR_OFFSET_ADDRESS 0x08
#define GPIO_ODR_OFFSET_ADDRESS 0x0c
#define GPIO_BIT_0 0
#define GPIO_BIT_1 1
#define GPIO_BIT_2 2
#define GPIO_BIT_3 3
#define GPIO_BIT_4 4
#define GPIO_BIT_5 5
#define GPIO_BIT_6 6
#define GPIO_BIT_7 7
#define GPIO_BIT_8 8
#define GPIO_BIT_9 9
#define GPIO_BIT_10 10
#define GPIO_BIT_11 11
#define GPIO_BIT_12 12
#define GPIO_BIT_13 13
#define GPIO_BIT_14 14
#define GPIO_BIT_15 15
// GPIOA InPut Mode
#define GPIOA_Pin0_InPut ((volatile unsigned long *) (SUBADD+(GPIOA_BASE_ADDRESS-
uSUBADD+GPIO_IDR_OFFSET_ADDRESS)*0x20+(GPIO_BIT_0*4)))
#define GPIOA_Pin1_InPut ((volatile unsigned long *) (SUBADD+(GPIOA_BASE_ADDRESS-
uSUBADD+GPIO_IDR_OFFSET_ADDRESS)*0x20+(GPIO_BIT_1*4)))
#define GPIOA_Pin2_InPut ((volatile unsigned long *) (SUBADD+(GPIOA_BASE_ADDRESS-
uSUBADD+GPIO_IDR_OFFSET_ADDRESS)*0x20+(GPIO_BIT_2*4)))
#define GPIOA_Pin3_InPut ((volatile unsigned long *) (SUBADD+(GPIOA_BASE_ADDRESS-
uSUBADD+GPIO_IDR_OFFSET_ADDRESS)*0x20+(GPIO_BIT_3*4)))
#define GPIOA_Pin4_InPut ((volatile unsigned long *) (SUBADD+(GPIOA_BASE_ADDRESS-
uSUBADD+GPIO_IDR_OFFSET_ADDRESS)*0x20+(GPIO_BIT_4*4)))
#define GPIOA_Pin5_InPut ((volatile unsigned long *) (SUBADD+(GPIOA_BASE_ADDRESS-
uSUBADD+GPIO_IDR_OFFSET_ADDRESS)*0x20+(GPIO_BIT_5*4)))
#define GPIOA_Pin6_InPut ((volatile unsigned long *) (SUBADD+(GPIOA_BASE_ADDRESS-