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

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

[复制链接]
STMCU小助手 发布时间:2021-11-12 01:00
使用STM32CubeMX建立项目过程+ b7 z2 x7 B9 [( j. n
自从ST推出了STM32CubeMX以后,建立STM32项目就简单很多了,不要去找各种各样的库函数,并且去初始化这些库函数,CubeMX通过图形化的界面很容易就将各种模块的初始化搞定了,并且自动生成了项目。( t; V7 V: X5 V/ N$ U9 \4 G. J

$ r0 `4 c/ c  a  H% o接上一讲,我们这次就来建立项目:
/ N1 I6 l! Q+ h  d- h# U; q1,打开CubeMX以后,选“通过MCU选择器来建立新项目”' ~5 M, Q1 n8 r& {) _) M4 h, y9 \) w; b
1 v0 O' b! p7 [3 l& F% V0 B
20200212162419336.jpg
  M- R- S/ S  f( r
好像有点慢,要耐心等待一下
4 R' }6 @1 j" b" M6 m. e. B* W找到STM32G031C8,并开始项目5 S# W1 I9 m; e: d& Z2 U

0 n' E' Q  ~* s2,System Core部分:
0 I/ _' I0 [) T! G6 X: S# TSYS:选“Serial Wire”,这个是调试接口(二线调试口:SWCLK、SWDIO),一定要的,不然你的ST-LINK就连不上单片机了
7 n9 ^1 X% J/ F6 m& ^& \
+ y0 i  Q6 t' {5 _* h9 a0 y* \* T% `
20200212163225682.jpg
; l/ u" q! l5 H- ?2 H  P5 j
RCC:是晶振,都选外部晶振:
- w& ~1 p% D2 h; {
% Q8 _( P% k5 F0 |8 J" c/ y/ k( g" M
20200212163532922.jpg

4 i1 A4 S. j) D8 C8 p6 DIWDG:独立看门狗,这个需要的,先使能,生成项目后,先把它注稀掉,不然不好调试,这个以后再讲' h3 ~3 F: C" u+ G6 k; `  R

% Q2 h7 H! b% O  \0 R2 X
20200212164018713.jpg

2 ?, {3 T, ^& \( w; D# n3,Timers部分
9 b/ z6 A( N) bRTC:实时时钟,我们先使能,并且打开“internal Wake UP”,这个主要用于低功耗的时候计时,设定MCU进入低功耗以后,设定RTC开始计时及时间间隔,RTC计时到了以后,会产生一个内部中断,这个中断会立即唤醒MCU,MCU立即从下一条程序开始执行,可以说STM32的低功耗还是很容易做的。+ X+ I! P5 U' l& P$ w( U
" [$ `% H  ~5 T8 S! c7 ~
20200212164903477.jpg
* n8 x7 o  @! S, ]7 G8 U
Timer3: 是一个16位的计时器,我们这里打开它,并让它1MS产生一次中断。有2个用途:1,用于串口接收,当串口收到一个字节时,打开收到数据标志,TIMER3的每MS中断计时一次,如果连续6次中断没有新的串口数据,则说明串口数据接收完毕,进入数据处理程序;2,用于内部事件(EVENT)的计时,一般延时都采用HAL_Delay(),但是这个是阻塞式的,MCU在延时的时候做不了其它的工作,如果利用Timer的中断计时,计时到了以后,再置位时间标志,在主程序里面再处理相关事件,则快而且不浪费时间。
$ O' S! t& |: W! {$ X0 I我们主系统时钟是64M,如图设置,并且要打开Timer3的中断
/ M3 a; ^6 U0 ?2 U0 d" [9 G4 _$ M: W$ X$ Z. T* u- u
20200212165833382.jpg

$ ^! ~9 u1 c- ~7 w% w
20200212165918617.jpg
2 Q) }& M% [+ _7 T& e( O1 h
4,Connectivity部分:
8 Q3 o) F0 E( C( U. x* l% b) zUART1的设置:1,使能UART1,2,打开UART1的中断(NVIC)3,添加UART1_TX为DMA发送,我这里比较喜欢DMA发送,只要给出发送指令后,就不要管了,因为DMA是自动的;4,在GPIO Setting里面,将UART1的RX设定为内部上拉(PULL UP)
' r( ^) t8 B1 V+ ZUART2的设置可以按照UART1。如果UART2没有用到,UART2的RX可以不用设定内部上拉,这样在低功耗的时候更省电
0 ]! A! y* a' E, R9 y6 u5 C* Q" e. }! _1 T7 O$ c
20200212170858580.jpg

) q0 R+ ~) t. D8 \9 t# r
2020021217084129.jpg

) U) F8 r: G% {' q" f* k
20200212170957419.jpg
* u! N1 N- h- T) I  f
! A  b0 H* b- n1 q1 }
5,建立IO口
' P4 a! a5 `7 `# y0 f9 w  ~5 _鼠标点击对应的IO口,选择IO的性质,然后鼠标右键点击,输入“Enter User Label”,这个很重要,后面的源程序比较好管理# p0 o: h! M6 P% p

2 A! I* N& v4 w. n$ I$ M; k
20200212174441757.jpg

8 k) m4 D, g3 |+ s, x6,时钟配置
% Z& e& i5 R" _$ U- f32.768KHz提供给RTC,IWDG由内部低速RC提供
# x% |" m: ]& y: x* A& p5 I# \5 D9 V
$ R+ w; h/ }1 X- R# F
20200212171502949.jpg
7 v! ~% m) ^% w& O" g! ~
外部32M晶振,经过PLL后达到总线频率64MHz! R7 F( R: V5 r0 |' `! {
/ G- l: l. s7 l" q, X1 ?9 b' u
20200212171634939.jpg
3 ~% Z# N  M- a0 f7 H
7,项目管理
$ f/ r- |6 E8 @+ y9 d; c项目的路径及名称,按照自己的要求8 K" r" C) [# [4 a( R( _: f' C3 Y4 ]% R
需要注意的是,我们这里选STM32Cube IDE作为编译、调试环境# T2 m: E% S  @& s6 R
1 T( w+ q5 s( I8 n. F" a2 K$ h9 j
20200212172037694.jpg
1 ]! k6 V. B/ e6 ]  I" G
在Code Genarator里面,把这几个勾上,特别是把没有用到的IO口设置为Analog口,这样可以更省电。' d0 @: n, N1 \( F$ ]' B' a
7 s7 t/ `3 p+ I
2020021217223955.jpg

* v* b) f; j8 e' {% Y( K" |* M8,生成项目源程序
9 H2 W$ f. S  n# z$ \" u点击“GENERATE CODE”生成项目源程序,最后记得保存项目文件
7 E8 F3 h0 D* r$ x已经生成好的项目文件可以在这里下载。
1 x9 x9 O) \8 q  T& b: l
5 Z0 W, v+ m  Z( r9 Y+ ^5 X$ s
20200212172551282.jpg

$ k* |' l( F  X9 |# R本项目的文件下载  u& `. A4 u3 ]) C) h
  g& _2 G5 x0 M( q( w0 v* ~

& {- |2 ]2 y; I! S. M* D* o/ n
收藏 评论0 发布时间:2021-11-12 01:00

举报

0个回答

所属标签

相似分享

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