STM32CubeMX的配置相关知识


功能基础配置

RCC

时钟

在STM32中,有5个时钟源,为HSI、HSE、LSI、LSE和PLL。从时钟频率来分可以分为高速时钟源和低速时钟源,在这5个中HIS、HSE以及PLL是高速时钟,LSI和LSE是低速时钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振的方式获取时钟源,其中HSE和LSE是外部时钟源,其他的是内部时钟源。


HSI是高速内部时钟,RC振荡器,频率为8MHz。
HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
LSI是低速内部时钟,RC振荡器,频率为40KHz。独立看门狗的时钟源只能是LSI,同时LSI还可以作为RTC的时钟源。
LSE是低速外部时钟,接频率为32.768KHz的石英晶体。这个主要用于作为内部RTC的时钟源。
PLL为锁相环倍频输出,其时钟输入源可以选择HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。
 

RCC 设置,选择 HSE(外部高速时钟) 为 Crystal/Ceramic Resonator(晶振/陶瓷谐振器)

Clock Configuration

时钟配置

input frequency:外部晶振,要与板子晶振相同

PLL:(锁相环) 的常见应用之一是频率合成器以及音调形成。因此使用锁相环可以生成输入频率的倍数的输出频率。而在微处理器中,它们被用于产生稳定的系统时钟。

Timers

Prescaler为分频系数,Counter Period为自动重装载系数。

定时计数公式如下:

Tout= ((arr+1)*(psc+1))/Tclk;

arr:计数重装值,psc分频数,Tclk系统时钟频率,Tout一个周期的时间。

同时需要点击NVIC Settings勾选中断。
中断服务函数在stm32h7xx_it.c文件里面。

中断:

四个中断与TIM1定时器相关,具体作用如下:

1.TIM1 Break Interrupt(TIM1BRKIRQHandler)和TIM15 Global Interrupt(TIM1BRKTIM15_IRQHandler):
a:TIM1 Break Interrupt 是在定时器发生突发(Break)事件时触发的中断。Break事件可以由外部信号或软件触发,用于终止当前的定时器计数
b:TIM15 Global Interrupt 是TIM1的全局中断,包括更新(Update)事件、触发和复位(Trigger and Commutation)事件以及捕获/比较(Capture/Compare)事件。


2.TIM1 Update Interrupt(TIM1UPIRQHandler)和TIM16 Global Interrupt(TIM1UPTIM16_IRQHandler):
a:TIM1 Update Interrupt 是在定时器更新(Update)事件发生时触发的中断。Update事件在每个计数周期结束时发生,可以被用来实现定时操作
b:TIM16 Global Interrupt 是TIM1的全局中断。


3.TIM1 Trigger and Commutation Interrupt(TIM1TRGCOMIRQHandler)和TIM17 Global Interrupt(TIM1TRGCOMTIM17_IRQHandler):
a:TIM1 Trigger and Commutation Interrupt 是在定时器触发和换相事件发生时触发的中断。这个中断通常在使用定时器作为PWM控制器时触发
b:TIM17 Global Interrupt 是TIM1的全局中断。

4.TIM1 Capture Compare Interrupt(TIM1CCIRQHandler):
TIM1 Capture Compare Interrupt 是在定时器捕获/比较(Capture/Compare)事件发生时触发的中断。这个中断通常用于实现正交编码器、输入捕获和输出比较等功能

根据具体的应用需求和定时器的功能来进行选择。以下是一些建议:

1.如果你需要在定时器的每个计数周期结束时进行某些操作,可以选择使用TIM1 Update Interrupt。
2.如果你需要实现PWM控制器,可以选择使用TIM1 Trigger and Commutation Interrupt。
3.如果你需要进行输入捕获或输出比较等功能,可以选择使用TIM1 Capture Compare Interrupt。
4.TIM1 Break Interrupt在一些特定的应用场景中使用,比如在需要终止当前计数或中断操作的情况下。

1MS定时计数:

PrescalerCounter Period
F1037200-110-1
F40716800-110-1

   STM32F407 的定时器除了 TIM6 和 TIM7,其他的定时器都可以用来产生 PWM 输出。其 中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产 生多达 4 路的 PWM 输出。

在这里插入图片描述

在STM32微控制器上,定时器的定时时间可以通过以下公式计算得出:

定时周期 = (预分频系数 +1) × (计数周期+1 ) / APB时钟频率

为什么加一?

这是因为预分频系数和计数周期都是从0开始计数的,所以在计算定时周期时需要将它们加1。

我们可以把公式简化一下,因为我们知道频率是时间的倒数,我们将公式两边取到数,所以我们可以把公式写成这样子:

频率 = APB时钟频率/(预分频系数 +1)/ (计数周期+1 )

例如,假设希望使用定时器实现1毫秒的定时,且APB时钟频率为72 MHz,可以按照以下步骤进行设置:
1000 = 72000000 / (预分频系数 +1) / (计数周期+1 )
这里1000也就是1毫秒的倒数啦
而 (预分频系数 +1) 和 (计数周期+1 ) 可以分别取 72 和 1000
所以我们得到 预分频系数 = 71, 计数周期 = 999

