GPIO库函数:
GPIO初始化:
typedef struct
{
u16 GPIO_Pin; //选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚
GPIOSpeed_TypeDef GPIO_Speed; //10MHz 、2MHz、 50MHz
GPIOMode_TypeDef GPIO_Mode; //输入输出的8种方式
} GPIO_InitTypeDef;
GPIO的缺省初始化值:
GPIO_Pin = GPIO_Pin_All ;
GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Mode = GPIO_Mode_IN_FLOATING
GPIO的输入输出模式:
(1)GPIO_Mode_AIN 模拟输入 应用ADC模拟输入,或者低功耗下省电
(2)GPIO_Mode_IN_FLOATING 浮空输入 浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定
(3)GPIO_Mode_IPD 下拉输入 IO内部上拉电阻输入
(4)GPIO_Mode_IPU 上拉输入 IO内部下拉电阻输入
(5)GPIO_Mode_Out_OD 开漏输出 开漏输出就是不输出电压,低电平时接地,高电平时不接地。如果外接上拉电阻,则在输出高电平时电压会拉到上拉电阻的电源电压。这种方式适合在连接的外设电压比单片机电压低的时候
(6)GPIO_Mode_Out_PP 推挽输出 IO输出0-接 GND, IO输出1 -接 VCC,读输入值是未知的
(7)GPIO_Mode_AF_OD 复用开漏输出 片内外设功能(TX1, MOSI, MISO. SCK. SS)
(8)GPIO_Mode_AF_PP 复用推挽输出 片内外设功能(I2C 的 SCL, SDA)
通常有5种方式使用某个引脚功能,它们的配置方式如下:
1)作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。
2)作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。
3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。
4)作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。
5)作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。
直接由stm32控制电机运动
主要完成工作:
1、配置keil 5 的mdk环境
2、安装st-link 驱动,更新驱动
3、分别运行4种方波程序控制电机运动,通过控制按钮开关或者电位器变化来对电机进行速度以及方向的调控
板子及电机运行中:
4、对“方波无霍尔调速、换向(加电流电压、保护)(3功能键)(电位计调速)”程序进行初步的了解
主要存在的问题:mdk版本问题导致程序用stm32f103rc 为芯片 运行成功,但在配置st-link 以及下载烧录过程中此芯片报错,改用stm32f103rb 为芯片配置选择 128kb速度 则烧录运行成功
关键字:STM32 GPIO 基础配置
引用地址:
【STM32电机方波】记录1——GPIO基础配置
推荐阅读最新更新时间:2024-03-16 16:14
漫谈STM32的GPIO
简介:单片的输入输出不叫GPIO,仅仅是个io,稍微复杂点的就是串口,至于后面那些增强的1t的带da的单片机,都不属于入门学习范围.那些东西都是为了低成本而存在,对学习没有任何作用.只要初学者入门了,所有片内外设都非常简单的搞定.本文是一片基础学习文章.入门者的精神食粮. 理解gpio不仅仅是会配置寄存器,因为好多人根本不知道寄存器如何配置.如果不信的话那回答我这个问题,stm32的io频率到底该配置成多少Mhz? 上面这张图是来自stm32的中文版手册.我对这些模块进行了简单的标注.下面我就从外到内进行分析信号的流向以及每一部分存在/屏蔽的意义. 先看上半部分,就是io的I,input,输入功能.信号从io引脚流入,
[单片机]
stm32 中断串口控制LED灯
#include stm32f10x.h #include usart.h #include led.h #include stdio.h /*********************************************************************** ***********************************************************************/ void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); //void d
[单片机]
基于STM32定时器实现毫秒延时函数
STM32定时器包含基本定时器、通用定时器和高级定时器,其中TIM6和TIM7是STM32当中的基本定时器,作为初学者,先从最基本的学起最容易,下面我们用这个定时器实现毫秒延时函数来入门STM32定时器的应用。 学习单片机,就是学习使用它的寄存器。即便你用库函数,寄存器也是必须要学习的。 TIM6 TIM7的寄存器如下所示: 先略览一下寄存器,CR1和CR1是控制寄存器,SR是状态寄存器,ARR就是溢出值寄存器,CNT就是计数器的当前值,PSC是预分频寄存器。预分频寄存器?听的傻眼了吧,前面几个个寄存器听的还能理解,一听到预分频寄存器,好像不知道是干嘛用的。瑞生来给你解释一下吧,你可以给预分频寄存器里面写一个从0~6
[单片机]
STM32驱动W24Q16
简介:W24Q16是FLASH存储芯片,容量为16Mbit。注意是16Mbit,其实就是2M-byte。W24Q16采用的是spi总线。但是这个spi总线有三种方式。 首先列下该芯片的管脚图: 第一种是标准spi(Standard)。即传统的四根线,CS片选信号,clk时钟信号,DI数据输入信号,DO数据输出信号。这个时候,WP和HOLD有自己的功能。 第二种是双SPI模式(Dual SPI)。这个时候还是用到4根线,CS片选信号,clk时钟信号,不过这里的DI和DO变成双向的IO线了,即用到了IO1和IO2。这个时候,WP和HOLD还是有自己的功能。 第三种是正交SPI模式(Quad SPI,这里暂且这么翻
[单片机]
STM32——按键
一、GPIO工作模式 1、当I/O端口配置为输入时: 输出缓冲器被禁止 施密特触发输入被激活 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器 对输入数据寄存器的读访问可得到I/O状态 2、当I/O端口被配置为输出时: 输出缓冲器被激活 ─ 开漏模式:输出寄存器上的’0’激活 N-MOS,而输出寄存器上的’1’将端口置于高阻状态(P-MOS 从不被激活)。 ─ 推挽模式:输出寄存器上的’0’激活 N-MOS,而输出寄存器上的’1’将激活 P-MOS。 施密特触发输入被激活 弱上拉和下拉电阻被禁止 出现在I/O脚上的数据在每个APB2时
[单片机]
【STM32+W5500】20,W5500作为Client客户端
与DNS失败一样,只需要把W5500的默认IP改成和路由器的IP一样就可以互联网通信了 实测收到邮件
[单片机]
展示与STM32生态伙伴的十五年创新成就
展示与STM32生态伙伴的十五年创新成就 2022年STM32中国线上技术周聚焦工业与能源、人工智能与智能出行、智能物联、信息安全与功能安全、生态与创新 在为期五天的线上活动期间,意法半导体和生态系统合作伙伴将为参观者奉上100多个展品,带来30多场在线应用研讨会及现场互动问答 2022年7月15日 - 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;)宣布,值此STM32嵌入式技术诞生十五周年之际, 将于7月18 - 22日举办2022年STM32中国线上技术周。 意法半导体目前已成为全球第一大通用MCU厂商。如今的STM32家族包含1,200多款MCU和
[嵌入式]
开漏输出和推挽输出
概述 在STM32或者GD32中,普通的输出GPIO输出方式主要是开漏输出和推挽输出,下面我们开始讲解这2种模式的区别。 下图是GPIO内部的结构示意图。 在上图中,P-MOS带了一个⚪,说明是低电平导通。 上图是GPIO的示意图,有输入和输出,如果简化为输出,则如下所示。 模拟文件下载 https://download.csdn.net/download/qq_24312945/85250172 推挽输出 推挽输出的内部电路大概是下图这个样子,由一个P-MOS和一个N-MOS组合而成,同一时间只有一个管子能够进行导通。 当输出高电平时候,P-MOS导通,N-MOS截至,此时电源电流入R5。 当输出低电平时
[单片机]