本帖最后由 我爱你的吻123 于 2014-6-13 13:40 编辑
typedef struct
{
__IO uint32_t PCR4;
__IO uint32_t SR4;
__IO uint32_t PMEM4;
__IO uint32_t PATT4;
__IO uint32_t PIO4;
} FSMC_Bank4_TypeDef;
/**
* @brief General Purpose I/O
*/
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef; CRL、CRH、IDR、ODR等都是一个端口中的寄存器,对寄存器的读写操作实现你需要的功能。STM32 的每个 IO 端口都有 7 个寄存器来控制。他们分别是:配置模式的 2 个 32 位的端口 配置寄存器 CRL 和 CRH;2 个 32 位的数据寄存器 IDR 和 ODR;1 个 32 位的置位/复位寄存器 BSRR;一个 16 位的复位寄存器 BRR; 1 个 32 位的锁存寄存器 LCKR
GPIO_Pin 该参数选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚。可以使用下表中的任意组合。 GPIO_Pin_None:无管脚被选中 GPIO_Pin_x:选中管脚x(0--15) GPIO_Pin_All:选中全部管脚
GPIO_Speed GPIO_Speed:用以设置选中管脚的速率。 GPIO_Speed_10MHz:最高输出速率10MHz GPIO_Speed_2MHz:最高输出速率2MHz GPIO_Speed_50MHz:最高输出速率50MHz
GPIO_Mode GPIO_Mode:用以设置选中管脚的工作状态。 GPIO_Mode_AIN:模拟输入 GPIO_Mode_IN_FLOATING:浮空输入 GPIO_Mode_IPD:下拉输入 GPIO_Mode_IPU:上拉输入 GPIO_Mode_Out_OD:开漏输出 GPIO_Mode_Out_PP:推挽输出 GPIO_Mode_AF_OD:复用开漏输出 GPIO_Mode_AF_PP:复用推挽输出
函数GPIO_StructInit 功能描述:把GPIO_InitStruct中的每一个参数按缺省值填入 例: GPIO_InitTypeDef GPIO_InitStructure; GPIO_StructInit(&GPIO_InitStructure); GPIO_InitStruct: GPIO_Pin:GPIO_Pin_All GPIO_Speed:GPIO_Speed_2MHz GPIO_Mode:GPIO_Mode_IN_FLOATING
函数GPIO_ReadInputDataBit 功能描述:读取指定端口管脚的输入 例: u8 ReadValue; ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);
函数GPIO_ReadInputData 功能描述:读取指定的GPIO端口输入 例: u16 ReadValue; ReadValue = GPIO_ReadInputData(GPIOC);
函数GPIO_ReadOutputDataBit 功能描述:读取指定端口管脚的输出 例: u8 ReadValue; ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7);
函数GPIO_ReadOutputData 功能描述:读取指定的GPIO端口输出 例: u16 ReadValue; ReadValue = GPIO_ReadOutputData(GPIOC);
函数GPIO_SetBits 功能描述:置位指定的数据端口位 例: GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
函数GPIO_ResetBits 功能描述:清除指定的数据端口位 例: GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
函数GPIO_WriteBit 功能描述:设置或者清除指定的数据端口位 例: GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET);
函数GPIO_Write 功能描述:向指定GPIO数据端口写入数据 例: GPIO_Write(GPIOA, 0x1101);
函数GPIO_PinLockConfig 功能描述:锁定GPIO管脚设置寄存器 例: GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);
函数GPIO_EventOutputConfig 功能描述:选择GPIO管脚用作事件输出 例: GPIO_EventOutputConfig(GPIO_PortSourceGPIOE, GPIO_PinSource5);
GPIO_PortSource GPIO_PortSource用以选择用作事件输出的GPIO端口。
GPIO_PinSource GPIO_PinSource用以选择用作事件输出的GPIO管脚。
函数GPIO_EventOutputCmd 功能描述:使能或者失能事件输出
例: GPIO_EventOutputConfig(GPIO_PortSourceGPIOC, GPIO_PinSource6); GPIO_EventOutputCmd(ENABLE);
函数GPIO_PinRemapConfig 功能描述:改变指定管脚的映射 例: GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);
GPIO_Remap GPIO_Remap用以选择用作事件输出的GPIO端口。 GPIO_Remap_SPI1:SPI1复用功能映射 GPIO_Remap_I2C1:I2C1复用功能映射 GPIO_Remap_USART1:USART1复用功能映射 GPIO_PartialRemap_USART3:USART2复用功能映射 GPIO_FullRemap_USART3:USART3复用功能完全映射 GPIO_PartialRemap_TIM1:USART3复用功能部分映射 GPIO_FullRemap_TIM1:TIM1复用功能完全映射 GPIO_PartialRemap1_TIM2:TIM2复用功能部分映射1 GPIO_PartialRemap2_TIM2:TIM2复用功能部分映射2 GPIO_FullRemap_TIM2:TIM2复用功能完全映射 GPIO_PartialRemap_TIM3:TIM3复用功能部分映射 GPIO_FullRemap_TIM3:TIM3复用功能完全映射 GPIO_Remap_TIM4:TIM4复用功能映射 GPIO_Remap1_CAN:CAN复用功能映射1 GPIO_Remap2_CAN:CAN复用功能映射2 GPIO_Remap_PD01:PD01复用功能映射 GPIO_Remap_SWJ_NoJTRST:除JTRST外SWJ完全使能(JTAG+SW-DP) GPIO_Remap_SWJ_JTAGDisable:JTAG-DP失能 + SW-DP使能 GPIO_Remap_SWJ_Disable:SWJ完全失能(JTAG+SW-DP)
函数GPIO_EXTILineConfig 功能描述:选择GPIO管脚用作外部中断线路 例: GPIO_EXTILineConfig(GPIO_PortSource_GPIOB, GPIO_PinSource8); /**
* @brief Alternate Function I/O
*/
typedef struct
{
__IO uint32_t EVCR;
__IO uint32_t MAPR;
__IO uint32_t EXTICR[4];
uint32_t RESERVED0;
__IO uint32_t MAPR2;
} AFIO_TypeDef; 复用功能寄存器结构,也就是说这里可以把IO做复用。
/**
* @brief Inter Integrated Circuit Interface
*/
typedef struct I2C 结构体类型,这里面的全部是数据寄存器。
{
__IO uint16_t CR1;
uint16_t RESERVED0;
__IO uint16_t CR2;
uint16_t RESERVED 1;
__IO uint16_t OAR1;
uint16_t RESERVED2;
__IO uint16_t OAR2;
uint16_t RESERVED3;
__IO uint16_t DR;
uint16_t RESERVED4;
__IO uint16_t SR1;
uint16_t RESERVED5;
__IO uint16_t SR2;
uint16_t RESERVED6;
__IO uint16_t CCR;
uint16_t RESERVED7;
__IO uint16_t TRISE;
uint16_t RESERVED8;
} I2C_TypeDef;
/**
* @brief Independent WATCHDOG
*/
在键值寄存器(IWDG_KR)中写入 0xCCCC,开始启用独立看门狗;此时计数器开始从其复 位值 0xFFF 递减计数。当计数器计数到末尾 0x000 时,会产生一个复位信号(IWDG_RESET)。 无论何时,只要键寄存器 IWDG_KR 中被写入 0xAAAA, IWDG_RLR 中的值就会被重新加载 到计数器中从而避免产生看门狗复位 。 IWDG_PR 和 IWDG_RLR 寄存器具有写保护功能。要修改这两个寄存器的值,必须先向 IWDG_KR 寄存器中写入 0x5555。将其他值写入这个寄存器将会打乱操作顺序,寄存器将重新 被保护。重装载操作(即写入 0xAAAA)也会启动写保护功能。 还有两个寄存器,一个预分频寄存器(IWDG_PR),该寄存器用来设置看门狗时钟的分频 系数。另一个重装载寄存器。该寄存器用来保存重装载到计数器中的值。该寄存器也是一个 32 位寄存器,但是只有低 12 位是有效的。 只要对以上三个寄存器进行相应的设置,我们就可以启动 STM32 的独立看门狗。 那么这个就是看门狗定义的 结构体类型。 typedef struct
{
__IO uint32_t KR;
__IO uint32_t PR;
__IO uint32_t RLR;
__IO uint32_t SR;
} IWDG_TypeDef;
/**
* @brief Power Control
*/
typedef struct
{
__IO uint32_t CR;
__IO uint32_t CSR;
} PWR_TypeDef; CR; //电源控制寄存器 vu32 CSR; //电源控制状态寄存器
/**
* @brief Reset and Clock Control
*/
typedef struct
{
__IO uint32_t CR;
__IO uint32_t CFGR;
__IO uint32_t CIR;
__IO uint32_t APB2RSTR;
__IO uint32_t APB1RSTR;
__IO uint32_t AHBENR;
__IO uint32_t APB2ENR;
__IO uint32_t APB1ENR;
__IO uint32_t BDCR;
__IO uint32_t CSR;
#ifdef STM32F10X_CL
__IO uint32_t AHBRSTR;
__IO uint32_t CFGR2;
#endif /* STM32F10X_CL */
#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
uint32_t RESERVED0;
__IO uint32_t CFGR2;
#endif /* STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL */
} RCC_TypeDef; .这个宏定义是把RCC宏定义到stm32RCC寄存器的分配的存储器单元的首地址上,其中RCC_TypeDef是stm32f10x_map.h中定义的结构体,用来表述RCC所有寄存器构成的
|