怎样将STM32F4的外接晶振从8MHz改为25MHz而不改变系统时钟

怎样将STM32F4的外接晶振从8MHz改为25MHz而不改变系统时钟

当我们更改STM32的外部输入时钟晶振的频率时,程序里面应该怎样进行相应的修改??
现在以正点原子的开发板和程序为例,进行讲解。
正点原子的开发板外部晶振接入为8MHz,怎样将其修改为25MHz?

在这里插入图片描述

图1

由图1可知,当系统时钟来源为HSE时,系统时钟计算公式为:
f_sysclk=((f_hse/M) * N)/P=(f_hse * N)/(M * P)

以STM32F407为例,系统运行时钟为168MHz。

系统接入晶振8MHz时: f_sysclk=(8MHz * 336)/(8 * 2)=168MHz
系统接入晶振25MHz后要想系统时钟不变,最简便的办法将
#define PLL_M 8 改为 #define PLL_M 25
则系统时钟为: f_sysclk=(25MHz * 336)/(25 * 2)=168MHz

在代码中修改时与修改系统时钟相关的文件有:stm32f4xx.h 和 system_stm32f4xx.

修改步骤:

1. 在stm32f4xx.h需要根据芯片选型将图2中标注部分8000000改为图3中的25000000。
在这里插入图片描述

图2

在这里插入图片描述

图3

2. 在system_stm32f4xx.c需要将图4中标注部分的PLL_M 从8改为图5中的25。
在这里插入图片描述

图4

在这里插入图片描述

图5

注: 当芯片换为STM32F429xx等其他芯片时,系统时钟的修改也可按照这样的步骤操作。

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Freemodbus是一个开源的Modbus通信协议库,可以通过串行通信和以太网通信实现Modbus协议的传输。正点原子f407是一款基于ARM Cortex-M4内核的开发板,支持多种外设和通信接口。 使用Freemodbus库在正点原子f407上实现Modbus通信主要需要以下步骤: 1. 在正点原子f407上安装相应的开发环境,如Keil或者IAR。 2. 下载并配置Freemodbus库。可以从官方网站或者Github上获取最新的库文件,将其加入到项目中。 3. 在开发环境中创建一个新的项目,添加所需的库文件,并进行必要的设置,如选择正确的芯片型号、配置时钟和中断等。 4. 在项目中实现Modbus从机或主机的功能。根据需求,可以根据用户手册或者代码示例进行相应的配置和编程。 5. 对于从机功能,可以设置寄存器、线圈和其他Modbus数据。需要根据Modbus协议规范来实现相应的数据传输。 6. 对于主机功能,可以发送相应的请求和命令来读取或写入从机的数据。同样需要按照Modbus协议规范来进行相应的设置和编程。 7. 进行编译、下载和调试操作。在开发环境中编译并下载程序到正点原子f407开发板上,并进行调试和测试。 通过以上步骤,可以在正点原子f407开发板上成功实现Freemodbus库的功能,实现Modbus通信。 ### 回答2: freemodbus 正点原子f407 是一种免费的Modbus通信协议栈,被广泛应用于正点原子f407开发板上。正点原子f407是一款基于STM32F407的开发板,具有强大的处理能力和丰富的外设资源,适合用于物联网和工业应用等领域。 freemodbus 是一个开源的Modbus通信协议栈,它实现了Modbus RTU和Modbus TCP两种通信方式,并提供了丰富的函数库和接口,便于用户在嵌入式系统中快速开发和实现Modbus通信功能。 正点原子f407开发板作为一个硬件平台,可以通过freemodbus 协议栈轻松实现与其他Modbus设备的数据交换。通过正点原子f407的串口或以太网接口,可以实现Modbus RTU或Modbus TCP通信。用户只需根据自己的需求选择对应的通信方式,并使用freemodbus提供的函数和接口进行数据读写操作即可。 使用freemodbus 正点原子f407,可以方便地实现数据的采集、监控和控制等功能。通过读取其他Modbus设备的数据,可以实时监测设备状态,并根据需要进行控制操作。同时,正点原子f407的丰富的外设资源,如ADC、PWM等,可以与Modbus设备进行数据交互,实现多种应用场景的需求。 总之,freemodbus 正点原子f407提供了一种简单、灵活且免费的Modbus通信解决方案。它使得在正点原子f407开发板上实现Modbus通信变得简单、高效,为物联网和工业应用等领域的开发者提供了一个强大的工具。 ### 回答3: freemodbus是一个开源的Modbus通信协议栈,用于在微控制器和其他设备之间实现Modbus通信。正点原子f407是一款基于STM32F407芯片的开发板。 在正点原子f407上使用freemodbus,首先需要将freemodbus的代码集成到正点原子f407的开发环境中。可以通过下载freemodbus代码库并将其添加到正点原子f407的项目中。接下来,在代码中进行配置,以便适配正点原子f407的硬件特性和Modbus通信需求。 一般来说,freemodbus可以通过串口、以太网或其他通信方式与其他设备进行通信。需要根据具体需求,在代码中进行相关的配置和初始化,以确保freemodbus可以正常工作。设置好通信参数后,正点原子f407可以作为Modbus的主机或从机参与通信。 作为Modbus的主机,正点原子f407可以发送请求命令给其他从机设备,并接收和处理从机的响应数据。作为Modbus的从机,正点原子f407可以接收来自主机的请求,并进行相应的数据读写操作。 通过配置正点原子f407的GPIO引脚和串口或以太网的通信参数,可以实现与其他Modbus设备之间的数据交换。在代码中,可以使用freemodbus提供的API函数,例如读取/写入保持寄存器、读取/写入输入寄存器等,进行数据的读写操作。 总之,通过集成和配置freemodbus,正点原子f407可以实现与其他设备之间的Modbus通信,使其具备了Modbus通信协议的功能和特性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值