stm32库函数解释
- 格式:doc
- 大小:440.50 KB
- 文档页数:56
stm32g431例程库函数版本STM32G431是STMicroelectronics推出的一款高性能Arm Cortex-M4微控制器,集成了丰富的外设和存储器,并支持丰富的接口,广泛应用于工业自动化、消费电子、医疗设备等领域。
库函数是ST提供的一套用于编程STM32微控制器的函数库,简化了开发者的工作,提高了开发效率。
1. 硬件抽象层(HAL)函数:库函数的核心部分是HAL库,它提供了一组与硬件相关的函数,可以调用这些函数来控制STM32G431上的外设。
例如,使用HAL_GPIO_Init()函数可以初始化GPIO外设,使用HAL_GPIO_TogglePin()函数可以翻转GPIO引脚的电平。
2. 中间件函数:STM32G431库函数还提供了一些中间件函数,用于支持常见的通信协议和功能,如USB、CAN、SPI、I2C 等。
例如,使用HAL_CAN_Receive()函数可以接收CAN总线上的数据,使用HAL_I2C_Master_Transmit()函数可以向I2C设备发送数据。
3. 存储器控制函数:库函数还提供了用于控制存储器的函数,如Flash存储器的编程和擦除。
例如,使用HAL_FLASH_Program()函数可以向Flash存储器编程,使用HAL_FLASH_Erase()函数可以擦除Flash存储器的扇区。
4. 时钟控制函数:STM32G431库函数还提供了一组用于控制时钟的函数,可以配置系统时钟和外设时钟。
例如,使用HAL_RCC_OscConfig()函数可以配置系统时钟源,使用HAL_RCC_ClockConfig()函数可以配置系统时钟频率。
5. 中断控制函数:库函数还提供了一组用于控制中断的函数,可以配置中断优先级和中断回调函数。
例如,使用HAL_NVIC_SetPriority()函数可以设置中断优先级,使用HAL_NVIC_EnableIRQ()函数可以使能中断。
单片机STM32开发中常用库函数分析在STM32开发中,使用库函数可以帮助开发人员更快速、更便捷地实现目标功能。
下面是一些常用的STM32库函数的分析:1. GPIO库函数:GPIO库函数用于对STM32的通用输入输出引脚进行配置和控制。
通过这些函数可以实现引脚的初始化、读取和设置等操作。
例如,GPIO_Pin_Init(函数可以对引脚进行初始化配置,GPIO_Pin_Read(函数用于读取引脚的电平,GPIO_Pin_Write(函数用于设置引脚的输出电平。
这些函数的使用可以方便地对外设进行控制。
2. NVIC库函数:NVIC库函数用于对中断向量表进行操作和配置。
通过这些函数可以实现中断的使能、优先级的设置等操作。
例如,NVIC_EnableIRQ(函数可以使能指定的中断,NVIC_SetPriority(函数可设置中断的优先级。
这些函数的使用可以方便地管理中断响应。
3. RCC库函数:RCC库函数用于对STM32的时钟系统进行配置和管理。
通过这些函数可以实现外部时钟源的配置、APB总线时钟的配置等操作。
例如,RCC_OscConfig(函数可进行时钟源的配置,RCC_APBPeriphClockCmd(函数可使能相应的外设时钟。
这些函数的使用可以方便地进行时钟管理。
4. UART库函数:UART库函数用于对STM32的串行通讯端口进行操作和配置。
通过这些函数可以实现串口的初始化、发送和接收等操作。
例如,UART_Init(函数用于串口的初始化设置,UART_SendData(函数用于发送数据,UART_ReceiveData(函数用于接收数据。
这些函数的使用可以方便地进行串口通讯。
5. SPI库函数:SPI库函数用于对STM32的串行外设接口进行操作和配置。
通过这些函数可以实现SPI通讯的初始化、发送和接收等操作。
例如,SPI_Init(函数用于SPI的初始化设置,SPI_SendData(函数用于发送数据,SPI_ReceiveData(函数用于接收数据。
DAC固件库函数DAC固件库函数函数名描述void DAC_DeInit(void) DAC外围寄存器默认复位值。
VoidDAC_Init(uint32_tDAC_Channel,DAC_InitTypeDef*DAC_InitStruct)根据外围初始化指定的DACvoid DAC_StructInit(DAC_InitTypeDef* DAC_InitStruct) 把DAC_StructInit 中的每一个参数按缺省值填入voidDAC_Cmd(uint32_t DAC_Channel, FunctionalStateNewState)使能或使能指定的DAC通道。
void DAC_ITConfig(uint32_t DAC_Channel, uint32_tDAC_IT, FunctionalState NewState)使能或者失能指定的DAC 的中断voidDAC_DMACmd(uint32_tDAC_Channel,FunctionalState NewState) 使能或者失能指定的DAC通道DMA请求。
void DAC_SoftwareTriggerCmd(uint32_t DAC_Channel, FunctionalState NewState) 使能或者失能用选定的DAC通道软件触发voidDAC_DualSoftwareTriggerCmd(FunctionalStateNewState)使能或者使能双软件触发命令void DAC_WaveGenerationCmd(uint32_t DAC_Channel, uint32_t DAC_Wave, FunctionalState NewState) 使能或者使能选定的DAC通道波的产生。
void DAC_SetChannel1Data(uint32_t DAC_Align, uint16_tData)设置通道1 的数据void DAC_SetChannel2Data(uint32_t DAC_Align, uint16_tData)设置通道2 的数据void DAC_SetDualChannelData(uint32_t DAC_Align,uint16_t Data2, uint16_t Data1)设置双通道的数据uint16_tDAC_GetDataOutputValue(uint32_t DAC_Channel) 返回选定DAC通道最后的数据输出值。
stm32hal库函数说明手册摘要:I.简介A.什么是STM32HAL 库函数?B.为什么需要STM32HAL 库函数?II.STM32HAL 库函数的使用A.库函数的分类1.通用库函数2.外设库函数B.库函数的使用方法1.函数原型2.函数参数3.函数返回值III.STM32HAL 库函数的应用A.实例:GPIO 操作1.HAL_GPIO_Init() 函数2.HAL_GPIO_WritePin() 函数3.HAL_GPIO_ReadPin() 函数B.实例:中断处理1.HAL_GPIO_EXTI_IRQHandler() 函数IV.总结A.STM32HAL 库函数的作用B.STM32HAL 库函数的发展趋势正文:STM32HAL 库函数说明手册I.简介A.什么是STM32HAL 库函数?STM32HAL 库函数是一系列针对STM32 微控制器的函数,它提供了丰富的功能,包括GPIO 操作、中断处理、定时器控制等,方便开发人员快速、高效地开发STM32 应用。
B.为什么需要STM32HAL 库函数?随着STM32 微控制器的广泛应用,开发者需要一套简洁、易用的API 来操作外设,提高开发效率。
STM32HAL 库函数正是基于此需求而设计的。
II.STM32HAL 库函数的使用A.库函数的分类STM32HAL 库函数主要分为两类:通用库函数和外设库函数。
1.通用库函数通用库函数主要包括内存操作、数学运算、字符串处理等基本功能。
2.外设库函数外设库函数则是针对特定外设的函数,例如GPIO、USART、SPI 等。
B.库函数的使用方法1.函数原型STM32HAL 库函数的原型通常以HAL_开头的宏定义形式存在,例如HAL_GPIO_Init()。
2.函数参数每个函数都有其特定的参数,参数类型包括寄存器、指针、整数等。
使用时需要严格按照函数声明中的参数列表进行传递。
3.函数返回值大部分STM32HAL 库函数的返回值都是一个状态码,表示函数执行的结果。
stm32hal库函数说明手册(原创实用版)目录一、STM32HAL 库概述二、STM32HAL 库常用函数说明1.GPIO 操作相关函数2.备份寄存器相关函数3.CAN 控制器相关函数4.直接内存存取控制器相关函数5.外部中断事件控制器相关函数6.闪存存储器相关函数7.独立看门狗相关函数8.嵌套中断向量列表控制器相关函数9.电源/功耗控制相关函数10.复位与时钟控制器相关函数正文一、STM32HAL 库概述STM32HAL 库是基于 STM32 微控制器的底层硬件抽象层(HAL)库,它为开发者提供了一套简单易用的接口,使得开发者能够方便地操作STM32 微控制器的各种外设。
STM32HAL 库涵盖了微控制器的各个方面,例如 GPIO、ADC、CAN、DMA、中断、FLASH、IWDG 等,使得开发者无需深入了解底层硬件细节,即可实现对微控制器的控制。
二、STM32HAL 库常用函数说明1.GPIO 操作相关函数GPIO(通用输入输出)是 STM32 微控制器中最常用的功能之一。
以下是几个常用的 GPIO 函数:- halgpioinit():GPIO 初始化函数,用于配置 GPIO 的引脚模式、输出类型、速度等。
- halgpiowrite():用于设置或清除指定 GPIO 引脚的状态。
- halgpioread():用于读取指定 GPIO 引脚的状态。
- halgpioexticallback():中断回调函数,用于处理 GPIO 外部中断事件。
2.备份寄存器相关函数备份寄存器(BKP)是用于存储关键数据的寄存器,当系统发生复位时,备份寄存器的值可以被恢复。
以下是备份寄存器相关的函数:- hal_bkp_init():备份寄存器初始化函数。
- hal_bkp_write():将数据写入备份寄存器。
- hal_bkp_read():从备份寄存器读取数据。
3.CAN 控制器相关函数CAN(控制器局域网)是一种常用于车辆和工业控制领域的通信协议。
STM32单片机库函数结构体详解在学习STM32F103的过程中,经常用到库函数,尤其遇到如下的结构体定义语句,如何理解。
本文将解释清楚这类结构体的定义。
typedef struct{uint32_t x;uint16_t y;uint8_t z;} Sname;对于以上程序,包含三部分,如下图1所示,包括3部分,分别是typedef、struct{... }和Sname。
图1(1)typedef是C语言的关键字,其用途是为一种数据类型定义一个新名字,主要是将较复杂的数据类型定义为易记且意义明确的新名字。
通常,我们定义一个变量,如定义一个无符号的整形变量x,则c语言中表示如下:unsigned int x; 数据类型unsigned int比较复杂,因此可以使用typedef用一个简单的名字重新定义。
如:typedef unsigned int uint32_t; 即用uint32_t代表unsigned int。
则unsigned int x; 可以表示为uint32_t x;uint16_t x和uint8_t x也同样是这样的定义。
如下所示。
typedef unsigned short uint16_t;typedef unsigned char uint8_t;(2)struct也是C语言的关键字,其用途是将具有不同数据类型的变量打包管理,作为结构体。
参照上文(1)中变量定义,结构体变量定义为struct Sname;Sname是变量名。
为了增加不同数据类型的结构体成员,将成员增加在大括号{ }内,{ }内的内容是结构体的成员变量。
如下所示。
struct{uint32_t x;uint32_t y;uint8_t z;} Sname;所以,当有不同数据类型的数据需要打包处理,则将其作为结构体数据处理。
如处理一个振动传感器的数据,该传感器具有x、y、z三个方向的振动数据,则可以将其作为一个结构体处理。
stm32标准库函数手册STM32标准库函数是一种由ST公司推出的一套用于STM32微控制器编程的开发工具,它能够帮助开发者快速地进行芯片的开发、调试和测试。
本文将对STM32标准库函数进行详细的介绍,并提供中文手册,帮助开发者更好地掌握这个工具。
一、STM32标准库函数概述STM32标准库函数是一套由ST公司提供的软件库,包括了一系列用于STM32微控制器的常用功能函数,例如GPIO、USART、SPI、I2C等,这些函数可以用于快速实现各种应用。
同时,ST公司也提供了一些示例代码,可以方便开发者进行学习和参考。
STM32标准库函数可以与各种不同的开发环境集成,例如Keil、IAR、STM32Cube等,方便开发者进行开发。
在使用STM32标准库函数时,可以通过库函数的方式来调用硬件资源,比如设置GPIO口的状态、使用USART进行通信、配置外部中断等。
1. 系统初始化函数:这些函数包括了芯片系统时钟的初始化、中断优先级的设置、时钟输出的配置等,必须在主函数前进行调用。
2. GPIO和外部中断函数:这些函数用于对GPIO口状态的配置和读取,以及对外部中断的控制。
3. USART函数:这些函数用于对串口进行配置和读写操作。
8. DAC函数:这些函数用于对模拟量进行输出。
以下是STM32标准库函数的中文手册,包含了常用函数的介绍和使用方法。
1. 系统初始化函数1.1. RCC配置函数函数原型:void RCC_Configuration(void)函数功能:配置STM32的时钟源和时钟分频系数。
函数说明:在函数内部,首先对PLL时钟源进行配置,然后根据系统时钟的需要选择PLL时钟的分频系数,然后对AHB、APB1、APB2的分频系数进行配置。
最后,开启相应时钟使能位。
函数功能:对STM32的中断向量表进行重定位,并设置各个中断的优先级。
函数说明:中断向量表的地址是由SCB_VTOR寄存器来控制的。
一、STM32单片机库函数概述STM32单片机是一款由意法半导体公司提供的系列32位微控制器,具有高性能、低功耗等特点,广泛应用于工业控制、汽车电子、智能家居等领域。
在STM32单片机的开发过程中,库函数是开发者最常使用的工具之一,通过库函数可以方便地调用各种功能模块的接口,提高开发效率、降低开发难度。
本文将重点介绍STM32单片机常用的库函数和关键代码。
二、GPIO库函数1. GPIO初始化在STM32单片机中,GPIO是最常用的功能模块之一,可用于控制外部设备,实现输入输出等功能。
在使用GPIO之前,首先需要初始化GPIO的引脚方向、输入输出模式、上拉下拉等配置。
以下是GPIO初始化函数的关键代码:```void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);```其中,GPIOx代表GPIO的端口号,GPIO_InitStruct包含了GPIO的各项配置参数。
2. GPIO读取状态在实际应用中,经常需要读取GPIO引脚的状态,判断外部设备的输入信号。
以下是GPIO读取状态的关键代码:```uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);```该函数可以读取指定GPIO引脚的状态,返回值为0或1,分别代表引脚的低电平或高电平。
3. GPIO输出控制除了读取外部设备的输入信号外,我们还需要控制GPIO引脚输出高低电平,驱动外部设备。
以下是GPIO输出控制的关键代码:```void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); ```通过GPIO_SetBits和GPIO_ResetBits函数,可以分别将指定GPIO 引脚输出高电平或低电平。
Stm32库函数GPIO_Init()的⼀些理解以STM32F103为例,记录⼀下⾃⼰对STM32中GPIO初始化的理解:1 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);功能描述:根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器输⼊参数1:GPIOx //GPIOx:x 可以是 A,B,C,D 或者 E,来选择 GPIO 外设输⼊参数2:GPIO_InitStruct //GPIO_InitStruct:指向结构 GPIO_InitTypeDef 的指针,包含了外设 GPIO 的配置信息 如:管脚号,速度,模式等(GPIO_Pin,GPIO_Speed,GPIO_Mode) 参阅 Section:GPIO_InitTypeDef 查阅更多该参数允许取值范围GPIO_Init:有⼆个参数,均为结构体指针,右键Go To definition :可以查看函数的定义/*** @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;/*** @brief GPIO Init structure definition*/typedef struct{uint16_t GPIO_Pin; /*!< Specifies the GPIO pins to be configured.This parameter can be any value of @ref GPIO_pins_define */GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins.This parameter can be a value of @ref GPIOSpeed_TypeDef */GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins.This parameter can be a value of @ref GPIOMode_TypeDef */}GPIO_InitTypeDef;函数原型如下:1/**2 * @brief Initializes the GPIOx peripheral according to the specified3 * parameters in the GPIO_InitStruct.4 * @param GPIOx: where x can be (A..G) to select the GPIO peripheral.5 * @param GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that6 * contains the configuration information for the specified GPIO peripheral.7 * @retval None8*/9void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)10 {11 uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00;12 uint32_t tmpreg = 0x00, pinmask = 0x00;13/* Check the parameters */14 assert_param(IS_GPIO_ALL_PERIPH(GPIOx));15 assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));16 assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));1718/*---------------------------- GPIO Mode Configuration -----------------------*/19 currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F); 20if ((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00) 21 {22/* Check the parameters */23 assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));24/* Output mode */25 currentmode |= (uint32_t)GPIO_InitStruct->GPIO_Speed;26 }27/*---------------------------- GPIO CRL Configuration ------------------------*/28/* Configure the eight low port pins */29if (((uint32_t)GPIO_InitStruct->GPIO_Pin & ((uint32_t)0x00FF)) != 0x00)30 {31 tmpreg = GPIOx->CRL;32for (pinpos = 0x00; pinpos < 0x08; pinpos++)33 {34 pos = ((uint32_t)0x01) << pinpos;35/* Get the port pins position */36 currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;37if (currentpin == pos)38 {39 pos = pinpos << 2;40/* Clear the corresponding low control register bits */41 pinmask = ((uint32_t)0x0F) << pos;42 tmpreg &= ~pinmask;43/* Write the mode configuration in the corresponding bits */44 tmpreg |= (currentmode << pos);45/* Reset the corresponding ODR bit */46if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)47 {48 GPIOx->BRR = (((uint32_t)0x01) << pinpos);49 }50else51 {52/* Set the corresponding ODR bit */53if (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)54 {55 GPIOx->BSRR = (((uint32_t)0x01) << pinpos);56 }57 }58 }59 }60 GPIOx->CRL = tmpreg;61 }下⾯我门以初始化#define LED_G_GPIO_PIN GPIO_Pin_0#define LED_G_GPIO_PORT GPIOB#define LED_G_GPIO_CLK RCC_APB2Periph_GPIOBvoid LED_GPIO_Config(void){ /*定义⼀个 GPIO_InitTypeDef 类型的结构体*/GPIO_InitTypeDef GPIO_InitStruct;/*开启 LED 相关的 GPIO 外设时钟*/RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK, ENABLE); /*选择要控制的 GPIO 引脚*/ GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN; /*设置引脚模式为通⽤推挽输出*/ GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; /*设置引脚速率为 50MHz*/GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;/*调⽤库函数,初始化 GPIO*/GPIO_Init(LED_G_GPIO_PORT, &GPIO_InitStruct); /*设置初始状态为 SetBits 关闭LED灯(低电平点亮)*/ GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);}难点就是函数种运⽤了结构体指针:下⾯我们来学习⼀下C语⾔中的结构体1. 什么是结构体?结构体是⼀种⼯具,⽤这个⼯具可以定义⾃⼰的数据类型2. 结构体与数组的⽐较(1) 都由多个元素组成(2) 各个元素在内存中的存储空间是连续的(3) 数组中各个元素的数据类型相同,⽽结构体中的各个元素的数据类型可以不相同3. 结构体的定义和使⽤1>:⼀般形式struct结构体名{类型名1 成员名1;类型名2 成员名2;类型名n 成员名n;};struct student{char name[10];char sex;int age;float score;};//student 为结构体类型名2>:定义结构体类型的变量,指针变量和数组⽅法⼀:定义结构体类型时,同时定义该类型的变量struct [student] /* [ ]表⽰结构体名是可选的 */{char name[10];char sex;int age;float score;}stu1, *ps, stu[5]; /* 定义结构体类型的普通变量、指针变量和数组 */⽅法⼆:先定义结构体类型,再定义该类型的变量struct student{char name[10];char sex;int age;float score;};struct student stu1, *ps, stu[5]; /* 定义结构体类型的普通变量、指针变量和数组 */⽅法三:⽤类型定义符typedef先给结构体类型命别名,再⽤别名定义变量typedef struct [student]{char name[10];char sex;int age;float score;}STU;STU stu1, *ps, stu[5]; /* ⽤别名定义结构体类型的普通变量、指针变量和数组 *///注释:typedef3:> 给结构体变量赋初值struct [student]{char name[10];char sex;int age;float score;}stu[2]={{"Li", 'F', 22, 90.5}, {"Su", 'M', 20, 88.5}}; 4:>引⽤结构体变量中的成员1) 结构体变量名. 成员名: 2) 结构体指针变量->成员名: ps->name3) (*结构体指针变量). 成员名: (*ps).name4) 结构体变量数组名. 成员名: stu[0].name先写到这⾥下次再补充。
部分库函数简介一、通用输入/输出(GPIO)--------------------------------------------------------------------------------------------3二、外部中断/事件控制器(EXTI)-----------------------------------------------------------------------------------7三、通用定时器(TIM)-------------------------------------------------------------------------------------------------9四:ADC寄存器------------------------------------------------------------------------25 五:备份寄存器(BKP)-------------------------------------------------------------------------------------------------33六、DMA控制器(DMA)---------------------------------------------------------------37七、复位和时钟设置(RCC)------------------------------------------------------------------------------------------41八、嵌套向量中断控制器(NVIC)-----------------------------------------------------------------------------------49命名规则在函数名中,只允许存在一个下划线,用以分隔外设缩写和函数名的其它部分。
名为PPP_Init的函数,其功能是根据PPP_InitTypeDef中指定的参数,初始化外设PPP,例如TIM_Init.名为PPP_DeInit的函数,其功能为复位外设PPP的所有寄存器至缺省值,例如TIM_DeInit.名为PPP_StructInit的函数,其功能为通过设置PPP_InitTypeDef 结构中的各种参数来定义外设的功能,例如:USART_StructInit名为PPP_Cmd的函数,其功能为使能或者失能外设PPP,例如:SPI_Cmd.名为PPP_ITConfig的函数,其功能为使能或者失能来自外设PPP某中断源,例如:RCC_ITConfig.名为PPP_DMAConfig的函数,其功能为使能或者失能外设PPP的DMA接口,例如:TIM1_DMAConfig. 用以配置外设功能的函数,总是以字符串“Config”结尾,例如GPIO_PinRemapConfig.名为PPP_GetFlagStatus的函数,其功能为检查外设PPP某标志位被设置与否,例如:I2C_GetFlagStatus.名为PPP_ClearFlag的函数,其功能为清除外设PPP标志位,例如:I2C_ClearFlag.名为PPP_GetITStatus的函数,其功能为判断来自外设PPP的中断发生与否,例如:I2C_GetITStatus.名为PPP_ClearITPendingBit的函数,其功能为清除外设PPP中断待处理标志位,例如:I2C_ClearITPendingBit.typedef signed long s32;typedef signed short s16;typedef signed char s8;typedef signed long const sc32; /* Read Only */typedef signed short const sc16; /* Read Only */typedef signed char const sc8; /* Read Only */typedef volatile signed long vs32;typedef volatile signed short vs16;typedef volatile signed char vs8;typedef volatile signed long const vsc32; /* Read Only */typedef volatile signed short const vsc16; /* Read Only */typedef volatile signed char const vsc8; /* Read Only */typedef unsigned long u32;typedef unsigned short u16;typedef unsigned char u8;typedef unsigned long const uc32; /* Read Only */typedef unsigned short const uc16; /* Read Only */typedef unsigned char const uc8; /* Read Only */typedef volatile unsigned long vu32;typedef volatile unsigned short vu16;typedef volatile unsigned char vu8;typedef volatile unsigned long const vuc32; /* Read Only */typedef volatile unsigned short const vuc16; /* Read Only */typedef volatile unsigned char const vuc8; /* Read Only */一、通用输入/输出(GPIO)GPIO寄存器结构GPIO_TypeDef和AFIO_TypeDef,在文件“stm32f10x_map.h”中定义如下:typedef struct{vu32 CRL;vu32 CRH;vu32 IDR;vu32 ODR;vu32 BSRR;vu32 BRR;vu32 LCKR;}GPIO_TypeDef;typedef struct{vu32 EVCR;vu32 MAPR;vu32 EXTICR[4];}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_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 structureGPIO_InitTypeDef定义于文件“stm32f10x_gpio.h”:typedef struct{u16 GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;}GPIO_InitTypeDef;GPIO_Pin该参数选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚。
可以使用下表中的任意组合。
GPIO_Pin_None:无管脚被选中GPIO_Pin_x:选中管脚x(0--15)GPIO_Pin_All:选中全部管脚GPIO_SpeedGPIO_Speed:用以设置选中管脚的速率。
GPIO_Speed_10MHz:最高输出速率10MHzGPIO_Speed_2MHz:最高输出速率2MHzGPIO_Speed_50MHz:最高输出速率50MHzGPIO_ModeGPIO_Mode:用以设置选中管脚的工作状态。
GPIO_Mode_AIN:模拟输入GPIO_Mode_IN_FLOA TING:浮空输入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_InitTypeDef GPIO_InitStructure;GPIO_StructInit(&GPIO_InitStructure);GPIO_InitStruct:GPIO_Pin:GPIO_Pin_AllGPIO_Speed:GPIO_Speed_2MHzGPIO_Mode:GPIO_Mode_IN_FLOA TING5 函数GPIO_ReadInputDataBit功能描述:读取指定端口管脚的输入例:u8 ReadValue;ReadValue = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);6 函数GPIO_ReadInputData功能描述:读取指定的GPIO端口输入例:u16 ReadValue;ReadValue = GPIO_ReadInputData(GPIOC);7 函数GPIO_ReadOutputDataBit功能描述:读取指定端口管脚的输出例:u8 ReadValue;ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7);8 函数GPIO_ReadOutputData功能描述:读取指定的GPIO端口输出例:u16 ReadValue;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 函数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_PortSourceGPIO_PortSource用以选择用作事件输出的GPIO端口。