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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值