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

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

[复制链接]
STMCU小助手 发布时间:2021-11-12 01:00
使用STM32CubeMX建立项目过程9 Q' d: [8 o( k- ]: }
自从ST推出了STM32CubeMX以后,建立STM32项目就简单很多了,不要去找各种各样的库函数,并且去初始化这些库函数,CubeMX通过图形化的界面很容易就将各种模块的初始化搞定了,并且自动生成了项目。- E/ q* T3 B1 a  l

; p& d- w! T( ?. b1 a, N) q$ k( J接上一讲,我们这次就来建立项目:
$ k9 n+ W( z  c( S4 d8 g1,打开CubeMX以后,选“通过MCU选择器来建立新项目”' n2 E8 S: r0 ~# F8 h% F

! l9 w/ _! I2 b6 E6 D' x% u
20200212162419336.jpg
7 ~, a. W) e6 }9 ^+ Z8 M
好像有点慢,要耐心等待一下+ w( q( [+ y0 `' W
找到STM32G031C8,并开始项目
1 S  E; `/ z6 k
' y$ e2 }( h. x2,System Core部分:
0 Y# I6 n/ E# j, e1 VSYS:选“Serial Wire”,这个是调试接口(二线调试口:SWCLK、SWDIO),一定要的,不然你的ST-LINK就连不上单片机了
; q8 Q0 b- W* r/ t3 S
  b1 w2 }. B( _5 Z
20200212163225682.jpg

4 W% C% }- A4 Y1 hRCC:是晶振,都选外部晶振:
$ Y7 F5 S/ X7 l3 D  n- s1 p: r2 N0 V4 {, E+ b
20200212163532922.jpg
5 E; D' |/ |" Y' R7 g. A* u
IWDG:独立看门狗,这个需要的,先使能,生成项目后,先把它注稀掉,不然不好调试,这个以后再讲8 ~3 S  D' o1 A# [* {2 U( A
  ~; q1 R7 z; D6 v& J1 V3 B- t
20200212164018713.jpg

5 ]% u1 w# ]. b9 i3 h; Y3,Timers部分9 G/ g% U% `9 A4 g9 J. l
RTC:实时时钟,我们先使能,并且打开“internal Wake UP”,这个主要用于低功耗的时候计时,设定MCU进入低功耗以后,设定RTC开始计时及时间间隔,RTC计时到了以后,会产生一个内部中断,这个中断会立即唤醒MCU,MCU立即从下一条程序开始执行,可以说STM32的低功耗还是很容易做的。
- i0 a+ F* P" t6 q' ?& g# G7 Y
7 S5 i% l  s* ~2 S* o
20200212164903477.jpg

3 j+ h0 W* w, W4 z6 QTimer3: 是一个16位的计时器,我们这里打开它,并让它1MS产生一次中断。有2个用途:1,用于串口接收,当串口收到一个字节时,打开收到数据标志,TIMER3的每MS中断计时一次,如果连续6次中断没有新的串口数据,则说明串口数据接收完毕,进入数据处理程序;2,用于内部事件(EVENT)的计时,一般延时都采用HAL_Delay(),但是这个是阻塞式的,MCU在延时的时候做不了其它的工作,如果利用Timer的中断计时,计时到了以后,再置位时间标志,在主程序里面再处理相关事件,则快而且不浪费时间。* i5 U0 i) d8 ?/ l
我们主系统时钟是64M,如图设置,并且要打开Timer3的中断
2 Z; b7 x: l% F% V& C
1 y3 c9 K4 e; Q9 R
20200212165833382.jpg

5 e7 l/ {; L, j' ?: w
20200212165918617.jpg

# E. T4 L4 [0 D' p) k4,Connectivity部分:' t6 L. ?- e  f. D) J
UART1的设置:1,使能UART1,2,打开UART1的中断(NVIC)3,添加UART1_TX为DMA发送,我这里比较喜欢DMA发送,只要给出发送指令后,就不要管了,因为DMA是自动的;4,在GPIO Setting里面,将UART1的RX设定为内部上拉(PULL UP)
, Y+ @" p7 K% ^5 C3 a8 p1 g* iUART2的设置可以按照UART1。如果UART2没有用到,UART2的RX可以不用设定内部上拉,这样在低功耗的时候更省电
6 k# k! d9 U; t( Z" B, @' n) `% i3 i' ?& F+ _8 O9 T$ n! N
20200212170858580.jpg

9 m; d9 @' }4 O) A: |! O
2020021217084129.jpg
5 ]5 d1 ?. ~: T; h  ^6 Q
20200212170957419.jpg

* @* s' |! }8 W* v$ \* l( f) z) i# I* q- H
5,建立IO口3 w: H2 A& E' c, x' h& a
鼠标点击对应的IO口,选择IO的性质,然后鼠标右键点击,输入“Enter User Label”,这个很重要,后面的源程序比较好管理$ x* r, r) t$ k. C: e: `& ^9 U

6 L, a6 ]4 }' i8 z1 V( ?) B2 c
20200212174441757.jpg
, M1 w/ v$ b  I  e
6,时钟配置
+ ]3 D. ^: o/ B$ b; k0 j% ^1 r" w32.768KHz提供给RTC,IWDG由内部低速RC提供
* h$ m9 i# ]7 Z8 {/ B
3 T1 [* t3 `  b. d7 d( \
20200212171502949.jpg

- Q) T5 f- ]6 X, E外部32M晶振,经过PLL后达到总线频率64MHz! Y/ S3 o' G% D5 ~

1 C" I( L6 i( p+ ?+ |# p" _/ W2 w
20200212171634939.jpg
6 p7 w4 r2 Y+ E4 ~7 {( p
7,项目管理6 g) S: M4 O5 F1 K7 }% l8 Y+ G
项目的路径及名称,按照自己的要求
# n2 E! W% L; |5 `4 O& B需要注意的是,我们这里选STM32Cube IDE作为编译、调试环境6 C; w' `$ P; C) r2 Q
' K; r, U8 ]) S  x, a' ~
20200212172037694.jpg
; k6 Y' c3 z  G/ A( ]; J. w% u6 X
在Code Genarator里面,把这几个勾上,特别是把没有用到的IO口设置为Analog口,这样可以更省电。5 d. i; ]1 P- P& Q5 ]! U
: e/ p! p! q; f' O( @
2020021217223955.jpg

4 l( ~) {0 _! _6 c& P8,生成项目源程序
- g1 \, `) _3 b2 P) `点击“GENERATE CODE”生成项目源程序,最后记得保存项目文件' r2 f0 d+ i5 R$ _$ y
已经生成好的项目文件可以在这里下载。9 t! E+ j1 J1 U6 ]

& o4 j3 Q' M: I9 B  ~1 z( M& [$ v
20200212172551282.jpg
% K( `2 u$ y' p$ v
本项目的文件下载2 y$ g9 Q5 j, }2 s, b0 L" i. k
0 l7 x4 u% j0 e9 I6 Z

: k! ]3 T; j6 X( |1 v7 {1 _1 b3 K7 D
收藏 评论0 发布时间:2021-11-12 01:00

举报

0个回答

所属标签

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