STM32CubeMX生成C代码及时钟树配置(基于stm32f407)

这篇具有很好参考价值的文章主要介绍了STM32CubeMX生成C代码及时钟树配置(基于stm32f407)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32CubeMX初探

前言

近来对于stm32单片机编程中,HAL库逐渐取代标准库成为主流的库。标准库支持的芯片型号有限,而且目前已经停止支持,而HAL库支持所有类型的芯片,可移植性也很高,再加上有神器STM32Cube可以生成工程模板,越来越多的编程开始从使用标准库转到使用HAL库。

点亮第一个LED

stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
新建工程后,在此处输入所用到的芯片型号,此处使用的STM32F407IGT6。
选好芯片型号进入到配置界面后,需要依次进行时钟模块配置、时钟系统配置、GPIO引脚配置、Cortex内核配置,才能生成工程源码。

时钟模块配置

stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
在RCC中选择使用外部晶振作为时钟源,完成对时钟模块的配置。

时钟系统配置

时钟是单片机的脉搏,需要极其重视,在stm32Cube中进行时钟配置实则是针对芯片手册中的时钟数对各个时钟频率、锁相环等进行配置。下面对F4的四个时钟源进行介绍。

时钟源 F407频率要求
HSE(高速外部振荡器) 4~26MHz
LSE(低速外部振荡器) 32.768MHz
HSI(高速内部振荡器)- 16MHz–
LSI(低速内部振荡器) 32KHZ

附一张在正点原子参考的时钟树高清图和STM32Cube中对于时钟的配置。二者对比参考理解更深刻。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言要进行配置首先要理解芯片手册中的时钟树,对于基础的应用来说,只需要理解SYSCLK、AHB、APB1、APB2、RTC时钟的配置即可。
对于芯片手册中的时钟树,可以先看中间对于SYSCLK进行配置的SW,可以看出,SYSCLK的来源有三个,即HSI、HSE以及锁相环的输出,F407主频最高可以达到168Mhz,仅通过HSI或者HSE来作为时钟源很难发挥最大的效能,一般采用锁相环进行倍频来得到高频率的时钟信号作为系统时钟。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
单独看PLL锁相环,输入可以选择HSI和HSE,一般选用HSE。HSE进行M分频后输入到锁相环中,VCO即理解为电压控制震荡,xN即为放大N倍。随后结合cube中的配置进行理解。
上一步中以及完成了对时钟模块的配置,随后在Clock Configuration中结合电路板对外部晶振频率进行配置,同时选择系统时钟使用锁相环输出。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
具体配置如上图,不考虑超频的情况下,可达到F407最大的主频168Mhz。

GPIO引脚配置

完成时钟配置之后,选择LED对应的引脚,此处使用的是PE0。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
选择输出模式。stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
下一步见图,可以设置IO的输出模式,初始电平,建议为每个IO添加Label方便进行辨识。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
此时对点亮一个LED的GPIO配置结束。

Cortex内核配置

stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
在SYS中选择debug的方式,使用SWDIO和SWCLK进行程序下载的选择Serial Wire

工程生成

在Project Manager中进行配置,设置工程名和存储路径,画框的部分需要注意。Structure选择Basic即可,下面的IDE要注意版本对应。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
拉到下面,包的版本需要注意,可能默认的版本与安装的版本不同,可以看自动生成的路径下面包的版本是多少再进行设置。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
在Code Generator中也需要修改默认配置。①处默认是勾选了copy all,这会导致将一些没有用到的库文件生成到工程中,导致工程庞大,编译速度慢,按照如下配置可以只使用用到的文件,工程体积更小。
②处需要进行勾选,勾选后会将.c和.h文件分开存放,方便管理。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言
配置结束后点击右上方的生成工程可以在指定文件夹下生成配置好的工程文件。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言

注意事项

编译器版本

新版本的keil没有版本5的编译器,需要选用版本6。否则会导致编译出错。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言

用户代码位置

我们写的代码要放在生成的工程中留出的对应部分,因为下次更新配置重新配置工程时,不在规定位置的代码会被覆盖掉。
stm32cube时钟树配置,嵌入式,stm32,单片机,c语言文章来源地址https://www.toymoban.com/news/detail-611093.html

