STM32_GPIO配置及库函数讲解——独立按键
GD32E230开发标准教程【ch05】GPIO与独立按键输入 PPT课件

谢谢观看
GD32E230开发标准教程
实验原理
KEY;按键的电路与另外两个按键的不同之处是,连接 KEY1网络的PA0 引脚除了可以用作GPIO,还可以通过配置备用功能来实现芯片的唤醒。 在本实验中,PA0用作GPIO,且被配置为下拉输入模式。因此,KEY1按 键弹起时,PA0引脚为低电平,KEY1按键按下时,PA0引脚为高电平。
实验原理
实验原理
端口输入状态寄存器(GPIOx ISTAT)用于读取一组GPIO端口的16个引脚的输入电平状态,因此只 用了低16位。该寄存器为只读,其结构、偏移地址和复位值,以及部分位的解释说明如图5-3和表5-1 所示。GPIOx ISTAT也常常简称为ISTAT。
实验原理
实验原理
GPIO部分固件库函数 第4章已经介绍了GPIO部分固件库函数,包括gpio_mode set、 gpio_output_options_set、 gpio bit write和 gpio_output bit_get, 本实验还涉及gpio_input bit get函数,该函数同样在 gd32e230 gpio.h 文件中声明,在gd32e230 gpio.c文件中实现。
步骤8:编译及下载验证。
04本章任务ຫໍສະໝຸດ 本章任务基于GD32E2杏仁派开发板,编写程序实现通过按键切换LED编码计数方 向。假设LED熄灭为0,点亮为1,初始状态为LED1和LED2均熄灭(00 ),第二状态为LED1熄灭、LED2点亮(01),第三状态为LED1点亮、 LED2熄灭(10),第四状态为LED1和LED2均点亮(11)。按下KEY1 按键,按照“初始状态→第二状态→第三状态→第四状态→初始状态” 方向进行递增编码计数;按下KEY3按键,按照“初始状态→第四状态→ 第三状态→第二状态→初始状态”方向进行递减编码计数。无论是递增 编码计数,还是递减编码计数,两个相邻状态的间隔均为1s。
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(控制器局域网)是一种常用于车辆和工业控制领域的通信协议。
使用HAL库开发STM32GPIO口基础使用与外部中断

使用HAL库开发STM32GPIO口基础使用与外部中断GPIO(General Purpose Input/Output)是STM32系列微控制器上常见的功能模块之一,它用于与外部设备进行数据交互。
本文主要介绍如何使用HAL库来配置和使用STM32的GPIO口,并实现外部中断功能。
在使用GPIO口之前,我们首先需要了解STM32芯片上的GPIO引脚的命名方式。
以STM32F103C8T6为例,它具有32个GPIO引脚,从PA0到PA15和PB0到PB15、其中,GPIO口的命名方式为"A"加上引脚的编号。
例如,PA0表示GPIOA的第0个引脚,PB10表示GPIOB的第10个引脚。
1.引入头文件和宏定义首先,在代码文件的顶部引入"stm32f1xx_hal.h"头文件。
然后,在需要使用GPIO功能的地方,定义一个GPIO_InitTypeDef结构体变量,并通过它来配置GPIO的参数。
2.配置GPIO模式和速度在设置GPIO口之前,需要配置GPIO的模式和速度。
通过设置GPIO_InitStruct结构体变量的对应成员变量来实现。
例如,要将PA5配置为推挽输出模式,可以使用如下语句:```GPIO_InitStruct.Pin = GPIO_PIN_5;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);```这里,GPIO_PIN_5表示PA5引脚,GPIO_MODE_OUTPUT_PP表示推挽输出模式,GPIO_SPEED_FREQ_HIGH表示高速模式。
3.配置GPIO引脚在配置好GPIO模式和速度后,可以通过HAL_GPIO_Init函数来配置GPIO引脚,并进行初始化。
stm32库函数详解

