IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32硬件底层配置图解 -> 正文阅读

[嵌入式]STM32硬件底层配置图解

时钟配置

时钟树

一般使用外设高速时钟HSE,经过锁相环PLL产生最大72MHz的系统时钟:

?然后,各路外设从系统时钟分频。

可以将系统时钟输出。

时钟流

使用STM32Cube配置的结果:

?时钟配置结果

在KEIL-MDK中看到的结果:

?

GPIO配置

GPIO原理框图

GPIO输入工作原理框图

?说明:

  • 此时输出控制回路是断开的。
  • 输入信号可以配置为上拉或者下拉。

GPIO输入功能配置项

配置项

配置内容

相关寄存器名称

寄存器说明

端口时钟

使能

外设时钟使能

RCC_APB2ENR

端口模式

输入模式

端口x的模式

GPIOx_CR.MODEy

00=输入模式

01=中速输出模式(10MHz)

10=低速输出模式(2MHz)

11=高速输出模式(50MHz)

端口配置

上下拉输入模式

端口x的配置位

GPIOx_CR.CNFy

00=模拟输入模式

01=浮空输入模式

10=上拉/下拉输入模式

11=保留

端口上下拉

上拉或者下拉

端口输出数据寄存器

GPIOx_ODR

0=下拉

1=上位

GPIO锁定

配置完成后锁定

端口配置锁定寄存器

GPIOx_LCKR

GPIO输出工作原理框图

?说明:

  • 用作输出时,输入回路无需断开,可以读取当前的输出状态。
  • 输出控制可以配置为推挽或者开漏。

GPIO输出功能配置项

配置项

配置内容

相关寄存器名称

寄存器说明

端口时钟

使能

外设时钟使能

RCC_APB2ENR

端口模式

输出模式

端口x的模式

GPIOx_CR.MODEy

00=输入模式

01=中速输出模式(10MHz)

10=低速输出模式(2MHz)

11=高速输出模式(50MHz)

端口配置

上下拉输入模式

端口x的配置位

GPIOx_CR.CNFy

00=通用推挽输出模式

01=通用开漏输出模式

10=复用功能推挽输出模式

11=复用功能开漏输出模式

GPIO锁定

配置完成后锁定

端口配置锁定寄存器

GPIOx_LCKR

端口控制

高电平或者低电平

端口输出数据寄存器

GPIOx_ODR

0=输出低

1=输出高

调试过程

可以查看输入状态和输出状态:

项目

相关寄存器名称

输入状态

端口输入数据寄存器GPIOx_IDR

输出状态

端口输出数据寄存器GPIOx_ODR

端口模式选择:

?作为输入时的配置:

?作为输出时的配置:

?

外设的GPIO配置

定时器TIM1/TIM8

?USART

?

?SPI

??

I2C

?

BxCAN

?

ADC端口配置

ADC输入引脚必须配置为模拟输入。

?

?

外部中断输入?

外部中断配置

外部中断原理框图

?

外部中断功能配置项

配置项

配置内容

相关寄存器名称

寄存器说明

端口时钟

使能

外设时钟使能

RCC_APB2ENR

AFIO时钟

使能

外设时钟使能

RCC_APB2ENR

bit0:AFIOEN

GPIO口配置

输入模式

参见6.2节

中断线映射

将GPIO口与中断线映射起来

外部中断配置寄存器

AFIO_EXTICR

0000=PA[x]

0001=PB[x]

……

中断配置

上升沿触发、下降沿触发、中断屏蔽

中断屏蔽EXTI_IMR

上升沿触发选择EXTI_RTSR

下降沿触发选择EXTI_FTSR

NVIC中断优先级

抢占优先级、子优先级

NVIC->IP

NVIC->ISER

调试过程

可以查看:

项目

内容

相关寄存器名称

寄存器说明

中断挂起状态

是否有中断发生

EXTI_PR

0=没有发生触发请求

1=发生了触发请求

PWM输出配置

通过定时器原理框图

?PWM输出原理

?

?

捕获/比较通道的输出部分

死区设置

?可以使用高级定时器中自带的互补输出和死区插入功能:

?

PWM输出配置项

配置项

配置内容

相关寄存器名称

寄存器说明

外设时钟

使能

外设时钟使能

RCC_APB1ENR

RCC_APB2ENR

使能定时器外设时钟

使能端口外设时钟

端口配置

输出模式

参见6.3节

输出口配置为:复用推挽输出

时钟源

选择时钟源

使用内部时钟

分频器

预分频器

预分频器TIMx_PSC