到了这里,关于STM32CubeMX生成C代码及时钟树配置(基于stm32f407)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建STM32F407的Freertos系统(基于STM32CubeMX)

           本人长期开发Linux、Windows上应用软件,一直以来MCU开发有所接触,但较少(最近项目需要,小公司么,都得会,被逼的),好在有STM32CubeMX这样工具,貌似就是我想要的工具。         本次demo目标立下:         1. 搭建或移植FreeRTOS到STM32上,毕竟对于长期在Linux环境

    2024年02月10日
    浏览(63)
  • STM32——STM32F103时钟解析(正点原子资料+HAL库代码分析)

    上次写系统时钟解析的时候说出一篇103的时钟解析,我就整理HAL库开发的正点的资料,给小白梳理,我也是小白,不做权威使用。 在 STM32 中,有五个时钟源,为 HSI、HSE、LSI、LSE、PLL。从时钟频率来分可以分为高速时钟源和低速时钟源,在这 5 个中 HIS,HSE 以及 PLL 是高速时钟

    2024年02月19日
    浏览(49)
  • STM32F103利用CubeMX配置开启定时中断

    1、外部晶振8MHz,下载方式SWD模式,需求配置定时器1,产生每100ms一次中断 新建工程、配置晶振、选择下载方式等略 2、查阅资料,STM32F103的时钟树分配  3、配置CubeMX的时钟树  4、配置定时器-开启定时中断  5、配置定时时间 ( 定时周期 = (Prescaler + 1) × (Period + 1) ÷ 时钟频率

    2024年02月15日
    浏览(48)
  • 基于STM32F1以及STM32CubeMx实现串口中断通讯(字符串发送与接收)

    首先选好自己的板子并打开软件设置,本实验基于STM32F103ZET6实现,打开软件后如图: 打开外部高速晶振,然后接着配置时钟: 将时钟频率修改为72MHz,接着设置接线方式为SW 接下来需要使用串口中断通讯,打开我们的串口设置并打开中断 这里波特率设置为115200,数据位为

    2024年02月09日
    浏览(47)
  • 利用是stm32cubemx实现双极性spwm调制 基于stm32f407vet6

    【双极性SPWM调制讲解以及基于stm32的代码生成-哔哩哔哩】 https://b23.tv/ytFxdkL 双极性spwm调制虽然没有单极性好用,但比单极性要简单易懂一些,以下教程是如何利用stm32实现双极性spwm调制.   •T1,T2不能同时导通,T3,T4也不能同时导通,否则短路烧管子。 •解决方法:T1与T2用高

    2024年02月15日
    浏览(53)
  • Keil STM32F103系统时钟配置过程(标准库)

    平时我在做STM32项目的时候,一般是用别人的工程包,有时用别人的工程包的系统时钟不对,需要检查,下面是系统时钟配置过程。 1:在工程找到文件startup_stm32f10x_hd.s并打开,然后找到SystemInit,如下图 2:选择SystemInit,跳转到SystemInit函数,如下图: 3:SystemInit函数如下图:

    2024年02月16日
    浏览(63)
  • STM32F429IGT6使用CubeMX配置外部中断按键

    1、硬件电路 2、设置RCC,选择高速外部时钟HSE,时钟设置为180MHz 3、配置GPIO引脚  4、NVIC配置  PC13相同   5、生成工程配置   6、部分代码 中断回调函数 7、实验现象

    2024年02月13日
    浏览(42)
  • 基于STM32CubeMX和keil采用STM32F407的基本定时器中断实现LED闪烁

    定时器有三种,基本定时器,通用定时器,以及高级定时器。 这篇博客以最简单的基本定时器为例,实现LED的闪烁。 后面两种定时器的用法后面再写。 实现功能: TIM6控制LED每隔0.5s变一次状态。 TIM7控制LED1常量2s后熄灭。 因为都是用到LED,所以和上一篇基于STM32CubeMX与keil采

    2024年02月04日
    浏览(63)
  • 尝试使用CubeMX做stm32开发之十三:Clock Configuration(时钟树配置)

            参考《STM32中文参考手册_V10》,研究CubeMX中有关时钟树配置。 三种不同的时钟源可被用于驱动系统时钟(SYSCLK): HSI振荡器时钟 HSE振荡器时钟 PLL时钟 时钟源选择对应时钟配置寄存器(RCC_CFGR)中的SW[1:0]位。 三种不同的时钟源可被用于驱动系统时钟​​​​ M

    2024年02月16日
    浏览(52)
  • [STM32] - STM32F407VET6使用STM32CubeMX配置FatFs,以及挂载时返回03错误码问题的解决

    为测试新买的开发板TF卡读写是否正常,使用STM32CubeMX(后简称CubeMX)进行代码构建。生成代码后烧录测试,发现在挂载TF卡时无法成功,返回值为错误3( FR_NOT_READY )。经排查后问题已解决,遂记录配置过程供大家参考,并讲解挂载时返回错误3的解决方式。 ①为了输出TF卡(

    2024年02月22日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包