1、typedef signed long const sc32; /* Read Only */typedef signed short const sc16; /* Read Only */ typedef signed char const sc8;typedef volatile signed long vs32;typedef volatile signed short vs16;typedef volatile signed char vs8;typedef volatile signed long const vsc32;typedef volatile signed short c
2、onst vsc16;typedef volatile signed char const vsc8;typedef unsigned long u32;typedef unsigned short u16;typedef unsigned char u8;typedef unsigned long const uc32;typedef unsigned short const uc16;typedef unsigned char const uc8;typedef volatile unsigned long vu32;typedef volatile unsigned short vu16
3、;typedef volatile unsigned char vu8;typedef volatile unsigned long const vuc32;typedef volatile unsigned short const vuc16;typedef volatile unsigned char const vuc8;一、通用输入/输出(GPIO)GPIO寄存器结构GPIO_TypeDef和AFIO_TypeDef,在文件“stm32f10x_map.h”中定义如下:typedef struct vu32 CRL;vu32 CRH;vu32 IDR;vu32 ODR;vu32 BSR
4、R;vu32 BRR;vu32 LCKR; GPIO_TypeDef;vu32 EVCR;vu32 MAPR;vu32 EXTICR4;AFIO_TypeDef;GPIO库函数1 函数GPIO_DeInit功能描述:将外设GPIOx寄存器重设为缺省值例:GPIO_DeInit(GPIOA);2 函数GPIO_AFIODeInit将复用功能(重映射事件控制和EXTI设置)重设为缺省值GPIO_AFIODeInit();3 函数GPIO_Init根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器GPIO_InitTypeDef GPIO_InitStructure;GPIO_
5、InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitTypeDef structure GPIO_InitTypeDef定义于文件“stm32f10x_gpio.h”:u16 GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_Type
6、Def GPIO_Mode;GPIO_InitTypeDef;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:用以设置选中管脚的工作
7、状态。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:复用推挽输出4 函数GPIO_StructInit把GPIO_InitStruct中的每一个参数按缺省值填入GPIO_StructInit(&GPIO_InitStruct:GPIO_Pin:GPIO_Pin_All GPIO_Speed_2MHz GPIO_
8、Mode_IN_FLOATING5 函数GPIO_ReadInputDataBit读取指定端口管脚的输入u8 ReadValue;ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);6 函数GPIO_ReadInputData读取指定的GPIO端口输入u16 ReadValue;ReadValue = GPIO_ReadInputData(GPIOC);7 函数GPIO_ReadOutputDataBit读取指定端口管脚的输出ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7);8 函数
9、GPIO_ReadOutputData读取指定的GPIO端口输出ReadValue = GPIO_ReadOutputData(GPIOC);9 函数GPIO_SetBits置位指定的数据端口位GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);10 函数GPIO_ResetBits清除指定的数据端口位GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);11 函数GPIO_WriteBit设置或者清除指定的数据端口位GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET);12
10、函数GPIO_Write向指定GPIO数据端口写入数据GPIO_Write(GPIOA, 0x1101);13 函数GPIO_PinLockConfig锁定GPIO管脚设置寄存器GPIO_PinLockConfig(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);14 函数GPIO_EventOutputConfig选择GPIO管脚用作事件输出GPIO_EventOutputConfig(GPIO_PortSourceGPIOE, GPIO_PinSource5);GPIO_PortSource GPIO_PortSource用以选择用作事件输出的GPIO端口。GPIO_Pin
11、Source GPIO_PinSource用以选择用作事件输出的GPIO管脚。15 函数GPIO_EventOutputCmd使能或者失能事件输出GPIO_EventOutputConfig(GPIO_PortSourceGPIOC, GPIO_PinSource6);GPIO_EventOutputCmd(ENABLE);16 函数GPIO_PinRemapConfig改变指定管脚的映射GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);GPIO_Remap GPIO_Remap用以选择用作事件输出的GPIO端口。GPIO_Remap_SPI1:SPI1
12、复用功能映射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:
13、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_Disa
14、ble:SWJ完全失能(JTAG+SW-DP)17 函数GPIO_EXTILineConfig选择GPIO管脚用作外部中断线路GPIO_EXTILineConfig(GPIO_PortSource_GPIOB, GPIO_PinSource8);二、外部中断/事件控制器(EXTI)EXTI寄存器结构EXTI_TypeDef,在文件“stm32f10x_map.h”中定义如下:vu32 IMR;vu32 EMR;vu32 RTSR;vu32 FTSR;vu32 SWIER;vu32 PR;EXTI_TypeDef;EXTI库函数1 函数EXTI_DeInit将外设EXTI寄存器重设为缺省值EXT
15、I_DeInit();2 函数EXTI_Init根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器EXTI_InitTypeDef EXTI_InitStructure;EXTI_InitStructure.EXTI_Line = EXTI_Line12 | EXTI_Line14;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;E
16、XTI_Init(&EXTI_InitStructure);EXTI_InitTypeDef structure EXTI_InitTypeDef定义于文件“stm32f10x_exti.h”: u32 EXTI_Line;EXTIMode_TypeDef EXTI_Mode;EXTIrigger_TypeDef EXTI_Trigger;FunctionalState EXTI_LineCmd;EXTI_InitTypeDef;EXTI_Line EXTI_Line选择了待使能或者失能的外部线路。EXTI_Linex:外部中断线x(0-18)EXTI_Mode EXTI_Mode:设置了被使
17、能线路的模式。EXTI_Mode_Event:设置EXTI线路为事件请求EXTI_Mode_Interrupt:设置EXTI线路为中断请求EXTI_Trigger EXTI_Trigger:设置了被使能线路的触发边沿。EXTI_Trigger_Falling:设置输入线路下降沿为中断请求 EXTI_Trigger_Rising:设置输入线路上升沿为中断请求 EXTI_Trigger_Rising_Falling:设置输入线路上升沿和下降沿为中断请求EXTI_LineCmd EXTI_LineCmd用来定义选中线路的新状态。它可以被设为ENABLE或者DISABLE。3 函数EXTI_Struc
18、tInit把EXTI_InitStruct中的每一个参数按缺省值填入EXTI_StructInit(&EXTI_InitStruct缺省值EXTI_Line: EXTI_LineNone EXTI_Mode_Interrupt EXTI_Trigger_Falling EXTI_LineCmd: DISABLE4 函数EXTI_GenerateSWInterrupt产生一个软件中断EXTI_GenerateSWInterrupt(EXTI_Line6);5 函数EXTI_GetFlagStatus检查指定的EXTI线路标志位设置与否FlagStatus EXTIStatus;EXTIStatu
19、s = EXTI_GetFlagStatus(EXTI_Line8);6 函数EXTI_ClearFlag清除EXTI线路挂起标志位EXTI_ClearFlag(EXTI_Line2);7 函数EXTI_GetITStatus检查指定的EXTI线路触发请求发生与否ITStatus EXTIStatus;EXTIStatus = EXTI_GetITStatus(EXTI_Line8);8 函数EXTI_ClearITPendingBit清除EXTI线路挂起位EXTI_ClearITpendingBit(EXTI_Line2);三、通用定时器(TIM)TIM寄存器结构TIM_TypeDeff,在
20、文件“stm32f10x_map.h”中定义如下:vu16 CR1;u16 RESERVED0;vu16 CR2;u16 RESERVED1;vu16 SMCR;u16 RESERVED2;vu16 DIER;u16 RESERVED3;vu16 SR;u16 RESERVED4;vu16 EGR;u16 RESERVED5;vu16 CCMR1;u16 RESERVED6;vu16 CCMR2;u16 RESERVED7;vu16 CCER;u16 RESERVED8;vu16 CNT;u16 RESERVED9;vu16 PSC;u16 RESERVED10;vu16 ARR;u16 RE
21、SERVED113;vu16 CCR1;u16 RESERVED12;vu16 CCR2;u16 RESERVED13;vu16 CCR3;u16 RESERVED14;vu16 CCR4;u16 RESERVED153;vu16 DCR;u16 RESERVED16;vu16 DMAR;u16 RESERVED17;TIM_TypeDef;TIM库函数1 函数TIM_DeInit将外设TIMx寄存器重设为缺省值TIM_DeInit(TIM2);2 函数TIM_TimeBaseInit根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位TIM_TimeBas
22、eInitTypeDef TIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Period = 0xFFFF;TIM_TimeBaseStructure.TIM_Prescaler = 0xF;TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);TIM_TimeBaseInitTypeDef structure TIM_TimeBaseInitTypeDef定义于文件“stm32f10x_tim.h”:u16 TIM_Period;u16 TIM_Prescaler;u8 TIM_ClockDivision;u16 TIM_CounterMode; TIM_TimeBaseInitTypeDef;TIM_Period TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1