你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F0系列之使用STM32CubeMX点亮第一个LED

[复制链接]
STMCU小助手 发布时间:2022-8-25 21:24
一、新建工程
使用STM32CubeMX新建一个工程,打开STM32CubeMX,点击创建一个工程

20201226204727819.png

点击搜索STM32F103ZE,选中需要的封装,点击开始创建
20201226205019670.png

我们可以先将工程保存一下,以免丢失,点击【File】->【Save Project】

2020122620531186.png

工程新建好之后会直接进入【Pinout 】选项卡,这个时候界面会展示芯片完整引脚图,在引脚图中,我们可以对引脚功能进行配置。黄色的引脚主要是一些电源和 GND 引脚,如果某个引脚已经被使用,那么会显示为绿色。

20201226205553603.png

二、配置时钟源(RCC设置)
对STM32 芯片而言,RCC 配置的重要性不言而喻。在 STM32CubeMX 中,RCC 相关设置却非常简单,因为它把时钟系统独立出来配置。在操作界面,依次点击选项卡Pinout->Peripherals->RCC 便可进入RCC 配置栏,我们只使用到 HSE,所以我们设置选项 High Speed Clock(HSE)的值为Crystal/Ceramic Resonator(使用晶振/陶瓷振荡器)即可。操作步骤如下图所示:

20201226205858939.png

从上图还可以看出,在我们打开了HSE 之后,右边的引脚图中,相应的引脚会由灰色变为绿色,表示该引脚已经被使用。
接下来点击【Clock Configuration】开始配置系统时钟树。

20201226210157926.png

我们把系统时钟配置分为七个步骤,分别用标号①~⑦表示,详细过程为:
①时钟源参数设置:HSE 或者HSI 配置。这里我们选择HSE 为时钟源,所以我们之前必须在RCC 配置中我们开启HSE。
②时钟源选择:HSE还是HSI。这里我们配置选择器选择 HSE 即可。
③主PLL 倍频系数配置。倍频系数我们设置为x9。
④系统时钟时钟源选择:PLL,HSI 还是HSE。这里毫无疑问,我们选择 PLL,选择器选择PLLCLK 即可。
⑤经过上面配置以后此时 SYSCLK=72Mhz。
经过上面的 7 个步骤,就会生成标准的 72MHz 系统时钟。接下来我们只需要依次配置AHB,Systick,APB1 和APB2 的分频系数,我们都配置为 1 即可。配置完成之后,那么 HCLK=72MHZ,Systick=72MHz,PCLK1=36MHz, PCLK2=72MHz 。

20201226211139506.png

三、GPIO引脚功能设置
这里我们回到STM32CubeMX 的Pinout 选项,可以通过搜索栏输入PB5 即可找到PB5在引脚图中的位置如下图所示,然后点击PB5,在弹出的下拉菜单中,选择 IO 口的功能为GPIO_Output。(PB5接入了LED0)

20201226213826692.png

四、生成工程源码
点击菜单【Project Manager】

20201226214751694.png

【Toolchain/IDE】选择Makefile

2020122621422641.png

按个人喜好,我这里选LL库

20201226214715876.png

然后点击【GENERATE CODE】即可生成源码

20201226214024150.png

五、配置VSCode
使用VSCode打开工程,【文件】->【打开文件夹】,选择生成工程的文件夹

20201226215813401.png

打开main.c如下所示

20201226215958957.png

我们需要添加几个插件

20201226220522538.png

接下来需要做一些配置,这很重要

点击【文件】->【首选项】->【设置】

20201226220759820.png

然后在搜索栏中输入intelli sensemode,将其选择为【gcc-arm】

20201226221005800.png

按【Ctrl+Shift+P】打开命令输入栏,输入【C/C++: 编辑配置(UI)】

20201226221431306.png

然后在【定义】项目下添加如下三个宏定义

  1. __CC_ARM
  2. USE_FULL_LL_DRIVER
  3. STM32F103xE
复制代码

20201226222009332.png

其中第一条宏定义是告诉代码提示引擎使用gcc-arm的语法规则和库文件,如果不添加这条宏定义会出现如“uint32_t未定义”等错误。
后面两条宏定义我们可以在Makefile文件中找到,但是VSCode检查语法的时候并不会去读Makefile,因此需要我们手动添加。注意前面的-D是Makefile的格式。

20201226222431588.png

在上面的【包含路径】栏添加头文件包含路径

  1. Core/Inc
  2. Drivers/STM32F1xx_HAL_Driver/Inc
  3. Drivers/CMSIS/Device/ST/STM32F1xx/Include
  4. Drivers/CMSIS/Include
复制代码

我们可以保留其默认的${workspaceFolder}/**,也可以删去,看个人喜好

20201226222954232.png

同样的,我们也可以在Makefile中找到

20201226223039665.png

编译器路径选择gcc

20201226223427332.png

如果编辑器还不能进行代码提示,在搜索栏搜索【prevent】,将搜索结果中的对勾取消

20201226223703777.png

六、修改代码,编译工程

将main函数的while循环修改为如下所示:

  1.   while (1)
  2.   {
  3.     /* USER CODE END WHILE */
  4.     LL_mDelay(500);
  5.     LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_5);
  6.     LL_mDelay(500);
  7.     LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_5);
  8.     /* USER CODE BEGIN 3 */
  9.   }
复制代码

然后在bash下输入make命令,可以看到,生成了len.hex和led.bin文件

20201226224533984.png

七、下载到开发板
打开【STM32CubeProgrammer】,找到生成的文件路径,点击下载即可

20201226225121709.png

下载完后我们发现STLink连不上了,经过一番研究,最终发现在main函数开头调用了一个函数是JATG和SW失效了

20201226231339997.png

我们将其注释掉然后通过串口再烧录即可

20201226231749425.png

然后可以观察到LED0闪烁

20201226232237881.gif

八、附录
————————————————
转载:Willliam_william


收藏 评论0 发布时间:2022-8-25 21:24

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版