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

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

[复制链接]
STMCU小助手 发布时间:2021-11-12 01:00
使用STM32CubeMX建立项目过程
4 {, [+ ]! `' L! P: M自从ST推出了STM32CubeMX以后,建立STM32项目就简单很多了,不要去找各种各样的库函数,并且去初始化这些库函数,CubeMX通过图形化的界面很容易就将各种模块的初始化搞定了,并且自动生成了项目。
0 s- ^0 H, w. ~: O% a+ a1 Q" H& @7 y' a; k# o! E
接上一讲,我们这次就来建立项目:/ t2 S, ~" c" b% B/ e9 b
1,打开CubeMX以后,选“通过MCU选择器来建立新项目”9 e5 S* l" ^9 Q) D1 C

' O; P/ b3 L: p# t
20200212162419336.jpg
- k. E' p1 u( E) Y$ K6 P! N8 `
好像有点慢,要耐心等待一下
7 s: y( e: Q, q0 }" m6 j6 W( l找到STM32G031C8,并开始项目* t5 Q3 C8 Q0 m3 J  S
$ q/ [* _! T' S( c) t# ^9 Y
2,System Core部分:
  ?( u* Q4 b$ H' lSYS:选“Serial Wire”,这个是调试接口(二线调试口:SWCLK、SWDIO),一定要的,不然你的ST-LINK就连不上单片机了9 a# U$ B8 a' R( f
, |% B/ R5 n- ]: h. I8 P9 @. M& `
20200212163225682.jpg
: f5 M3 V9 E* x3 ]
RCC:是晶振,都选外部晶振:
2 T. D% @8 m: S: M+ E! v# @) ]) j- n" G2 H2 W3 b, l  Y- H8 E7 a
20200212163532922.jpg
0 y4 o* B: z, y0 o( Q& [
IWDG:独立看门狗,这个需要的,先使能,生成项目后,先把它注稀掉,不然不好调试,这个以后再讲
# L! F: y/ j' i  S0 i
6 b3 h5 c" ~* ]) a
20200212164018713.jpg
. K) n- z* C. I$ J: O1 r
3,Timers部分
5 n( Q6 a3 s' URTC:实时时钟,我们先使能,并且打开“internal Wake UP”,这个主要用于低功耗的时候计时,设定MCU进入低功耗以后,设定RTC开始计时及时间间隔,RTC计时到了以后,会产生一个内部中断,这个中断会立即唤醒MCU,MCU立即从下一条程序开始执行,可以说STM32的低功耗还是很容易做的。
- W& a; a9 `8 H3 z( |0 E
4 j, l: T& p4 [( q& H' Q
20200212164903477.jpg

" D! J5 t/ I3 T( _) ?+ N$ GTimer3: 是一个16位的计时器,我们这里打开它,并让它1MS产生一次中断。有2个用途:1,用于串口接收,当串口收到一个字节时,打开收到数据标志,TIMER3的每MS中断计时一次,如果连续6次中断没有新的串口数据,则说明串口数据接收完毕,进入数据处理程序;2,用于内部事件(EVENT)的计时,一般延时都采用HAL_Delay(),但是这个是阻塞式的,MCU在延时的时候做不了其它的工作,如果利用Timer的中断计时,计时到了以后,再置位时间标志,在主程序里面再处理相关事件,则快而且不浪费时间。8 N4 [7 ^9 _# J
我们主系统时钟是64M,如图设置,并且要打开Timer3的中断
- m/ x! S" k" b) E8 n) o2 @3 ?* U, u+ t% Q1 X# D; e, c
20200212165833382.jpg
0 n9 \+ ^2 F2 ?8 z$ w0 Y; a
20200212165918617.jpg

" Y& s' V. o3 |) V- v9 B6 H) Y4,Connectivity部分:' U" |1 g: Y& Q8 j# S1 L
UART1的设置:1,使能UART1,2,打开UART1的中断(NVIC)3,添加UART1_TX为DMA发送,我这里比较喜欢DMA发送,只要给出发送指令后,就不要管了,因为DMA是自动的;4,在GPIO Setting里面,将UART1的RX设定为内部上拉(PULL UP)
9 E1 _1 s1 @8 gUART2的设置可以按照UART1。如果UART2没有用到,UART2的RX可以不用设定内部上拉,这样在低功耗的时候更省电0 U: b  {  f; S$ w3 f

* H- |  C1 A) d6 Q9 n) F
20200212170858580.jpg
9 ?! Y  U1 b: Z4 k6 a9 B+ n
2020021217084129.jpg
& y# M2 E: s7 C
20200212170957419.jpg

( c8 ]1 V6 M$ R1 g8 B$ p5 j$ L+ Q. ~6 i* C0 d
5,建立IO口% ]' K  L% j3 Y8 f1 B4 o
鼠标点击对应的IO口,选择IO的性质,然后鼠标右键点击,输入“Enter User Label”,这个很重要,后面的源程序比较好管理
3 C$ q$ C2 c0 M. s: X! w
1 b/ b$ Q9 f  L9 @9 a
20200212174441757.jpg

: M9 @) w% R" E$ L8 o1 K6,时钟配置
( P5 A. x! D& j9 g  L; H  t32.768KHz提供给RTC,IWDG由内部低速RC提供2 `+ B( A' [; M8 l

* t5 a* c' {, _5 I1 o4 w
20200212171502949.jpg
, Z. k3 s/ P) M) u/ [
外部32M晶振,经过PLL后达到总线频率64MHz1 j9 R) P! d% a3 C

' v: X( H  V3 l2 Q" U
20200212171634939.jpg

0 Z  T# ]' x# x7 t7,项目管理
* j. a6 l& A- f$ }7 a2 A& |6 ^项目的路径及名称,按照自己的要求0 x* {5 H! a/ ~0 Z+ V
需要注意的是,我们这里选STM32Cube IDE作为编译、调试环境
9 l3 r0 J2 K9 n& S7 X$ O& ^7 W+ w0 ?: n
20200212172037694.jpg
5 A8 U: T$ d' i" L+ Y
在Code Genarator里面,把这几个勾上,特别是把没有用到的IO口设置为Analog口,这样可以更省电。
' g/ l% {& Z! }! B2 C- i! M/ {! E8 L# d* }
2020021217223955.jpg

; v  }; E: c) H4 u8 M5 u8,生成项目源程序# B1 q2 l+ w2 `
点击“GENERATE CODE”生成项目源程序,最后记得保存项目文件
1 _  |0 C" Z' `' a* z已经生成好的项目文件可以在这里下载。
& U( U% C$ P* Z7 ~+ W5 X& Y$ F& A% o; J% A0 l3 B
20200212172551282.jpg
( U% L6 i# y. `( T5 m
本项目的文件下载
0 h; o% x$ J3 V3 [" B# j( T" t0 K& E
+ m; r9 x% Y: ^, b8 u  e
赞 收藏 评论0 发布时间:2021-11-12 01:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版