stm32介绍和GPIO输出

stm32介绍

在这里插入图片描述
NVIC是配置管理中断,如配置中断优先级
SYsTick主要给操作系统提供定时服务的,可以加入操作系统如F
RCC中系统不会设定时钟,需要自己使能时钟,外设才能工作,目的是降低功耗
AFIO是复用端口,可以完成端口的重定义,和中断端口的配置
EXTI外部中断,当引脚有电平变化时,可以触发中断,让cpu来处理任务
TIM是定时器,通用、基本、高级定时器
ADC模数转换器,可以直接读取IO口的模拟电压值,无需外部连接AD芯片
DMA可以帮助cpu完成大量繁杂等任务
USART是同步或者异步串口
RTC实时时钟可以完成stm32时分秒等操作,可以接外部备用电池,掉电也能正常运行
CRC是一种数据校验的方式,用于判断数据的正确性
PWR电源控制,可以让芯片进入睡眠模式,达到省电的目的
BKP备份寄存器,当系统掉电时仍可由备用电池保持数据
FSMC可用于扩展内存或者配置成其他总线协议

在这里插入图片描述

引脚定义:
小黑点是1号引脚,然后逆时针依次排列
标蓝色是最小系统相关的引脚,标绿色是io口
类型:s代表电源,i代表输入,o代表输出,io代表输入输出,有FT 的代表容忍5v电压,无FT的能容忍3.3v电压,如果没有FT的需要接5V电平,就需要加装电平转换电路

在这里插入图片描述

启动配置:在ppt里

在这里插入图片描述

  • 打开stm32的参考手册,RCC寄存器使能GPIOC的时钟,GPIO是APB2的外设,在那个引脚图片就有的
  • IOPCE:IO端口C时钟使能(因为灯接在PC13)
  • library用来存放库函数
  • stm32f103x_conf.h这个conf文件是用来配置库函数头文件的包含关系的,还有参数检查和参数定义的和两个it结尾的(it.c
    it.h)
  • RCC_APB2PeriphClockCmd————APB2外设时钟控制
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//APB2外设时钟控制(第一个是选择外设,第二个选择新的状态)

配置端口模式:GPIO_Init(第一个是选择哪个GPIO,第二个是参数的结构体) GPIOx可以是(A,G)

GPIO_InitTypeDef GPIO_InitStructure;其中GPIO_InitTypeDef是结构体,GPIO_InitStructure官方给的结构体起的名字

Mode模式,pin端口,speed速度

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//Out_pp通用推免输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

在这里插入图片描述

注释里面的代码没办法跳转了:选中这个字符—按ctrl+f搜索定义的位置

GPIO_SetBits(GPIOC, GPIO_Pin_13);//把指定端口设置为高电平
GPIO_ResetBits(GPIOC, GPIO_Pin_13);//把指定端口设置为低电平

型号
在这里插入图片描述

工程架构

启动文件startup,是程序最基本的文件,用汇编写的。
当stm32上电复位后,程序就会进行复位中断,复位中断做了2个事,第一个调用Systemlnit函数,第二个main函数。也会有其他的中断
Systeammlnit函数就是定义在system_xx.c/.h里

在这里插入图片描述

GPIO

在这里插入图片描述

  1. 数据0是低电平0v,数据1就是高电平3.3v 部分引脚容忍5v,对于输出来说最大就能输出3.3v,因为供电只有3.3v

  2. 哪些端口能容忍5v,stm32引脚定义:带FT能容忍5v,不带FT的只能接入3.3v GPIO输出模式可以模拟通信协议,I2C,SPI等

  3. 每个GPIO外设有16个引脚,编号是从0到15,在每个GPIO内包含着寄存器和驱动器,寄存器是一段特殊的寄存器,内核可以通过APB2总线对寄存器进行读写的,可以完成输出电平和读取电平的功能,寄存器每一位对应一个引脚,其输出寄存器写1,输出高电平,0就是低电平。

  4. STM32是32位的单片机,内部的寄存器都是32位的,但这个端口只有16位,so寄存器只有低16位有对应的端口,高16位没有。

  5. 驱动器用来增加信号的驱动能力

在这里插入图片描述

