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

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

[复制链接]
STMCU小助手 发布时间:2021-11-12 01:00
使用STM32CubeMX建立项目过程
: H- l# \- t# W9 U; O- D/ z  b自从ST推出了STM32CubeMX以后,建立STM32项目就简单很多了,不要去找各种各样的库函数,并且去初始化这些库函数,CubeMX通过图形化的界面很容易就将各种模块的初始化搞定了,并且自动生成了项目。
1 K/ A: o7 u1 ]0 G; E6 |' g* U, p- Y) J; ?
接上一讲,我们这次就来建立项目:7 O) V, z( Q" |6 N- _
1,打开CubeMX以后,选“通过MCU选择器来建立新项目”
3 P7 d) u( ?  f1 V7 X; X" n$ J. a; k
20200212162419336.jpg

0 ?3 |" F- {) V好像有点慢,要耐心等待一下
# L( _& H% ~  i) b. d4 F9 ~! R找到STM32G031C8,并开始项目! l2 G2 u" G, q% k# G9 k+ D
$ [$ b6 i9 v! `& v8 w+ @; O! s
2,System Core部分:
/ K$ r& Q& y+ w, xSYS:选“Serial Wire”,这个是调试接口(二线调试口:SWCLK、SWDIO),一定要的,不然你的ST-LINK就连不上单片机了
) y8 |- T- P6 k$ h
  S& r2 y4 `( n' r7 [7 E, S; e
20200212163225682.jpg

2 V8 k% ?/ h8 K5 ARCC:是晶振,都选外部晶振:
& C* q4 A0 E! u" @# n& F! h5 [, s3 [3 y' j- D) B9 R  p( }
20200212163532922.jpg

8 H2 a, q, J! B* SIWDG:独立看门狗,这个需要的,先使能,生成项目后,先把它注稀掉,不然不好调试,这个以后再讲. Y+ u# `5 J" _

9 o) Y7 |3 P: }- w- J; l, f# B
20200212164018713.jpg

: `& T# [$ }9 k* Q3,Timers部分. [% a1 j5 y3 K6 o
RTC:实时时钟,我们先使能,并且打开“internal Wake UP”,这个主要用于低功耗的时候计时,设定MCU进入低功耗以后,设定RTC开始计时及时间间隔,RTC计时到了以后,会产生一个内部中断,这个中断会立即唤醒MCU,MCU立即从下一条程序开始执行,可以说STM32的低功耗还是很容易做的。7 C( }# p2 J: V& A! j; z

* Y* o0 `! @" Y5 T3 Y+ I
20200212164903477.jpg

/ C4 R# ~) d- Q: O! [; ~' ^  STimer3: 是一个16位的计时器,我们这里打开它,并让它1MS产生一次中断。有2个用途:1,用于串口接收,当串口收到一个字节时,打开收到数据标志,TIMER3的每MS中断计时一次,如果连续6次中断没有新的串口数据,则说明串口数据接收完毕,进入数据处理程序;2,用于内部事件(EVENT)的计时,一般延时都采用HAL_Delay(),但是这个是阻塞式的,MCU在延时的时候做不了其它的工作,如果利用Timer的中断计时,计时到了以后,再置位时间标志,在主程序里面再处理相关事件,则快而且不浪费时间。
; J$ f  i* Q/ M% E3 E! T1 b9 _我们主系统时钟是64M,如图设置,并且要打开Timer3的中断0 [! A5 ?6 U( ^2 i" n- g6 w

' s8 I* a: B- u, o: a( H5 w
20200212165833382.jpg
% o( G$ \# y! L) L
20200212165918617.jpg
0 L7 D9 Q/ B. c2 C+ O6 E; ]
4,Connectivity部分:# M- c2 p, S1 R; ^: `/ Z
UART1的设置:1,使能UART1,2,打开UART1的中断(NVIC)3,添加UART1_TX为DMA发送,我这里比较喜欢DMA发送,只要给出发送指令后,就不要管了,因为DMA是自动的;4,在GPIO Setting里面,将UART1的RX设定为内部上拉(PULL UP)5 D5 q% I: x4 m# E. ?* y
UART2的设置可以按照UART1。如果UART2没有用到,UART2的RX可以不用设定内部上拉,这样在低功耗的时候更省电
4 g8 o. q+ Z5 n3 b1 q, P# K  Q. Z; y/ s6 u) j7 ^+ f3 i+ R# Y
20200212170858580.jpg
( R& L: h9 D% ~2 @) R+ z- L
2020021217084129.jpg

) v2 H( Y9 F( ]- U: S
20200212170957419.jpg
+ \8 c" A! Q/ l+ o( z' n
5 V% z3 \0 i" J! k0 h9 E/ E
5,建立IO口
- R& X. E3 J" i' k& h* N3 p9 W7 j& \鼠标点击对应的IO口,选择IO的性质,然后鼠标右键点击,输入“Enter User Label”,这个很重要,后面的源程序比较好管理" d( d7 j( V1 v0 e* ~+ G$ a
8 x: a3 C3 [2 Y. a) a. k8 D, E
20200212174441757.jpg
/ t& }+ t' e; t& }
6,时钟配置
" b7 D/ P% Q  ]9 r$ }, i32.768KHz提供给RTC,IWDG由内部低速RC提供
8 w$ R5 T0 Q" O. w7 h+ G% d2 g& Q/ S8 x
20200212171502949.jpg
" L) T6 {+ S) c5 g! }" {5 x
外部32M晶振,经过PLL后达到总线频率64MHz% q  L& @& |9 P( g

# q- }: c. |/ U6 V# C$ W
20200212171634939.jpg
, d' ]* p' S/ e: a
7,项目管理
- P9 N( t1 d9 V- D4 [/ F$ Y项目的路径及名称,按照自己的要求
3 _  \, {1 ?1 D7 h需要注意的是,我们这里选STM32Cube IDE作为编译、调试环境
1 o1 u4 x* }) ]7 ?2 o1 N# M' r' ]: @( s' B& y6 L' d7 M
20200212172037694.jpg
+ d) J, Z# E+ a* u' S+ o7 U1 n* C
在Code Genarator里面,把这几个勾上,特别是把没有用到的IO口设置为Analog口,这样可以更省电。# `5 r2 U9 \% S' X, [
. ~: E) {; K2 C: q! \
2020021217223955.jpg

. A; F' W; r% n; t; r& G( f, ~8,生成项目源程序9 H% g  e" U: u
点击“GENERATE CODE”生成项目源程序,最后记得保存项目文件7 m! D2 I( r" ?' g3 k
已经生成好的项目文件可以在这里下载。
% P0 |9 o9 \* P, P# c! B0 s7 u+ z2 G0 L
20200212172551282.jpg
) z/ i" w' i% C* B9 f' R
本项目的文件下载! F  Z- E; I# E! R/ Z4 m& P
  }) T6 ~! d- l2 v
  m6 R/ ^/ @; Y% _
收藏 评论0 发布时间:2021-11-12 01:00

举报

0个回答

所属标签

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