GPIO_Speed GPIO_Speed:用以设置选中管脚的速率。 GPIO_Speed_10MHz:最高输出速率 10MHz GPIO_Speed_2MHz:最高输出速率 2MHz GPIO_Speed_50MHz:最高输出速率 50MHz
名为 PPP_StructInit 的函数,其功能为通过设置 PPP_InitTypeDef 结构中的各种参数来定义外设的功能,例 如:USART_StructInit
名为 PPP_Cmd 的函数,其功能为使能或者失能外设 PPP,例如: SPI_Cmd.
名为 PPP_ITConfig 的函数,其功能为使能或者失能来自外设 PPP 某中断源,例如: RCC_ITConfig.
功能描述:根据 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);
1
命名规则
在函数名中,只允许存在一个下划线,用以分隔外设缩写和函数名的其它部分。
stm32标准库函数手册

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 独立看门狗[操作寄存器+库函数]以单片机为核心的微型计算机系统中,单片机经常会受到来自外界电磁场的干扰。
造成程序跑飞,只是程序的正常运行状态被打断而进入死循环,从而使单片机控制的系统无法正常工作。
看门狗就是一种专门用于检测单片机程序运行状态的硬件结构。
stm32也是如此。
stm32 的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障时,它也仍然有效。
这里需要注意的是独立看门狗的时钟是一个内部时钟,所以不是准确的40Khz,而是在30~60Khz之间的一个可变化的时钟,看门狗的时钟对时间的要求不是很精确,所以时钟有偏差可以接受。
本例直接操作寄存器实现验证独立看门狗的复位功能,设定一个800ms的喂狗时间,在主函数中实现LED闪烁,如果设定一个1s的延时,则触发独立看门狗复位,LED常亮。
库函数实现当外部中断发生(按下PA0按键),长时间不喂狗,引发独立看门狗复位时,向外用串口输出复位提示。
直接操作寄存器使用独立看门狗,需要了解一下寄存器:键值寄存器:(IWDG_KR)低16位有效的寄存器,只写寄存器,读出值恒为0x0000. 软件必须以一定的间隔写入0xAAAA,否则,当计数器为0时,看门狗会产生复位。
写入0x5555表示允许访问IWDG_PR和IWDG_RLR寄存器。
写入0xCCCC,启动看门狗工作。
预分频寄存器:(IWDG_PR)第三位有效寄存器,用于设置看门狗的分频系数,最低为4,最高位256.通过设置PR[2:0]:位来选择计数器时钟的预分频因子。
要改变预分频因子,IWDG_SR寄存器的PVU位必须为0。
000: 预分频因子=4100: 预分频因子=64001: 预分频因子=8101: 预分频因子=128010: 预分频因子=16110: 预分频因子=256011: 预分频因子=32111: 预分频因子=256重装载寄存器:(IWDG_RLR)低12位有效,RL[11:0]。
stm32标准库函数说明

stm32标准库函数说明
STM32标准库函数是为了方便开发者使用STM32微控制器而提供的一系列函数和库。
这些库函数提供了许多常用的功能,如GPIO操作、定时器操作、串口通信、ADC转换等。
以下是一些常见的STM32标准库函数及其说明:
GPIO 初始化函数:用于配置GPIO(General-Purpose Input/Output)的引脚模式(输入、输出、复用等)和参数(输出类型、输出速度、上拉/下拉等)。
定时器初始化函数:用于配置定时器的模式(计数器模式、PWM模式等)和参数(时钟源、自动重载值等)。
串口初始化函数:用于配置串口通信的参数(波特率、数据位、停止位、奇偶校验等)。
ADC 初始化函数:用于配置ADC(Analog-to-Digital Converter)的参数(转换模式、分辨率等)。
中断初始化函数:用于配置中断的优先级和触发方式。
延时函数:用于产生一定的延时。
睡眠函数:用于使微控制器进入低功耗模式,降低功耗。
串口发送和接收函数:用于串口通信的发送和接收数据。
ADC 读取函数:用于读取ADC转换的结果。
GPIO 操作函数:用于控制GPIO引脚的电平高低或读取引脚的电平状态。
STM32单片机的八种IO口模式解析

