
一、开发环境相关软件包 STM32G4系列芯片是ST最新的推出的产品,与芯片、板卡配套的软件开发工具还有待逐步完善。目前我手边能获取到的软件开发环境的有STM32CubeIDE 1.1.0、KEIL 以及AC6。这几款开发工具都做了更新,各自的便利性对比如下,各位根据自己现有的系统环境进行相关程序的下载和搭建:* p' `0 n4 g5 Q( t% J1、 首先说STM32CubeIDE,最新的版本更新到1.1.0 ![]() . S/ H6 V; l4 Q! I2 V 进入下载页面。![]() ![]() * D% q. [+ z) s0 B/ a) p( ~ 这里分别有Debian系、通用Linux、以及RPM包的系统安装文件,也有macOS、Windows下的安装文件,根据各自所需的环境下载对应包。工具下载完毕后分别进行安装,安装界面略过。5 o& O7 O% M( v/ \ | 2、 如果是KEIL工具,就需要到 KEIL官网更新对应的工具开发包,下载地址链接:http://keilpack.azureedge.net/pack/Keil.STM32G4xx_DFP.1.1.0.pack ,如果下载太慢可以用其它下载工具进行下载,另外其它包如果缺失可以在STMCU.org论坛中,[Keil下载链接] 从keil的包下载非常慢,清单更新2019-10-28 帖子里根据对应地址下载最新的Keil包。![]() % t1 n+ G6 x- m9 e7 j7 c- J 目前最新的版本是:April 12, 2019 at 16:41:04 的V2.9。+ B9 S: L+ y* ^0 G) V8 ~" o) d: {9 B) h/ N5 E, a ![]() STM32G431RB开发板在将ST-LINK的主控芯片升级为STM32F723IEK6后,相应的ST-LINK固件也更新称为ST-LINK-V3E,ST官方提供的stsw-link007也做了相应升级,通过USB接口可直接升级板载固件。 该项目地址:http://www.st.com/en/development-tools/stsw-link007.html + ]# J5 O$ s( \) [7 L l. c 二、软件的调试和Helloworld代码以上几款软件相比之下,集成度最高还是STM32CubeIDE,插件的使用也是最新的;keil的包管理虽然方便但其在线更新比较慢,要下载对应的包手工升级,确实比较麻烦;Workbench for STM32(AC6)最后的版本更新在2019年4月,最新的G4xx开发包V 1.1.0的版本并不支持。 这里先用STM32CubeIDE开发HelloWorld验证一下相关包和软硬件环境,步骤如下:; k8 W3 ?" ?& t8 `6 ~ 1、新建一个STM32 Project工程, New>>>>选择STM32 Project; ![]() % H8 R- R" y' y. Y. ~) ]3 v 2、在系统Download MCU的列表清单后,进入CubeMX的页面;6 t/ }/ q, N: ^$ ]7 l5 N* z![]() ) Z: @) l1 g1 a' T+ ~ 3、在CubeMX初始页面选择工程所需的MCU型号后,点击下一步:![]() # Q! S& f! x$ H 4、输入工程名称:HelloWorld,后点击下一步:![]() ![]() ![]() (关联菜单)6 Y% J" [, |$ M: B& G ![]() (项目初始界面) ![]() % J7 H4 S* ?1 [* [' { 7、选择所需功能组件的顺序如下:1)RCC,选择晶振 ![]() ![]() ![]() ![]() ![]() ![]() 6 V& `2 ]# ^ U! i- i% w% N 几个重要外设的原理图如上图,芯片的引脚功能选择入下图绿色部分:![]() ![]() ; d1 d1 S$ d* J; {! L- ]' G+ R b、串口参数设置:![]() ![]() 7 `9 L1 i( C- ^ d、ST-LINK接口配置:![]() ![]() ![]() g、主频配置最大的170MHz ![]() ![]() ![]() + t, [7 ?/ O! M) c1 E) D main.h 添加的代码内容如下://设置亮灯和关/ H) r' j: L. F #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 */…… ▲ 左右移动,查看完整代码 int main(void){ /* USER CODE BEGIN 1 */ uint8_t sta = ON; /* USER CODE END 1 */……4 ^( \, W% L# K/ W1 } /* 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__ */& l ~$ l# ~: l W) d# { /** * @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 */ ▲ 左右移动,查看完整代码 9 { P1 ~" h) V. u, E. e 编译后,连接开发板,在STM32CubeIDE中用Debug方式将代码下载到Nucleo-G431RB开发板中。![]() ![]() : A# [: y! i* e' G' e. s
![]() ![]() (LED2交替闪烁) |
STM32G4板卡分享-软件工具及环境搭建 - 知乎 (zhihu.com)
原文