文章目录

  • IO 配置常用的 8 个寄存器
    • MODER
    • OTYPER
    • OSPEEDR
    • PUPDR
    • ODR
    • BSRR
    • IDR
    • AFRH & AFRL
  • 串口通信用到的寄存器
    • 外设时钟使能寄存器APB2ENR
    • 串口波特率设置寄存器USART_BRR
    • 串口控制寄存器USART_CR1~3
  • DMA(直接存储器)相关寄存器
    • DMA中断状态寄存器DMA_LISR/DMA_HISR
    • DMA 中断标志清除寄存器DMA_LIFCR /DMA_HIFCR
    • DMA 数据流 x 配置寄存器DMA_SxCR(x=0~7)
    • 数据流 x 数据项数寄存器(DMA_SxNDTR)
    • 数据流 x 的外设地址寄存器(DMA_SxPAR)
    • 数据流 x 的存储器地址寄存器

IO 配置常用的 8 个寄存器

MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR 、AFRH 和 AFRL。

MODER

  MODER 寄存器,该寄存器是 GPIO 端口模式控制寄存器,用于控制 GPIOx(STM32F7 最多有 9 组 IO,分别用大写字母表示,即 x=A/B/C/D/E/F/G/H/I,下同)的工作模式,

OTYPER

 OTYPER 寄存器,该寄存器用于控制 GPIOx 的输出类型,该寄存器仅用于输出模式,在输入模式(MODER[1:0]=00/11 时)下不起作用。该寄存器低 16 位有效,每一个位控制一个 IO 口。设置为 0 是推挽输出,设置为 1 是开漏输出。复位后,该寄存器值均为 0,也就是在输出模式下 IO 口默认为推挽输出。

OSPEEDR

 OSPEEDR 寄存器,该寄存器用于控制 GPIOx 的输出速度,该寄存器也仅用于输出模式,在输入模式(MODER[1:0]=00/11 时)下不起作用。该寄存器每 2 个位控制一个 IO 口,复位后,该寄存器值一般为 0。

PUPDR

PUPDR寄存器,该寄存器用于控制 GPIOx 的上拉/下拉,该寄存器每 2 个位控制一个 IO 口,用于设置上下拉,STM32F1 是通过 ODR寄存器控制上下拉的,而 STM32F7 则由单独的寄存器PUPDR控制上下拉,使用起来更加灵活。复位后,该寄存器值一般为 0。

ODR

 ODR 寄存器,该寄存器用于控制 GPIOx 的输出电平,该寄存器用于设置某个 IO 输出低电平(ODRy=0)还是高电平(ODRy=1),该寄存器也仅在输出模式下有效,在输入模式(MODER[1:0]=00/11 时)下不起作用。

BSRR

 寄存器 BSRR,它叫置位/复位(置1/清零)寄存器。该寄存器和 ODR寄存器具有类似的作用,都可以用来设置 GPIO 端口的输出位是 1 还是 0。

IDR

IDR 寄存器,该寄存器用于读取 GPIOx 的输入数据,该寄存器用于读取某个 IO 的电平,如果对应的位为 0(IDRy=0),则说明该 IO 输入的是低电平,如果是 1(IDRy=1),则表示输入的是高电平。

AFRH & AFRL

 AFRH & AFRL这两个寄存器是用来设置 IO 口的复用功能的

串口通信用到的寄存器

外设时钟使能寄存器APB2ENR

 串口1在APB2ENR 寄存器的第 4 位,串口6也在APB2ENR 寄存器中

串口波特率设置寄存器USART_BRR

 每个串口都有一个自己独立的波特率寄存器 USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的。

串口控制寄存器USART_CR1~3

STM32F767 的每个串口都有 3 个控制寄存器 USART_CR1~3,串口的很多
配置都是通过这 3 个寄存器来设置的。

DMA(直接存储器)相关寄存器

DMA中断状态寄存器DMA_LISR/DMA_HISR

DMA_LISR 和 DMA_HISR,每个寄存器管理 4 数据流(总共 8 个),DMA_LISR 寄存器用于管理数据流 0~3,而 DMA_HISR 用于管理数据流 4~7。这两个寄存器各位描述都完全一模一样,只是管理的数据流不一样。通过这两个寄存器可以获取数据的传输状态
如果开启了 DMA_LISR 中这些位对应的中断,则在达到条件后就会跳到中断服务函数里面去,即使没开启,我们也可以通过查询这些位来获得当前 DMA 传输的状态。这里我们常用的是 TCIFx位,即数据流 x 的 DMA 传输完成与否标志。注意此寄存器为只读寄存器,所以在这些位被置位之后,只能通过其他的操作来清除。DMA_HISR 寄存器各位描述通 DMA_LISR 寄存器各位描述完全一样,只是对应数据流 4~7.

DMA 中断标志清除寄存器DMA_LIFCR /DMA_HIFCR

DMA_LIFCR /DMA_HIFCR,同样是每个寄存器控制 4 个数据流,DMA_LIFCR 寄存器用于管理数据流 0~3,而 DMA_ HIFCR 用于管理数据流 4~7。DMA_LIFCR 的各位就是用来清除 DMA_LISR 的对应位的,通过写 1 清除。在 DMA_LISR 被置位后,我们必须通过向该位寄存器对应的位写入 1 来清除。DMA_HIFCR 的使用同 DMA_LIFCR 类似。

DMA 数据流 x 配置寄存器DMA_SxCR(x=0~7)

该寄存器控制着 DMA 的很多相关信息,包括数据宽度、外设及存储器的宽度、优先级、增量模式、传输方向、中断允许、使能等都是通过该寄存器来设置的。所以 DMA_ SxCR 是 DMA 传输的核心控制寄存器。

