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

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

[复制链接]
STMCU小助手 发布时间:2021-11-12 01:00
使用STM32CubeMX建立项目过程
% l) U, g, |) {2 A  H3 I. e自从ST推出了STM32CubeMX以后,建立STM32项目就简单很多了,不要去找各种各样的库函数,并且去初始化这些库函数,CubeMX通过图形化的界面很容易就将各种模块的初始化搞定了,并且自动生成了项目。
3 m% A+ E6 _7 f; }! D) _& n$ M3 R! r
" u7 w9 X7 F- `  i9 r  V接上一讲,我们这次就来建立项目:, i8 E3 g6 G. W7 h- B% D0 y7 G
1,打开CubeMX以后,选“通过MCU选择器来建立新项目”
& K' ^4 k4 Z; _/ q- W2 V0 f, T% r5 y- P
20200212162419336.jpg

+ U5 Z' X* h. n; e好像有点慢,要耐心等待一下
2 r2 c$ O  B! L# n$ X找到STM32G031C8,并开始项目
. Y" t' Z1 A  j; S8 y9 b
4 T+ v" T/ |& }  |2,System Core部分:
# Y% q+ f' t3 \% G$ jSYS:选“Serial Wire”,这个是调试接口(二线调试口:SWCLK、SWDIO),一定要的,不然你的ST-LINK就连不上单片机了
! g$ c5 c3 Y* V+ P9 [  y1 _7 t3 S; ~% x$ Z
20200212163225682.jpg
" n0 k! o- V" f+ [9 B  o
RCC:是晶振,都选外部晶振:
+ y! s; {5 g5 x3 G& E; R; B9 L! H7 A: U
20200212163532922.jpg
% T3 Y) j& J( B% X* N4 ~' ?$ a
IWDG:独立看门狗,这个需要的,先使能,生成项目后,先把它注稀掉,不然不好调试,这个以后再讲8 @  h9 z, b4 h8 u

- k6 k! r2 u! B/ B4 r
20200212164018713.jpg
+ F+ Q1 S( a, x6 Y- H. g
3,Timers部分4 {. k9 m5 O8 N( f- A2 O
RTC:实时时钟,我们先使能,并且打开“internal Wake UP”,这个主要用于低功耗的时候计时,设定MCU进入低功耗以后,设定RTC开始计时及时间间隔,RTC计时到了以后,会产生一个内部中断,这个中断会立即唤醒MCU,MCU立即从下一条程序开始执行,可以说STM32的低功耗还是很容易做的。4 O) I. r; N4 m( Q! d9 L

  b  e6 _% v8 B5 c  S
20200212164903477.jpg

! U6 f% Z4 o7 I: E9 ?# WTimer3: 是一个16位的计时器,我们这里打开它,并让它1MS产生一次中断。有2个用途:1,用于串口接收,当串口收到一个字节时,打开收到数据标志,TIMER3的每MS中断计时一次,如果连续6次中断没有新的串口数据,则说明串口数据接收完毕,进入数据处理程序;2,用于内部事件(EVENT)的计时,一般延时都采用HAL_Delay(),但是这个是阻塞式的,MCU在延时的时候做不了其它的工作,如果利用Timer的中断计时,计时到了以后,再置位时间标志,在主程序里面再处理相关事件,则快而且不浪费时间。
/ o: q2 ]0 z4 f: Y7 |' ^. m+ L0 j我们主系统时钟是64M,如图设置,并且要打开Timer3的中断" c3 [- L/ u8 m* \( O
8 `9 q5 ^: z  v; S" i% j
20200212165833382.jpg

. _9 v; h% d! E, v/ g/ l& @& L
20200212165918617.jpg
3 p8 N) \! ?7 d7 Z' t. @# U/ m
4,Connectivity部分:
! B$ k* Y; A- [9 e: o9 [/ ~UART1的设置:1,使能UART1,2,打开UART1的中断(NVIC)3,添加UART1_TX为DMA发送,我这里比较喜欢DMA发送,只要给出发送指令后,就不要管了,因为DMA是自动的;4,在GPIO Setting里面,将UART1的RX设定为内部上拉(PULL UP); C8 a8 @3 b" P2 E9 k
UART2的设置可以按照UART1。如果UART2没有用到,UART2的RX可以不用设定内部上拉,这样在低功耗的时候更省电8 s+ S; p4 K: e$ z5 {' z% _
# g8 T& e8 D" u2 ^4 v# L/ M; b" m
20200212170858580.jpg
1 V# Y" z7 t+ @1 w
2020021217084129.jpg
' r1 `3 [. W: f* |; }1 k& _
20200212170957419.jpg

& B0 t7 K$ m2 o: b  ~- Z* t6 y- }2 C
5,建立IO口
. u' ^# o8 i2 `& l3 F) I* X鼠标点击对应的IO口,选择IO的性质,然后鼠标右键点击,输入“Enter User Label”,这个很重要,后面的源程序比较好管理* K8 ]( F% G9 J0 F, L
* @& _2 p/ Q/ \/ X7 ]. a
20200212174441757.jpg
2 w& ]' z: @- U
6,时钟配置
: J0 o" T. c. a32.768KHz提供给RTC,IWDG由内部低速RC提供
) S8 h. n6 F4 z6 d3 B0 E& X7 j, V* J7 w4 }$ {: n
20200212171502949.jpg

/ S6 G. B6 S3 O% [* I6 W外部32M晶振,经过PLL后达到总线频率64MHz) \$ T8 @% g7 \* U2 P0 ~2 q

) R* P1 G! V1 u7 h6 F
20200212171634939.jpg

+ i' q2 p0 w( d7,项目管理, d% J" s( E/ c' \0 U
项目的路径及名称,按照自己的要求
& U0 S1 w! J. A7 O2 T需要注意的是,我们这里选STM32Cube IDE作为编译、调试环境$ [+ |  L9 {+ w
8 r; M3 }5 f6 D6 U
20200212172037694.jpg
1 e6 W" V9 a& Z% k4 l+ P& I3 k+ ?
在Code Genarator里面,把这几个勾上,特别是把没有用到的IO口设置为Analog口,这样可以更省电。: K6 G/ D' A7 X, A% M

- L0 l8 d* X- u
2020021217223955.jpg
! c. O$ I5 b% R1 a
8,生成项目源程序
; D4 R! s3 Q2 x+ Y  |7 V" b% g* Z点击“GENERATE CODE”生成项目源程序,最后记得保存项目文件6 `5 E, m$ \7 `; A) j0 J" t
已经生成好的项目文件可以在这里下载。7 ]3 S* y2 @- o: x

$ C) }' L9 |2 R, h. ]2 K
20200212172551282.jpg

3 v: x" Q; `) `# o本项目的文件下载/ b) N! H/ {7 X  G( l

3 a2 w& [: [. Q: ]
' \8 Z1 T& N' V8 G% Y
收藏 评论0 发布时间:2021-11-12 01:00

举报

0个回答

所属标签

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