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

【经验分享】STM32G031无线温湿度仪开源项目 -2,使用STM32CubeMX建立项目过程

[复制链接]
STMCU小助手 发布时间:2021-11-12 01:00
使用STM32CubeMX建立项目过程3 ]' B6 c) @  ]& B7 v7 q% M
自从ST推出了STM32CubeMX以后,建立STM32项目就简单很多了,不要去找各种各样的库函数,并且去初始化这些库函数,CubeMX通过图形化的界面很容易就将各种模块的初始化搞定了,并且自动生成了项目。
& J& ^: R( z; K% P. l  `* u
, X' m) j* s* P8 Q接上一讲,我们这次就来建立项目:# B' U, o3 R9 F' v5 t$ h6 S: A6 f% ?
1,打开CubeMX以后,选“通过MCU选择器来建立新项目”
3 {: c( d. Y; `8 x. i
3 J( K7 C7 g5 e" l  @6 k$ c# m
20200212162419336.jpg

2 h* G9 u' Z# P好像有点慢,要耐心等待一下
  b5 A7 O" Q* s) N7 _" Y找到STM32G031C8,并开始项目
/ Q3 t; A8 E) {* M+ {8 l( R
: G% i3 T! u4 F9 t. V2,System Core部分:
! c! f, [( l& O0 g/ NSYS:选“Serial Wire”,这个是调试接口(二线调试口:SWCLK、SWDIO),一定要的,不然你的ST-LINK就连不上单片机了
/ S- C) C1 g( V, v) _* m
( a+ s$ Z5 B# D* E0 c! ]( j. J
20200212163225682.jpg
" J9 c  j6 I" o
RCC:是晶振,都选外部晶振:6 Q; \% e- x# k
" g' L0 ]5 N6 |, x. U
20200212163532922.jpg
. T3 g5 o- C( f* F- v! W4 |
IWDG:独立看门狗,这个需要的,先使能,生成项目后,先把它注稀掉,不然不好调试,这个以后再讲& Z$ Y: K/ X+ i( l( _/ ^
* C8 H6 e# e% _% J, L8 n
20200212164018713.jpg
: O* c0 n8 F; B8 k; h! ]0 A8 X7 ?
3,Timers部分0 {' Z& S0 W# u0 H8 q9 q7 a7 z
RTC:实时时钟,我们先使能,并且打开“internal Wake UP”,这个主要用于低功耗的时候计时,设定MCU进入低功耗以后,设定RTC开始计时及时间间隔,RTC计时到了以后,会产生一个内部中断,这个中断会立即唤醒MCU,MCU立即从下一条程序开始执行,可以说STM32的低功耗还是很容易做的。
5 N4 \. O- u6 R8 h7 d- O+ i/ ~
  j9 H2 M& n9 R5 E2 S2 ]
20200212164903477.jpg
, Q8 h3 d4 B" z. _& M
Timer3: 是一个16位的计时器,我们这里打开它,并让它1MS产生一次中断。有2个用途:1,用于串口接收,当串口收到一个字节时,打开收到数据标志,TIMER3的每MS中断计时一次,如果连续6次中断没有新的串口数据,则说明串口数据接收完毕,进入数据处理程序;2,用于内部事件(EVENT)的计时,一般延时都采用HAL_Delay(),但是这个是阻塞式的,MCU在延时的时候做不了其它的工作,如果利用Timer的中断计时,计时到了以后,再置位时间标志,在主程序里面再处理相关事件,则快而且不浪费时间。; B- m+ }0 ~* f/ k0 Q% O1 V
我们主系统时钟是64M,如图设置,并且要打开Timer3的中断
" J' ^6 P6 @% a! L: W. H
9 j$ K9 }- U& }: v0 ^4 |
20200212165833382.jpg

1 m6 m7 y  X. \
20200212165918617.jpg

& D- ^4 P. x, \2 X3 G, e' w4,Connectivity部分:
" V9 d& y& K0 E5 D. R' zUART1的设置:1,使能UART1,2,打开UART1的中断(NVIC)3,添加UART1_TX为DMA发送,我这里比较喜欢DMA发送,只要给出发送指令后,就不要管了,因为DMA是自动的;4,在GPIO Setting里面,将UART1的RX设定为内部上拉(PULL UP)
, r$ M8 u2 K3 t7 @8 L, J$ b2 g5 mUART2的设置可以按照UART1。如果UART2没有用到,UART2的RX可以不用设定内部上拉,这样在低功耗的时候更省电; U* H) T, f0 N0 R* A

$ O3 I/ m! D# J8 c
20200212170858580.jpg

7 X+ x. ~# P/ D
2020021217084129.jpg

7 Q6 q) {0 Z8 N9 x" w0 t, E9 [
20200212170957419.jpg

9 b) o1 R0 Z) j7 i0 y: t5 N  S5 Q$ t" S  m4 y# z
5,建立IO口9 T! m! m& x5 ~/ J
鼠标点击对应的IO口,选择IO的性质,然后鼠标右键点击,输入“Enter User Label”,这个很重要,后面的源程序比较好管理
9 }, g) ~8 q3 r0 n; V
- l8 r; x, A6 q/ L
20200212174441757.jpg
# E1 C' v* A9 N0 Y
6,时钟配置
  a) \% q+ l8 ], U1 j% F1 Q) A32.768KHz提供给RTC,IWDG由内部低速RC提供$ K- S1 J0 {. w* g' E- J/ i+ X
3 {! |! L$ f/ `8 m/ l3 e- }( _
20200212171502949.jpg

) E- p! F: O0 V$ f" ~外部32M晶振,经过PLL后达到总线频率64MHz3 |' S+ ^% l0 v) e, l8 A1 l# Q

. k& w6 n4 w5 `* r8 |% m* t. `3 N
20200212171634939.jpg
8 Q# j% j( H2 L1 J
7,项目管理0 t/ f* X. u  K$ l- I
项目的路径及名称,按照自己的要求
$ Y" n( g% Q; b! q3 S8 K需要注意的是,我们这里选STM32Cube IDE作为编译、调试环境$ A9 i' [+ O8 g& u1 |

3 T& [, T! R% a' i' ?
20200212172037694.jpg
- V6 [4 i& K# l( F
在Code Genarator里面,把这几个勾上,特别是把没有用到的IO口设置为Analog口,这样可以更省电。- X# S& G6 m& }8 d
, K4 o6 }7 A/ K! b3 Z
2020021217223955.jpg

3 G9 ^  k/ z' u0 [8,生成项目源程序
# E& @# c  ^1 N) U6 I9 A$ P点击“GENERATE CODE”生成项目源程序,最后记得保存项目文件
( p1 w) x( Y# s0 B已经生成好的项目文件可以在这里下载。
9 Y4 K  x4 K* x1 G. G" Q7 \0 v
  E8 I6 L! U: t* _1 T
20200212172551282.jpg
  A; ?( Y& V1 N2 ^
本项目的文件下载- r. a- ^+ C2 U- X5 c% e
  K" n) L1 d- B* m
& t2 E/ q4 e+ E4 U1 y- c5 e$ X& \& I
收藏 评论0 发布时间:2021-11-12 01:00

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版