STM32单片机的八种IO口模式解析
STM32八种IO口模式区别
(1)GPIO_Mode_AIN模拟输入
(2)GPIO_Mode_IN_FLOATING浮空输入
(3)GPIO_Mode_IPD下拉输入
(4)GPIO_Mode_IPU上拉输入
(5)GPIO_Mode_Out_OD开漏输出
(6)GPIO_Mode_Out_PP推挽输出
(7)GPIO_Mode_AF_OD复用开漏输出
(8)GPIO_Mode_AF_PP复用推挽输出
以下是详细讲解
(1)GPIO_Mode_AIN模拟输入
即关闭施密特触发器,将电压信号传送到片上外设模块(不接上、下拉电阻)
(2)GPIO_Mode_IN_FLOATING浮空输入
浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的
(3)GPIO_Mode_IPD下拉输入GPIO_Mode_IPU上拉输入
一般来讲,上拉电阻为1K-10K,电阻越小,驱动能力越强
电阻的作用:防止输入端悬空,减少外部电流对芯片的干扰,限流;,增加高电平输出时的驱动能力。
上拉输入:在默认状态下(GPIO引脚无输入)为高电平
下拉输入:在默认状态下(GPIO引脚无输入)为低电平
(4)GPIO_Mode_Out_OD开漏输出
开漏输出:输出端相当于三极管的集电极。
要得到高电平状态需要上拉电阻才行。
适合于做电流型的驱动,。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32_GPIO配置及库函数讲解——独立按键2013-02-26 13:21:30| 分类:STM32F103VBT6 | 标签:stm32_gpio_key |举报|字号订阅User Button硬件连接如下图所示:当按键被按下,PB9检测到低电平,相反PB9被3.3V电源拉高。
LED硬件连接如下图所示:高电平点亮LED。
要想将PB9管脚配置成输入模式,程序所需如下步骤:(必须的)
第一步:配置系统时钟。
见STM32F103x RCC寄存器配置
除此之外,还需将GPIO外设时钟打开。
涉及到GPIO_IDR寄存器,如下所示
经过上面4步,就可以检测PB9管脚的电平状态。
按键按下,PB9管脚应该是低电平,怎么才能验证,最简单的方法是:当按键被按下,点亮所有LED。
下面给出完整程序:
还有个问题:PB9的初始状态是什么?或者说GPIO_Configuration函数后PB9管脚上是高电平还是低电平?
这要看GPIO_InitStructure结构体的GPIO_Mode成员变量初始化为什么,如果为上拉,则PB9管脚为高电平;如果为下拉,则PB9管脚为低电平。
GPIO管脚内部电路设计如图:
当GPIO初始化为输入上拉模式,由上图可知:该端口向外输出高电平,即:ODR对应位为1
当GPIO初始化为输入下拉模式,由上图可知:该端口向外输出低电平,即:ODR对应位为0
如何调试:在下面两处处设个断点。
1. GPIO初始化函数GPIO_Configuration中
可以看到:当GPIO设置成输入上拉模式时,等待GPIO初始化完毕,该管脚ODR9为1
2. 在main函数中,设置一个断点。
全速执行(F5),按住User Button不放,可以看到GPIOB_IDR的IDR9=0。
当放开按键时,再单步调试(F10),
GPIOB_IDR的IDR9=1。
总结:
1. GPIO配置成输入模式时,最好配置成浮空输入(ODR对应位为0)。
上拉、下拉只是该管脚初始化完对外表现的电平状态。
2. GPIO配置成输入模式,只关心GPIO_IDR寄存器。
检测该管脚外部输入的是高电平还是低电平。
3. GPIO配置成输出模式,只关心GPIO_ODR寄存器。
通过该管脚向外部输出高电平还是低电平。