计数器的时钟频率CK_CNT等于f CK_PSC /(PSC[15:0]+1)。

计数模式

向上计数/向下计数/中央对齐计数

控制寄存器

TIMx_CR1.CMS

00=边沿对齐模式(DIR决定向上或向下计数)

01/10/11=中央对齐模式

计数方向

向上/向下计数

控制寄存器

TIMx_CR1.DIR

边沿对齐模式下:

0=向上计数

1=向下计数

中央对齐模式下:硬件控制

计数周期

计数上限

自动重装载寄存器

TIMx_ARR

计数器控制

使能

控制寄存器

TIMx_CR1.CEN

0=关闭计数器

1=使能计数器

工作模式选择

比较输出模式

捕获/比较模式寄存器

TIMx_CCMR1.CC1S

00=通道配置为输出

01/10/11=通道配置为输入

输出比较模式

PWM模式

捕获/比较模式寄存器

TIMx_CCMR1.OC1M

000=冻结

……

110=PWM模式1:CNT<CCR时为有效电平

111=PWM模式2:CNT<CCR时为无效电平

PWM脉宽

输出比较值

捕获/比较寄存器

TIMx_CCRy

当前捕获/比较寄存器参与同计数器TIMx_CNT的比较,并在OCy端口上产生输出信号。

输出极性

有效电平

捕获/比较使能寄存器

TIMx_CCER.CCyP

0=OCy高电平有效

1=OCy低电平有效

输出使能

使能

捕获/比较使能寄存器

TIMx_CCER.CCyE

0=关闭,OCy禁止输出

1=开启,OCy信号输出到对应的输出引脚

标准OCx通道的输出控制位:

?连接到标准 OCx 通道的外部 I/O 引脚状态,取决于 OCx 通道状态和 GPIO 以及 AFIO 寄存器。

调试过程

捕获/比较寄存器:

?

捕获/比较选择:

?

输出比较模式:

?

基本定时器配置

原理框图

?基本定时器配置项

配置项

配置内容

相关寄存器名称

寄存器说明

外设时钟

使能

外设时钟使能

RCC_APB1ENR

bit4=TIM6EN

时钟源

选择时钟源

基本定时器只能使用内部时钟

分频器

预分频器

预分频器TIMx_PSC

计数器的时钟频率CK_CNT等于f CK_PSC /(PSC[15:0]+1)。

计数周期

计数上限

自动重装载寄存器

TIMx_ARR

计数器控制

使能

控制寄存器

TIMx_CR1.CEN

0=关闭计数器

1=使能计数器

定时器中断

使能

DMA/中断使能寄存器

TIMx_DIER.UIE

0=禁止更新中断

1=使能更新中断

NVIC中断

使能及优先级

调试过程

可查看:

项目

内容

相关寄存器名称

寄存器说明

计数值

定时器计数器

TIMx_CNT

状态

更新中断标志(Update interrupt flag)

TIMx_SR.UIF

计数器产生上溢或者下溢

ADC转换配置

ADC原理框图

?ADC转换配置项

配置项

配置内容

相关寄存器名称

寄存器说明

外设时钟

使能

外设时钟使能

RCC_APB2ENR

使能ADC外设时钟

使能端口外设时钟

端口配置

输入模式

参见6.2节

输入口配置为:模拟输入

时钟分频

ADC分频系数

时钟配置寄存器

RCC_CFGR.ADCPRE

ADC时钟最大14M

使用6分频,工作频率为12M

ADC复位

通过时钟复位

外设时钟使能

RCC_APB2ENR.ADC1EN

先使能再禁止

初始化

独立工作模式,转换通道,触发源,数据对齐方式

ADC控制寄存器 1

ADC_CR1

ADC控制寄存器2

ADC_CR2

ADC控制

使能

ADC控制寄存器2

ADC_CR2.ADON

0:关闭ADC转换/校准,并进入断电模式;

1:开启ADC并启动转换。

注:如果在这个寄存器中与ADON一起还有其他位被改变,则转换不被触发。这是为了防止触发错误的转换。

校准

先复位校准,

再开启校准

ADC控制寄存器2

ADC_CR2. RSTCAL

ADC_CR2. CAL

软件置1,硬件清0.

调试过程

可查看:

项目

内容

相关寄存器名称

寄存器说明

转换动作

转换动作是否完成

ADC状态寄存器

ADC_SR

STRT:规则通道开始

JSTRT:注入通道开始

JEOC:注入通道转换结束

EOC: (规则或注入通道)转换结束

AWD:模拟看门狗标志