GPIO位结构
在这里插入图片描述

  • 保护二极管作用:对输入电压限制
  • 上拉电阻VDD和下拉电阻VSS:如果上面VDD导通,下面VSS断开就输上拉输入模式,反之亦然,如果两个都断开就是浮空输入模式。上拉输入模式默认为高电平的输入模式,下拉输入默认为低电平的输入模式。
  • TTL施密特触发器作用:对输入电压进行整行。执行逻辑是:如果输入电压大于某阈值,输出为高电平,如果输入电压低于某阈值,输出为低电平。(对于触发器来说高于上限或低于下限,输出才会变化)
  • 模拟输入:ADC
  • 复用功能输入:其他需要读取端口的外设(串口输入引脚)
  • 输出控制部分:是由输出数据寄存器和片上外设控制的
  • 位设置/清除寄存器:可以用来单独操作输出数据寄存器的某一位,而不影响其他位
  • 它这个输出寄存器同时控制16个端口,并且这个寄存器只能整体读写,要想单独控制其中某一个端口而不被其他端口影响的话,特殊的操作方式:第一种方式是先读出寄存器,用按位与和按位或的方式更改某一位,最后将更改后的数据写回去,在C中就是(&=)和(|=)操作。缺点:麻烦,效率不高
    第二种方式是通过操作位设置和清除寄存器,对某一位进行置1的操作,在位设置寄存器的对应写1即可,剩下的位写0保持不变。
  • 如果想对某一位清0的操作,就在清除寄存器的对应写1即可。
  • 第三种操作方式:读写STM32中的“”位带“”区域,与51的位寻址查不多。在STM32中有专门分配的一段地址区域,这段映射了RAM和外设寄存器所有的位,读写这段地址中的数据,相当于读写所映射位置的某一位,这就是位带操作的方式。
  • 两个MOS管:上面是P-MOS,下面是N-MOS管,这个相当于电子开关,信号来控制开关的导通和关闭,开关负责将IO口接到VDD或VSS。可以选择推免、开漏、关闭三种输出方式。
  • 推挽输出: 在该结构中输入高电平时,上方的P-MOS导通,下方的N-MOS截止,对外输出高电平 。
    而在该结构中输入低电平时,N-MOS管导通,P-MOS截止,对外输出低电平。
    当引脚高低电平切换时,两个管子轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。推挽输出的低电平为0伏,高电平为3.3伏。
  • 开漏输出:
    在开漏输出模式时,上方的P-MOS管始终处于截止状态。当输入低电平时,P-MOS管截止,N-MOS管导通,对外输出低电平。P-MOS是无效的,只有N-MOS在工作。
    若控制输入为高电平,则P-MOS管关闭,N-MOS管处于截止状态,所以引脚既不输出高电平,也不输出低电平,为高阻态。如需要输出高电平(5V),必须在外部接一个上拉电阻。
  • 它具有“线与”特性。也就是说,若有很多个开漏模式引脚连接到一起时,只有当所有引脚都输出高阻态,才由上拉电阻提供高电平,此高电平的电压为外部上拉电阻所接的电源的电压。若其中一个引脚为低电平,那线路就相当于短路接地,使得整条线路都为低电平,0伏。
  • 关闭状态:当引脚为输入模式的时候,N-MOS和P-MOS管都无效,也就是输出关闭,端口的电平由外部信号来控制。

GPIO模式
在这里插入图片描述
注:在使用浮空输入时端口一定要接上一个连续的驱动电源,不能出现悬空的状态。

浮空/上拉/下拉输入
在这里插入图片描述

模拟输入
在这里插入图片描述
注:输出断开,输入的施密特触发器也是关闭状态

开漏/推挽输出

在这里插入图片描述
注:输出是由输出寄存器控制的,P-MOS无效就是开漏输出,如P-MOS何N-MOS都有效就是推挽输出。

  • 在输出模式下,输入模式也是有效的:因为一个端口只能有一个输出,但可以有多个输入。

复用开漏/推挽输出

在这里插入图片描述
片上外设:iic,TIM定时器,EXTI中断等

GPIO寄存器:
端口配置低寄存器(GPIOx_CRL) (x=A…E)
端口配置高寄存器(GPIOx_CRH) (x=A…E)
端口输入数据寄存器(GPIOx_IDR) (x=A…E)
端口输出数据寄存器(GPIOx_ODR) (x=A…E)
端口位设置/清除寄存器(GPIOx_BSRR) (x=A…E)
端口位清除寄存器(GPIOx_BRR) (x=A…E)
端口配置锁定寄存器(GPIOx_LCKR) (x=A…E)

STM32外部设备和电路

LED:发光二极管,正向通电点亮,反向通电不亮
有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。
无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值