其中:

预分频系数(Prescaler):用于将定时器的时钟频率分频,以降低计数速度。可以通过设置TIMx_PSC寄存器来配置预分频系数。预分频系数的范围根据具体的定时器型号而定,一般为16位或32位。

计数周期(Counter Period):定时器的计数器从0开始计数,通过设置TIMx_ARR寄存器来配置计数周期的值。计数周期的范围由定时器的位数决定,例如16位定时器的计数周期范围为0到65535。

APB时钟频率:STM32微控制器的主总线时钟频率。它由系统时钟(SYSCLK)通过预分频器分频得到。可以通过RCC寄存器配置APB时钟频率。不同型号的STM32微控制器可能有不同的APB时钟频率。
 

IIC

SPI

片选引脚。

CAN

配置CAN相关参数,波特率设定为500K,时钟频率为42M,
波特率计算公式:42M/21/(1+2+1)=500K。

CAN波特率设置:

42MHz(APB1)PrescalerT2T1
1MHz714
500KHz2121
500KHz729
250KHz2116

36MHz(APB1)PrescalerT2T1
300KHz813
500KHz853

DMA

内存赋值DMA;

串口DMA;

ETH

配置项含义:

Auto Negotiation(自适应功能): 选择 Enabled ,一般选择使能自适应功能,系统会自动寻找最优工作方式,包括选择 10MBit/s 或者 100MBit/s 的以太网速度以及全双工模式或半双工模式。LAN8720A支持自适应功能
Speed(以太网速度): 可选 10MBit/s 或 100MBit/s,它设定 ETH_MACCR 寄存器的 FES 位的值,一般设置 100MBit/s,但在使能自适应功能之后该位设置无效。
Duplex Mode(以太网工作模式): 可选全双工模式或半双工模式,它设定 ETH_MACCR 寄存器 DM 位的值。一般选择全双工模式,在使能了自适应功能后该成员设置无效。


Rx Mode(接收模式): 选择 Polling Mode 轮询方法。ST 官方例程文件包含了中断引脚的相关配置,主要用于指示接收到以太网帧,我们这里不需要使用。
TX IP Header Checksum Computation(发送数据校验和): 选择 By hardware 使能发送数据硬件校验和。这个需要硬件支持,STM32F4xx 控制器是支持的。
 

PHY special control/status register Offset(特殊控制/状态寄存器): 按照芯片手册填写,0x**
PHY Speed mask(以太网速度状态位): 按照芯片手册填写,0x****
PHY Speed mask(以太网工作模式状态位): 按照芯片手册填写,0x****
 

LwIP:

  • LWIP_DHCP(DHCP Module): 选择 Enabled。如果使用开发板连接带 DHCP 服务功能的路由器,可以使能。否则开发板直接连接电脑,电脑是没办法提供 DHCP 服务功能的。
  • LWIP_ICMP(ICMP Module Activation)控制报文协议: 选择 Enabled。主要用于网络的调试与维护,ping 的时候用。
  • LWIP_IGMP(IGMP Module)互联网组管理协议: 选择 Disabled。可以实现多播数据的接收。
  • LWIP_DNS(DNS Module)域名解析: 选择 Disabled。通过域名解析用户就可以在知道服务器域名的情况下,获得该服务器的 IP 地址。
  • LWIP_UDP(UDP Module)用户数据报协议: 选择 Enabled。看需求,一般选择用 TCP 协议。
  • MEMP_NUM_UDP_PCB(Number of UDP Connections): UDP协议控制块数量,决定 UDP 协议控制块需要的 POOL 资源。
  • LWIP_TCP(TCP Module)传输控制协议: 选择 Enabled。
  • MEMP_NUM_TCP_PCB(Number of TDP Connections): 同时活动的TCP连接数。

  • MEM_SIZE(Heap Memory Size): 默认 1600 Byte(s)。堆内存的大小。如果应用程序将发送很多需要复制的数据应该设置得大一点。
  • MEMP_NUM_PBUF(Number of Memory Pool struct Pbufs): 默认 16。memp 结构的 pbuf 数量,如果应用从 ROM 或者静态存储区发送大量数据时,这个值应该设置大一点。
  • MEMP_NUM_RAW_PCB(Number of Raw Protocol Control Blocks): 默认 4。 原始连接(就是应用程不经过传输层直接到IP层获取数据)PCB 的数目,该项依赖 LWIP_RAW 项的开启。
  • MEMP_NUM_TCP_PCB(Number of Listening TCP Connections): 默认 8。 同时建立激活的 TCP 连接的数目(要求参数 LWIP_TCP 使能)。
  • MEMP_NUM_TCP_SEG(Number of TCP Segments simultaneously queued): 默认 16。 最多同时在队列的 TCP_SEG 的数目。

PBUF_POOL_SIZE(Number of Buffers in the Pbuf Pool): 默认 16。 内存池大小。
PBUF_POOL_BUFSIZE(Size of each pbuf in the pbuf pool): 默认 592 Byte(s)。 每个 pbuf 内存池大小。
 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蛋蛋的学习记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值