STM32构件库函数
2018-08-03 15:24:56 9 举报
AI智能生成
登录查看完整内容
STM32构建库函数雏形
作者其他创作
大纲/内容
STM32
封装总线和外设基地址
#define PERIPH_BASE ((unsigned int)0x40000000)
外设基地址
总线基地址
GPIO 外设基地址
寄存器基地址,以 GPIOF 为例
#define APB1PERIPH_BASE PERIPH_BASE#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000)#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000)#define AHB2PERIPH_BASE (PERIPH_BASE + 0x10000000)
#define GPIOA_BASE (AHB1PERIPH_BASE + 0x0000)#define GPIOB_BASE (AHB1PERIPH_BASE + 0x0400)#define GPIOC_BASE (AHB1PERIPH_BASE + 0x0800)#define GPIOD_BASE (AHB1PERIPH_BASE + 0x0C00)#define GPIOE_BASE (AHB1PERIPH_BASE + 0x1000)#define GPIOF_BASE (AHB1PERIPH_BASE + 0x1400)#define GPIOG_BASE (AHB1PERIPH_BASE + 0x1800)#define GPIOH_BASE (AHB1PERIPH_BASE + 0x1C00)
#define GPIOF_MODER (GPIOF_BASE+0x00)#define GPIOF_OTYPER (GPIOF_BASE+0x04)#define GPIOF_OSPEEDR (GPIOF_BASE+0x08)#define GPIOF_PUPDR (GPIOF_BASE+0x0C)#define GPIOF_IDR (GPIOF_BASE+0x10)#define GPIOF_ODR (GPIOF_BASE+0x14)#define GPIOF_BSRR (GPIOF_BASE+0x18)#define GPIOF_LCKR (GPIOF_BASE+0x1C)#define GPIOF_AFRL (GPIOF_BASE+0x20)#define GPIOF_AFRH (GPIOF_BASE+0x24)
封装寄存器列表
GPIO 寄存器列表
RCC 寄存器列表
typedef struct {__IO uint32_t MODER; /*GPIO 模式寄存器 地址偏移: 0x00 */__IO uint32_t OTYPER; /*GPIO 输出类型寄存器 地址偏移: 0x04 */__IO uint32_t OSPEEDR; /*GPIO 输出速度寄存器 地址偏移: 0x08 */__IO uint32_t PUPDR; /*GPIO 上拉/下拉寄存器 地址偏移: 0x0C */__IO uint32_t IDR; /*GPIO 输入数据寄存器 地址偏移: 0x10 */__IO uint32_t ODR; /*GPIO 输出数据寄存器 地址偏移: 0x14 */__IO uint16_t BSRRL; /*GPIO 置位/复位寄存器 低 16 位部分 地址偏移: 0x18 */__IO uint16_t BSRRH; /*GPIO 置位/复位寄存器 高 16 位部分 地址偏移: 0x1A */__IO uint32_t LCKR; /*GPIO 配置锁定寄存器 地址偏移: 0x1C */__IO uint32_t AFR[2]; /*GPIO 复用功能配置寄存器 地址偏移: 0x20-0x24 */} GPIO_TypeDef;
定义 GPIOA-H 寄存器结构体指针
#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE)#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE)#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE)#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE)#define GPIOG ((GPIO_TypeDef *) GPIOG_BASE)#define GPIOH ((GPIO_TypeDef *) GPIOH_BASE)
定义 RCC 外设 寄存器结构体指针
#define RCC ((RCC_TypeDef *) RCC_BASE)
定义位操作函数
选择引脚参数的宏
#define GPIO_Pin_0 (uint16_t)0x0001) /*!< 选择 Pin0 (1<<0) */#define GPIO_Pin_1 ((uint16_t)0x0002) /*!< 选择 Pin1 (1<<1)*/#define GPIO_Pin_2 ((uint16_t)0x0004) /*!< 选择 Pin2 (1<<2)*/#define GPIO_Pin_3 ((uint16_t)0x0008) /*!< 选择 Pin3 (1<<3)*/#define GPIO_Pin_4 ((uint16_t)0x0010) /*!< 选择 Pin4 */#define GPIO_Pin_5 ((uint16_t)0x0020) /*!< 选择 Pin5 */#define GPIO_Pin_6 ((uint16_t)0x0040) /*!< 选择 Pin6 */#define GPIO_Pin_7 ((uint16_t)0x0080) /*!< 选择 Pin7 */#define GPIO_Pin_8 ((uint16_t)0x0100) /*!< 选择 Pin8 */#define GPIO_Pin_9 ((uint16_t)0x0200) /*!< 选择 Pin9 */#define GPIO_Pin_10 ((uint16_t)0x0400) /*!< 选择 Pin10 */#define GPIO_Pin_11 ((uint16_t)0x0800) /*!< 选择 Pin11 */#define GPIO_Pin_12 ((uint16_t)0x1000) /*!< 选择 Pin12 */#define GPIO_Pin_13 ((uint16_t)0x2000) /*!< 选择 Pin13 */#define GPIO_Pin_14 ((uint16_t)0x4000) /*!< 选择 Pin14 */#define GPIO_Pin_15 ((uint16_t)0x8000) /*!< 选择 Pin15 */#define GPIO_Pin_All ((uint16_t)0xFFFF) /*!< 选择全部引脚 */
定义初始化结构体 GPIO_InitTypeDef
typedef struct {uint16_t GPIO_Pin; /* 选择要配置的 GPIO 引脚 */uint8_t GPIO_Mode; /* 选择 GPIO 引脚的工作模式 */uint8_t GPIO_Speed; /* 选择 GPIO 引脚的速率 */uint8_t GPIO_OType; /* 选择 GPIO 引脚输出类型 */uint8_t GPIO_PuPd; /* <选择 GPIO 引脚的上/下拉模式 */} GPIO_InitTypeDef;
定义引脚模式的枚举类型
GPIO 端口配置模式的枚举定义
GPIO 输出类型枚举定义
GPIO 输出速率枚举定义
GPIO 上/下拉配置枚举定义
收藏
收藏
0 条评论
回复 删除
下一页