转换结果

ADC转换后的码值

ADC规则数据寄存器ADC_DR

ADC注入数据寄存器ADC_JDR

配置寄存器项目:

?

ADC转换触发源

可以是外部触发,也可以是软件触发。

ADC1的规则组触发源:ADC 控制寄存器 2,选择启动规则通道组转换的外部事件(ADC_CR2.EXTSEL)

?

选择触发源后,触发源是否要激活,则由 ADC 控制寄存器ADC_CR2 的 EXTTRIG 和 JEXTTRIG 这两位来激活。

如果是选择软件触发,则写入ADC_CR2寄存器中的SWSTART及JSWSTART位开启转换。由软件设置该位以启动转换,转换开始后硬件马上清除此位。

?

ADC转换时间

ADC使用若干个ADC_CLK周期对输入电压采样,采样周期数目可以通过ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位更改。每个通道可以分别用不同的时间采样。

总转换时间如下计算:

T conv = 采样时间+ 12.5个周期

其中Tconv为ADC总转换时间,当ADC_CLK=14Mhz的时候,并设置1.5个周 期的采样时间,则Tcovn=1.5+12.5=14个周期=1us。

端口重映射

端口重映射列表

?端口重映射配置项

配置项

配置内容

相关寄存器名称

寄存器说明

端口重映射

使用非默认端口

复用重映射和调试I/O配置寄存器

AFIO_MAPR

00=没有重映像

01=部分映像

10=部分映像

11=完全映像

或者

0=没有重映像

1=重映像

调试端口重映射配置

?

DMA配置

原理框图

?

DMA1通道

DMA2通道

?

DMA功能配置项

配置项

配置内容

相关寄存器名称

寄存器说明

外设时钟

使能

AHB 外设时钟使能寄存器

RCC_AHBENR.DMA1EN

外设DMA控制

使能

参见各外设的配置

外设基地址

地址

DMA通道x 外设地址寄存器

DMA_CPARx

存储器基地址

地址

DMA 通道x 存储器地址寄存器

DMA_CMARx

数据传输方向

从外设到存储器

从存储器到外设

DMA 通道x 配置寄存器

DMA_CCRx.DIR

0=从外设读

1=从存储器读

传输数量

缓冲区大小

DMA 通道x 传输数量寄存器

DMA_CNDTRx

外设地址递增

外设地址增量模式

DMA 通道x 配置寄存器

DMA_CCRx.PINC

存储器地址递增

存储器地址增量模式

DMA 通道x 配置寄存器

DMA_CCRx.MINC

外设数据宽度

8位/16位/32位

DMA 通道x 配置寄存器

DMA_CCRx.PSIZE

00:8位

01:16位

10:32位

11:保留

存储器数据宽度

8位/16位/32位

DMA 通道x 配置寄存器

DMA_CCRx.MSIZE

同上

循环模式

单次还是循环

DMA 通道x 配置寄存器

DMA_CCRx.CIRC

0:不执行循环操作

1:执行循环操作

通道优先级

优先级

DMA 通道x 配置寄存器

DMA_CCRx.PL

00=低;01=中;

10=高;11=最高

存储器到存储器

是否存储器到存储器模式

DMA 通道x 配置寄存器

DMA_CCRx.MEM2MEM

0:非存储器到存储器模式;

1:启动存储器到存储器模式。

中断配置

传输过半中断、

传输完成中断、

传输错误中断

DMA 通道x配置寄存器

DMA_CCRx.HTIE/TCIE/TEIE

NVIC中断优先级

抢占优先级、子优先级

NVIC->IP

NVIC->ISER

DMA控制

使能

调试过程

可查看:

项目

内容

相关寄存器名称

寄存器说明

中断挂起状态

是否有中断发生

DMA 中断状态寄存器

DMA_ISR

片内看门狗配置

独立看门狗原理图

?

独立看门狗配置项

配置项

配置内容

相关寄存器名称

寄存器说明

LSI时钟

使能

允许访问

允许配置

键寄存器(IWDG_KR)

写入0x5555表示允许访问IWDG_PR和IWDG_RLR寄存器

预分频

分频

预分频寄存器

(IWDG_PR)

000=4分频

……

111=256分频

计数值

重装载的值

重装载寄存器

(IWDG_RLR)

低12位有效。

重装载

把重装载寄存器的值放到计数器中

键寄存器(IWDG_KR)

写入0xAAAA

使能看门狗

使能

键寄存器(IWDG_KR)

写入0xCCCC

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 12:05:12  更:2021-09-01 12:06:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:44:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码