stm32阶段总结笔记一

第一阶段总结笔记,主要对GPIO,串口,时钟,中断,定时器进行总结,方便后续写程序快速查阅,寄存器用来了解库函数具体怎么配置的

一.GPIO

芯片手册
在这里插入图片描述

寄存器

寄存器知识快速复习
1.控制GPIO的有7个寄存器

  • 端口配置寄存器GPIOx_CRLGPIOx_CRH
  • 端口输入数据寄存器GPIOx_IDR
  • 端口输出数据寄存器GPIOx_ODR
  • 端口位设置/清除寄存器GPIOx_BSRR
  • 端口位清除寄存器GPIOx_BRR
  • 端口配置锁定寄存器GPIOx_LCKR

配置寄存器主要是配置端口的工作模式速度,4个位控制一个IO口,用两个32位寄存器控制一组IO口(16个)
输入数据寄存器主要是存放16个IO口输入的数据,低16位有效
输出数据寄存器主要是存放16个IO口输出的数据,低16位有效
位设置/清除寄存器主要是设置每一IO位的输出,如果寄存器值赋为1,高16位是清除为0,低16位设置为1,对应的如果寄存器为0,则对该位无影响。(可以用&和|理解)
位清除寄存器主要是将BSRR的高16位放到低16位,功能不变
配置锁定寄存器:不常用,暂不了解
(具体可查询《STM32中文参考手册》8.2-P113)

2.AFIO复用寄存器

  • 事件控制寄存器AFIO_EVCR
  • 复用重映射和调试I/O寄存器AFIO_MAPR
  • 外部中断配置寄存器AFIO_EXTICRx (x=1,2,3,4)

库函数操作

1.当使用GPIO之前,必须先打开IO时钟(APB2Clock)(IO挂载在APB2底下)
2.如果使用复用功能,必须打开相应的复用外设的时钟

操作函数
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);

必记)3.GPIO的八个工作模式:
输入:输入浮空输入上拉输入下拉模拟输入
输出:开漏输出推挽输出推挽复用开漏复用
对应的库函数定义
GPIO_Mode_IN_FLOATING(输入浮空),GPIO_Mode_IPU(输入上拉)
GPIO_Mode_IPD(输入下拉),GPIO_Mode_AIN(模拟输入)
GPIO_Mode_Out_OD(开漏输出),GPIO_Mode_Out_PP(推挽输出)
GPIO_Mode_AF_PP(推挽复用),GPIO_Mode_AF_OD(开漏复用)

操作函数
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);

4.外设工作模式配置
对于STM32的芯片来说典型的三条AHB\APB1\APB2 时钟线,它们每个总线下都挂载了许多外设,这些外设都需要配置时钟,相应的GPIO的外设还需要进行GPIO的Mode配置:不同外设需求的GPIO类型Mode是不一样的,在使用外设之前一定要查询手册中外设的GPIO配置
《STM32中文参考手册》8.1.11P110):
这里贴出来几个常用的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.重映射功能,一般来说,引脚的第一功能都是GPIO,但有些引脚的第一功能并不是GPIO,如下图
在这里插入图片描述
(表格含义见上)
此时我们就要用到重映射功能,有时重映射不只一个功能,就涉及到了部分重映射&完全重映射

重映射配置步骤

  1. 使能GPIO时钟(重映射过后的IO)
  2. 使能功能外设的时钟(例如串口1)
  3. 使能AFIO时钟,重映射必须使能AFIO时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

部分重映射和完全重映射设置
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
靠第一个参数决定

6.需要开启AFIO时钟的几个情况
在对AFIO三个寄存器进行操作时,需要打开AFIO时钟,
分别是

  • 配置复用重映射
  • 配置外部中断线映射
  • 配置EVENTOUT事件输出

GPIO常用操作库函数
在这里插入图片描述
在这里插入图片描述

二.中断

外部中断

stm32共有20条外部中断线,其与IO口对应关系为
在这里插入图片描述

寄存器

1.外部中断相关寄存器

  • 中断屏蔽寄存器:EXTI_IMR
  • 事件屏蔽寄存器:EXTI_EMR
  • 上升沿触发选择寄存器:EXTI_RTSR
  • 下降沿触发选择寄存器:EXTI_FTSR
  • 软件中断事件寄存器:EXTI_SWIER
  • 挂起寄存器:EXTI_PR

中断屏蔽寄存器主要是屏蔽20条线中某条线上的中断请求,低20位控制。
事件屏蔽寄存器主要是屏蔽20条线中某条线上的事件请求,低20位控制
上升沿触发选择寄存器主要是禁止或允许20条线中的上升沿触发(中断和事件),低20位控制。
下降沿触发选择寄存器主要是禁止或允许20条线中的下降沿触发(中断和事件),低20位控制。
软件中断事件寄存器主要是设置软件中断寄存器的请求位
挂起寄存器主要是标志某条线发生触发请求

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值