数据流 x 数据项数寄存器(DMA_SxNDTR)

第四个是 DMA 数据流 x 数据项数寄存器(DMA_SxNDTR)。这个寄存器控制 DMA 数据流 x 的每次传输所要传输的数据量。其设置范围为 0~65535。并且该寄存器的值会随着传输的进行而减少,当该寄存器的值为 0 的时候就代表此次数据传输已经全部发送完成了。所以可以通过这个寄存器的值来知道当前 DMA 传输的进度。特别注意,这里是数据项数目,而不是指的字节数。比如设置数据位宽为 16 位,那么传输一次(一个项)就是 2 个字节。

数据流 x 的外设地址寄存器(DMA_SxPAR)

该寄存器用来存储 STM32F767 外设的地址,比如我们使用串口 1,那么该寄存器必须写入 0x40011028(其实就是&USART1_TDR)。如果使用其他外设,就修改成相应外设的地址就行了。

数据流 x 的存储器地址寄存器

由于 STM32F767 的 DMA 支持双缓存,所以存储器地址寄存器有两个:DMA_SxM0AR 和 DMA_SxM1AR,其中 DMA_SxM1AR 仅在双缓冲模式下才有效。

STM32F767--->寄存器相关推荐

  1. stm32f767中文手册_ALIENTEK 阿波罗 STM32F767 开发板资料连载第五章 SYSTEM 文件夹

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第五章 SYSTEM 文 ...

  2. cc2530定时器和捕获比较_ALIENTEK 阿波罗 STM32F767 开发板资料连载十四章 输入捕获实验...

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 http://weixi ...

  3. STM32-GPIO学习-跑马灯实验和按键实验-寄存器版本和HAL库版本

    一.stm32跑马灯实验 a.GPIO general purpose input output 通用输入输出端口,可以做输入也可做输出,GPIO端口可通过程序配置成输入或输出. STM32FXXXI ...

  4. fastreport masterdata每页都显示_ALIENTEK 阿波罗 STM32F767 开发板资料连载十六章 OLED 显示实验...

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 http://weixi ...

  5. STM32F767 QUADSPI 的基本用法

    #转载:本文介绍 STM32F767 QUADSPI 的基本用法. 开发环境 硬件环境 电脑:Windows 10 Home x64 Apollo STM32F767 开发板 (ST-LINK V2 ...

  6. STM32F767多通道ADC采集+DMA传输

    文章目录 一.ADC简介 1.ADC采样频率 2.ADC转换时间 3.ADC寄存器 4.ADC引脚与外部通道对应关系 二.DMA简介 三.代码配置 1.ADC.DMA初始化配置 2.adc.h文件的配 ...

  7. STM32F767 Timer定时器与Usart串口综合实训

    基于B站小蜜蜂笔记!本文利用STM32F767开发板实现该实训! 题目要求: 利用STM32应用开发,完成以下功能. 1.开机后,LED0和LED1依次点亮,然后熄灭,进行灯光检测. 2.系统通过串口 ...

  8. STM32F767芯片在使用中的注意点(一)

    1.STM32F767的ADC最大工作频率是36Mhz,而 ADC 时钟(ADCCLK)来自 APB2,APB2 频率一般是 108Mhz,我们设置 ADCPRE=01,即4 分频,这样得到 ADCC ...

  9. STM32F767/429-CAN通信实验

    CAN 简介 特点 CAN协议进行方法:帧 数据帧 基本构成 各段简介 CAN的位时序 CAN协议仲裁功能的实现 bxCAN 的主要特点 CAN 发送流程 CAN 接收流程 寄存器 主控制寄存器(CA ...

最新文章

  1. ubuntu python版本切换_ubuntu18.04 python版本切换
  2. 基于工程经验的『RESTful接口设计规范』
  3. Effective Java之用EnumSet代替位域(三十二)
  4. JS中深浅拷贝 函数封装代码
  5. 突击计划——求数列之和
  6. IntelliCAD 2009 Pro Plus v6.4.23.2 1CD
  7. 华为手机word插件加载失败_word加载项启动失败
  8. [渝粤教育] 西南科技大学 英语泛读 在线考试复习资料
  9. 【个人亲历】上海市人才引进落户最详细的流程记录说明
  10. 狗是人类最忠诚的伙伴,当狗遇到不同的人会有不同的反应,下面要求编写一个案例模拟狗遇到不同的人时的反应。
  11. 直播继续搅局双11?
  12. python中使用pip提示: Fatal error in launcher: Unable to create process using
  13. Json 解析报错 InvalidCastException: Null object cannot be converted to a value type.
  14. 企业与组织仍然没有实现无纸化的三大原因
  15. linux安装tomcat
  16. 音视频学习之ffmpeg时间戳相关整理(时间基tbr,tbn,tbc)
  17. 助理电子商务师html,助理电子商务师考试HTML相关试题汇总.doc
  18. Webix - JavaScript UI 9.2.0
  19. 进DNF选频道时为什么会蓝屏啊
  20. 自学管理学有哪些书籍值得推荐?

热门文章

  1. JPA 中对象 set 属性时自动保存
  2. JS 运行机制最全面的一次梳理
  3. c++/mfc 播放音乐,视频文件
  4. 为什么神经网络层数越多越好?训练次数与层数的区别与联系
  5. 两轴插补速度怎么给定_如何正确计算及设置DMC1000插补的矢量速度
  6. 费希尔控制器知识讲解
  7. Fedora23安装fcitx拼音输入法
  8. 数学系出身,如何从零到一地开始机器学习
  9. wordpress仿站实战教程:wordpress调用函数记录
  10. 计算机点击应用时总是跳到顶端,电脑开始菜单跑到上面了怎么办 电脑开始菜单错位解决方法【图文】...