STM32F4的IO主要可以配置为以下八种模式:
1、输入浮空
2、输入上拉
3、输入下拉
4、模拟输入
5、开漏输出
6、推挽输出
7、推挽式复用功能
8、开漏式复用功能
1
2
3
4
5
6
7
8
常用配置格式:
1、使能IO时钟,调用函数RCC_AHB1PeriphClockCmd();
2、初始化IO参数,调用函数GPIO_Init();
3、操作IO。
1
2
3
void IO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); //使能GPIOE时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_3; //选择IO
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //普通输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //时钟100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化GPIOE
GPIO_SetBits(GPIOE,GPIO_Pin_4 | GPIO_Pin_10); //设置高电平
}
void main()
{
IO_Init();
while()
{
GPIO_SetBits(GPIOE,GPIO_Pin_4); //IO口拉高
delay_ms(500); //延时
GPIO_ResetBits(GPIOE,GPIO_Pin_4); //IO口拉低
delay_ms(500); //延时
}
}
关键字:STM32F4 IO配置
引用地址:
STM32F4-IO配置
推荐阅读最新更新时间:2024-11-08 10:31
基于stm32F407 10KHZPWM方波以及PWM周期计算
#include sys.h #include timer.h void TIM4_PWM_Init(u16 arr,u16 psc) { RCC- APB1ENR|=1 2;//使能TIM4 RCC- AHB1ENR|=1 3;//使能GPIOD GPIO_Set(GPIOD,PIN12,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); GPIO_AF_Set(GPIOD,12,2); TIM4- ARR=arr; TIM4- PSC=psc; TIM4- CCMR1|=6 4;//PWM1 mode
[单片机]
STM32 IO口的8中配置方式解读
STM32 IO口的8中配置方式: (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 复用推挽输出 对于刚入门的新手,我想这几个概念是必须得搞清楚的,平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种,但一直未曾对这些做过归纳。因此,在这里做一个总结: 推挽输出:可以输出高,低电平,连接数字器件;
[单片机]
【stm32f407】SD协议(一)-SDIO
SDIO简介 1.SDIO主要功能及框图 STM32F4的SDIO控制器支持多媒体卡(MMC卡)、SD存储卡、SD I/O卡和CE-ATA设备等。SDIO的主要功能如下: 1)与多媒体卡系统规格书版本4.2全兼容。支持三种不同的数据总线模式:1位(默认)、4位和8位。 2)与较早的多媒体卡系统规格版本全兼容(向前兼容)。 3)与SD存储卡规格版本2.0全兼容。 4)与SD I/O卡规格版本2.0全兼容:支持良种不同的数据总线模式:1位(默认)和4位。 5)完全支持CE-ATA功能(与CE-ATA数字协议版本1.1全兼容)。 8位总线模式下数据传输速率可达48MHz(分频器旁路时)。 6)数据和命令输出使
[单片机]
STM32F4CubeMX学习笔记之ADC不带中断
开发板:普中PZ6808L-F4 开发环境:keil5+CnbeMx 硬件资源:1个ADC 1个串口 功能说明:ADC采集电压通过串口打印输出 配置为: extern ADC_HandleTypeDef hadc1; void SystemClock_Config(void); int fputc(int ch,FILE *f) { uint8_t temp ={ch}; HAL_UART_Transmit(&huart1,temp,1,2); return(ch); } int main(void) { float ADC_Value; uint16_t adcx; HAL_Init
[单片机]
基于STM32F407最小系统板三种矩阵键盘实现方法
这里采用的八个端口为PA0-PA7。 此处先给出矩阵键盘的原理图: 一、八个端口采用开漏输出,配置上拉电阻,实现同51一样的双向IO口功能。 //按键初始化函数 void KEY_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_P
[单片机]
用STM32F407玩控制—史密斯预估补偿控制
史密斯预估补偿控制的原理如图1所示,图1中传递函数Ksgs(s)称为预估补偿器(这个图来自网络,文献可以看金以慧《过程控制》),从原理上说,要使Ksgs(s)=Kpgp(s)(1-exp(-τd*s)),这样闭环传递函数G(s)=KpGc(s)gp(s)exp(-τd*s)/(1+KpGc(s)gp(s)),这时,特征方程中不再包含延滞项,也就是说,控制系统的调节品质不再受到时间延滞的影响,当然,这是理论上的,实际上,我们无法正确辨识出过程对象的数学模型Kpgp(s)exp(-τd*s),况且,过程对象可能是非线性的或者是时变的,例如,随着设备的老化,过程对象模型无可避免的会发生变化,在蒸汽加热系统中,疏水器性能的变差,就会导致过
[单片机]
STM32F4+UCOSII 程序运行一段时间操作系统死掉中断正常响应
问题描述 控制系统使用的是STM32F4+UCOSII 抢占型内核,最近一段时间出现了程序跑一段时间之后操作系统直接死掉的问题,表现为:操作系统中设有优先级很低的呼吸灯任务,只要操作系统在正常工作,呼吸灯就会不停的跳动,但是当出现问题时,呼吸灯停止跳动,控制底盘运动的任务也死掉,底盘处于失控状态,LCD所在的任务也死掉,不再进行刷新,推测为所有的操作系统的任务均死掉,不能正常工作,但是中断仍然可以响应,写在定时器中断中的急停操作是可以执行的。 问题分析 怀疑是进入了一些错误中断 怀疑是指针或者堆栈出了问题 怀疑最高优先级的任务中存在死循环 怀疑操作系统中存在一些bug 怀疑是中断引起的程序一直在中断中,不能进入正常任务
[单片机]
你知道STM32F4中的CCM内存该如何使用?
STM32F4 CCM内存 我们知道STM32F4当中有个CCM内存,如图所示,这个内存是挂在D总线上直接和内核相连,因此除了内核之外谁都不能访问,那么我们怎么将其利用起来呢? 首先,我们可以使用Keil的设置选项,将IRAM2打勾,让编译器选择什么时候使用这个内存。显然,我们还可以将这两个地址修改一下,将IRAM1改为0x10000000,这样,编译器就会优先分配CCM内存。 我们来看看结果,在MAP文件中,表明确实使用了这段内存,但是因为我们使用的内存较少, 还没有用到CCM。 这种自动分配的方式有什么问题呢?这段内存是内核专有的,除了内核任何其它总线都不能访问,这就意味着,一旦编译器将数据分配到CCM中,而同时
[单片机]