详细讲解stm32g4的软件工具和环境搭建 -云顶集团3118acm登录入口

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

详细讲解stm32g4的软件工具和环境搭建

[复制链接]
发布时间:2020-3-4 16:57
一、开发环境相关软件包
* {3 w# k1 f8 e$ i1 q
stm32g4系列芯片是st最新的推出的产品,与芯片、板卡配套的软件开发工具还有待逐步完善。目前我手边能获取到的软件开发环境的有stm32cubeide 1.1.0、keil 以及ac6。这几款开发工具都做了更新,各自的便利性对比如下,各位根据自己现有的系统环境进行相关程序的下载和搭建:
1 s  _8 c( c# ]2 ?
1、 首先说stm32cubeide,最新的版本更新到1.1.0
. ~9 }9 q/ c" p- x7 r4 t
云顶集团3118acm登录入口官网的search中输入stm32cubeide,在“tools & software”,选择“stm32cubeide”,
微信图片_20200304164424.png

' g! u* j  k6 l' ~) |
进入下载页面。
微信图片_20200304164432.png

/ s o5 ^- `& a) r" e( r! u! q2 _& h
根据所使用的操作系统选择下载程序。% z. ]  p7 y6 x
微信图片_20200304164450.png

$ m% s" y/ y# x# \* @ d
这里分别有debian系、通用linux、以及rpm包的系统安装文件,也有macos、windows下的安装文件,根据各自所需的环境下载对应包。工具下载完毕后分别进行安装,安装界面略过。
5 t ^  _. h: x, b; h) h j
2、 如果是keil工具,就需要到 keil云顶集团3118acm登录入口官网更新对应的工具开发包,下载地址链接: ,如果下载太慢可以用其它下载工具进行下载,另外其它包如果缺失可以在stmcu.org论坛中, 帖子里根据对应地址下载最新的keil包。

& o( r2 h, m( n, l( @5 ]
3、workbench for stm32(ac6) 是在eclipse的开发环境,在云顶集团3118acm登录入口官网 下载system workbench for stm32(需要注册),下载界面如下:
微信图片_20200304164457.png
2 c1 y6 u7 [! _
目前最新的版本是:april 12, 2019 at 16:41:04 的v2.9。
# p  b/ x$ g5 r. v# q8 `! p
; b. y3 j. j# t, q7 s5 ]
微信图片_20200304164505.jpg
2 d/ y( w u/ t# b  d% b0 }
4、st-link固件更新:% o6 p8 p& o4 k6 x: |4 x
stm32g431rb开发板在将st-link的主控芯片升级为stm32f723iek6后,相应的st-link固件也更新称为st-link-v3e,st官方提供的stsw-link007也做了相应升级,通过usb接口可直接升级板载固件。
0 h! n* |! m/ x& w2 r
该项目地址:

. s6 ?5 e! k: k
二、软件的调试和helloworld代码" |, ?' e. v7 ]8 f0 d1 p; z
以上几款软件相比之下,集成度最高还是stm32cubeide,插件的使用也是最新的;keil的包管理虽然方便但其在线更新比较慢,要下载对应的包手工升级,确实比较麻烦;workbench for stm32(ac6)最后的版本更新在2019年4月,最新的g4xx开发包v 1.1.0的版本并不支持。1 z6 z8 q3 `# n* x; z2 i
这里先用stm32cubeide开发helloworld验证一下相关包和软硬件环境,步骤如下:
9 t: {' k" \! i
1、新建一个stm32 project工程, new>>>>选择stm32 project;
微信图片_20200304164513.png
4 f x4 p1 s0 i7 ~8 e  h2 a
2、在系统download mcu的列表清单后,进入cubemx的页面;
% h- y ?5 t ^8 h$ u$ e
微信图片_20200304164520.png
) @6 s; \- j1 e9 q( {* ]4 n, x
3、在cubemx初始页面选择工程所需的mcu型号后,点击下一步:
: v- l" ^6 v  k. t( p1 _- x
微信图片_20200304164527.jpg

7 s2 r# w: l# m. v0 g' j
4、输入工程名称:helloworld,后点击下一步:
1 h; c: e. w8 e9 g1 u
微信图片_20200304164534.png
注意:这里红框部分,如果没有自动找到对应版本的固件包,需要下载或手工制定固件包的下载目录(根据各自cubemx的安装环境不同而不同):
1 {; a' h2 i7 c4 z& ~8 i
微信图片_20200304164542.png

( [8 m3 s7 _) k% y; u0 e
5、在系统自动创建成功后,在打开关联透视图提示菜单中,点击“yes”,带有helloworld.ioc文件的stm32工程就建好了:
0 c e- p8 }  i8 ]" j3 u
微信图片_20200304164549.png
(关联菜单)
) ~9 u- b- _1 ]# p% k& x; |) @) m
微信图片_20200304164555.png
(项目初始界面)9 v( k( h( t; g7 z q, c/ a
6、点击helloworld.ioc后,能看到完美的嵌入到stm32cubeide的窗体中的cubemx页面:
微信图片_20200304164602.jpg

0 ~) r) x3 `6 p0 e6 d* d s
7、选择所需功能组件的顺序如下:( l( p# v- e: m) v1 ~$ h& |1 y
1)rcc,选择晶振
微信图片_20200304164609.png

9 `, t# v x; h0 y
2)因板子带时钟晶振,激活rtc时钟功能
微信图片_20200304164615.png
! n4 n  w' `- q0 c8 m
3)根据电路图得知,与st-link3芯片关联的vcp(虚拟串口)是lpuart1低功耗串口1;
微信图片_20200304164622.png

* }0 ]1 q5 o2 x* l) ]1 e
4)选择mcu对应的引脚pin功能,如下图:引脚功能设置要参考nucleo-g431rb的原理图:
微信图片_20200304164629.png
微信图片_20200304164635.png

