STMCU小助手
发布时间:2022-8-25 21:24
|
一、新建工程 使用STM32CubeMX新建一个工程,打开STM32CubeMX,点击创建一个工程& s( |& a. ~) m& A4 p7 ]. s% M- G & q6 {3 c! ?5 d7 ~" t# {+ L! [
# F0 d/ K; A6 y5 i: Y: w6 F 点击搜索STM32F103ZE,选中需要的封装,点击开始创建
1 {. z' V* r. a- Y. k9 u1 y 我们可以先将工程保存一下,以免丢失,点击【File】->【Save Project】
. h8 { P9 i% U0 q, ^- A% h 工程新建好之后会直接进入【Pinout 】选项卡,这个时候界面会展示芯片完整引脚图,在引脚图中,我们可以对引脚功能进行配置。黄色的引脚主要是一些电源和 GND 引脚,如果某个引脚已经被使用,那么会显示为绿色。
二、配置时钟源(RCC设置) 对STM32 芯片而言,RCC 配置的重要性不言而喻。在 STM32CubeMX 中,RCC 相关设置却非常简单,因为它把时钟系统独立出来配置。在操作界面,依次点击选项卡Pinout->Peripherals->RCC 便可进入RCC 配置栏,我们只使用到 HSE,所以我们设置选项 High Speed Clock(HSE)的值为Crystal/Ceramic Resonator(使用晶振/陶瓷振荡器)即可。操作步骤如下图所示:8 v& @9 O3 {+ H+ w8 ^, | 3 Q6 a/ W2 y5 f8 M2 ?( }4 z+ y# ~
. V6 b6 _! e0 s 从上图还可以看出,在我们打开了HSE 之后,右边的引脚图中,相应的引脚会由灰色变为绿色,表示该引脚已经被使用。 接下来点击【Clock Configuration】开始配置系统时钟树。0 e8 P/ ?$ D2 U- [9 z% Y
我们把系统时钟配置分为七个步骤,分别用标号①~⑦表示,详细过程为:1 o% x1 z. P2 N5 I( } ①时钟源参数设置:HSE 或者HSI 配置。这里我们选择HSE 为时钟源,所以我们之前必须在RCC 配置中我们开启HSE。( f3 i, n% s# Y' u- D$ ? ②时钟源选择:HSE还是HSI。这里我们配置选择器选择 HSE 即可。 ③主PLL 倍频系数配置。倍频系数我们设置为x9。7 T& t' R9 m; c" ~ ④系统时钟时钟源选择:PLL,HSI 还是HSE。这里毫无疑问,我们选择 PLL,选择器选择PLLCLK 即可。 ⑤经过上面配置以后此时 SYSCLK=72Mhz。! ?4 x! T% j) p j 经过上面的 7 个步骤,就会生成标准的 72MHz 系统时钟。接下来我们只需要依次配置AHB,Systick,APB1 和APB2 的分频系数,我们都配置为 1 即可。配置完成之后,那么 HCLK=72MHZ,Systick=72MHz,PCLK1=36MHz, PCLK2=72MHz 。 " `. s; u6 D) s+ t" o
! t' r3 v1 Q* Z% p# Z 三、GPIO引脚功能设置 这里我们回到STM32CubeMX 的Pinout 选项,可以通过搜索栏输入PB5 即可找到PB5在引脚图中的位置如下图所示,然后点击PB5,在弹出的下拉菜单中,选择 IO 口的功能为GPIO_Output。(PB5接入了LED0)
6 M) C( V. P5 d. d- g/ ^. [ 四、生成工程源码 点击菜单【Project Manager】. T) \1 I& Y" ~ 1 a1 U/ f/ B6 f( C* v/ j
【Toolchain/IDE】选择Makefile - s1 k( s4 ~& ?2 e' w h2 ]0 I
9 k1 [0 L( A. H+ L; \2 Q! M; W) q 按个人喜好,我这里选LL库: h: ^5 i$ W- R; `
8 q4 \7 L |: i" i4 K0 [2 _ 然后点击【GENERATE CODE】即可生成源码
+ K% h4 h* U* E, y% E 五、配置VSCode9 l6 o3 i) a5 a 使用VSCode打开工程,【文件】->【打开文件夹】,选择生成工程的文件夹+ k9 n% O* S/ [1 r. R- ~8 r% z ! P3 V H4 N$ ^: J1 Q% S3 V
打开main.c如下所示
2 x1 O& Q# j9 d1 G; B7 r" @7 g 我们需要添加几个插件
+ y; I0 `$ A; J( P 接下来需要做一些配置,这很重要' P' P* O& Y' {2 v0 o6 ^' U 2 S" q" B+ t9 }4 [ 点击【文件】->【首选项】->【设置】6 F* F2 i: v; m1 s6 C* f t / _* o1 q% Y! p4 y$ W
% L- M6 L9 E2 E0 F# z4 m 然后在搜索栏中输入intelli sensemode,将其选择为【gcc-arm】$ X% p2 w) ?; z! Z/ Z( D/ _# W
按【Ctrl+Shift+P】打开命令输入栏,输入【C/C++: 编辑配置(UI)】! @ n9 v. c% `
然后在【定义】项目下添加如下三个宏定义( P! u5 x" N, U
4 ?# T0 d; s4 X: Z 其中第一条宏定义是告诉代码提示引擎使用gcc-arm的语法规则和库文件,如果不添加这条宏定义会出现如“uint32_t未定义”等错误。 后面两条宏定义我们可以在Makefile文件中找到,但是VSCode检查语法的时候并不会去读Makefile,因此需要我们手动添加。注意前面的-D是Makefile的格式。
在上面的【包含路径】栏添加头文件包含路径
我们可以保留其默认的${workspaceFolder}/**,也可以删去,看个人喜好) a8 E0 d7 A7 | % w; Z! J- Q% k" p, t2 |" Q& {
同样的,我们也可以在Makefile中找到6 e/ v5 T9 P6 g2 {5 l- m$ r8 b 8 I" y. ~; q6 e+ {& J8 z) x# Z
7 j7 [/ y: ?; L5 u 编译器路径选择gcc z2 _3 B: W# [, X4 x% ^, D- i7 g
如果编辑器还不能进行代码提示,在搜索栏搜索【prevent】,将搜索结果中的对勾取消& e& r( e: A, ~5 j6 T5 _% X g( [" b+ e3 @6 K
! c, o* L% o. \( O( d 六、修改代码,编译工程1 o# z) h- }+ P6 a9 {- ^$ T O 将main函数的while循环修改为如下所示:" s- \% a" Y. y4 V8 y 4 j7 I7 H+ ?8 r. ^! G6 W8 D
然后在bash下输入make命令,可以看到,生成了len.hex和led.bin文件 " M& ?$ I4 @& q6 {, @6 ?
% _9 ?# D o5 I7 ?+ J 七、下载到开发板 打开【STM32CubeProgrammer】,找到生成的文件路径,点击下载即可* z- _ O% u2 Q4 k$ _# b* o& L " j1 r& X9 p0 `% G- i
1 w; [! o* q) P: M. \1 n; m 下载完后我们发现STLink连不上了,经过一番研究,最终发现在main函数开头调用了一个函数是JATG和SW失效了
我们将其注释掉然后通过串口再烧录即可
- o+ R% F7 H6 S! m 然后可以观察到LED0闪烁: C) Q4 u8 {% C. Z ( p2 j8 j: d, \( O, Z& C1 h
0 z" T) x; l4 |# s3 U7 X- [ 八、附录 ————————————————" G, U9 ?% R3 b& p# f6 v+ Z" h8 O1 a ^ 转载:Willliam_william |
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
小白也能明白的STM32的低功耗与唤醒机制
STM32系统中2种数据掉电保护的方法
分享STM32F051中文参考手册(重制书签版)
AI工具训练营-用ChatGPT解决HID Keyboard实现的问题
STM32固件库分享,超全系列整理
STM32小白入门指南:从基础到OTA实现方案
STM32超详细学习笔记
新手必看!STM32单片机应该怎么学?
如果你解决了这些问题,就可以直接学STM32
微信公众号
手机版