7 e! d; j/ k% z2 m3 e
微信图片_20200304164642.png
! p1 y/ |2 b- g6 d: j  r' j, v* ^
几个重要外设的原理图如上图,芯片的引脚功能选择入下图绿色部分:
; a) s, h0 y9 d) v
微信图片_20200304164648.png

/ ^7 `5 v% t9 u4 q  w
5)相关的功能设置,如下:a、gpio设置参数:
微信图片_20200304164655.png
: k* r2 d# d1 ]/ o3 s
b、串口参数设置:
微信图片_20200304164701.png
/ c2 k% m. }0 ^  ~5 \, r) `
c、rcc设置:
微信图片_20200304164707.png

5 v% }. t1 t/ `* w' \; f/ ]- i
d、st-link接口配置:
微信图片_20200304164714.png

) x0 m5 o; r1 ?4 d6 w: m
e、中断配置:5 \- k/ ]" k' s" o
微信图片_20200304164720.png
4 c" { f9 ?" i/ e8 m4 q
f、rtc时钟配置为lse:
微信图片_20200304164725.png
% e1 c c. k) `9 u
g、主频配置最大的170mhz
微信图片_20200304164732.png

) ^8 b ~6 t& `/ q z/ c& {
h、项目输出的内容一览,保存或关闭窗体,会自动生成相应代码
微信图片_20200304164739.png
6、在以下程序文件里添加代码:
微信图片_20200304164746.png

8 e5 ?) p) w6 u1 j
main.h 添加的代码内容如下:
  • ) t5 u$ r. \7 a4 f
/* user code begin em *///非中断延时枚举//分别延迟512、256、128、64、32、16、8、4、2、1、0enum enum_delay {  delay_512 = 512,  delay_256 = 256,  delay_128 = 128,  delay_64 = 64,  delay_32 = 32,  delay_16 = 16,  delay_8 = 8,  delay_4 = 4,  delay_2 = 2,  delay_1 = 1,  delay_0 = 0};/* user code end em */……/* user code begin private defines */#define on   1   //定义on#define off  0   //定义off
( ~# w8 z5 j, h2 i
//设置亮灯和关2 k7 l/ s- t1 u# u3 k
#define led(sta)  (sta)?hal_gpio_writepin(ld2_gpio_port,ld2_pin,gpio_pin_set):hal_gpio_writepin(ld2_gpio_port,ld2_pin,gpio_pin_reset)//闪亮led#define toggleled  hal_gpio_togglepin(ld2_gpio_port, ld2_pin);/* user code end private defines */……
▲ 左右移动,查看完整代码

7 f4 }( b1 z2 i; h7 f# h, [; g
main.c

  • 4 h1 y2 c; d2 r; {& j) b. a9 @
/* user code begin pfp */void keypass(void);/* user code end pfp *//* user code begin 0 */static enum enum_delay delay = delay_512;//static uint32_t exti_times = 0;volatile functionalstate exti_state = disable;/* user code end 0 */……..
# v& z/ c" c2 d: ?1 q
int main(void){  /* user code begin 1 */  uint8_t sta = on;  /* user code end 1 */……
1 u( j" _5 t1 @6 [5 _
/* infinite loop */  /* user code begin while */while (1) {printf("hello world!!! delay is %d\n",delay);    /* user code end while *//* user code begin 3 */led(sta);  sta = !sta;  hal_delay(delay);}  /* user code end 3 */……/* user code begin 4 */void keypass(void) {    switch (delay) {  case delay_512: {    delay = delay_256;    break;  case delay_256: {    //延时重新循环512-->256-->128....1-->0-->512 循环  其余    delay = delay_512;    break;  }    }}/** * gpio中断回调函数 * @param gpio_pin */void hal_gpio_exti_callback(uint16_t gpio_pin) {    keypass();  }}#ifdef __gnuc__/* with gcc/raisonance, small printf (option ld linker->libraries->small printf * set to 'yes') calls __io_putchar() */#define putchar_prototype int __io_putchar(int ch)#else#define putchar_prototype int fputc(int ch, file *f)#endif /* __gnuc__ */, k6 t* f& f" v2 y
/** * @brief retargets the c library printf function to the usart. * @param none * @retval none */putchar_prototype{  /* place your implementation of fputc here */  /* e.g. write a character to the eval_com1 and loop until the end of transmission */  hal_uart_transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xffff);  return ch;}/* user code end 4 */
▲ 左右移动,查看完整代码
  z' y7 q0 w5 o: {$ z
编译后,连接开发板,在stm32cubeide中用debug方式将代码下载到nucleo-g431rb开发板中。
3 o* q7 c4 g1 ~8 h$ l
微信图片_20200304164753.png
2 t; g' a6 r# `/ b. f
打开一个串口调试工具,打开串口后,能在串口工具中看见以下内容,开发板ld2灯伴随着串口信息跳动一闪一闪,当用户按键时ld2的闪烁频率进行转换,串口工具中跳动得数值也随着变化。8 c. s' q0 i1 z5 e
# r# a2 q. y6 r, o" p5 x
微信图片_20200304164759.png
(串口显示)
2 f$ l; q& p) q
微信图片_20200304164805.jpg 微信图片_20200304164812.jpg
(led2交替闪烁)
) n2 y' j* ]1 s1 j" l! j
开发环境和板子的搭配验证完成,实现可控、可编辑的,为后面的试验提供基础支撑。
8 `# @  x0 l( m5 k
发布时间:2020-3-4 16:57
3个回答
回答时间:2020-10-14 21:12:31
谢谢lz!
回答时间:2022-6-5 20:35:30
代码显示不全,请问下有附件可以下载嘛?
  k$ g  o" l9 r- e5 t6 h, d" d
回答时间:2024-5-17 22:19:36
flyingtin 发表于 2022-6-5 20:35
代码显示不全,请问下有附件可以下载嘛?

原文

关于意法半导体
联系云顶集团3118acm登录入口
隐私策略
关注云顶集团3118acm登录入口
微信公众号
手机版
网站地图