一、开发环境相关软件包" |, y; F. T7 R STM32G4系列芯片是ST最新的推出的产品,与芯片、板卡配套的软件开发工具还有待逐步完善。目前我手边能获取到的软件开发环境的有STM32CubeIDE 1.1.0、KEIL 以及AC6。这几款开发工具都做了更新,各自的便利性对比如下,各位根据自己现有的系统环境进行相关程序的下载和搭建:1、 首先说STM32CubeIDE,最新的版本更新到1.1.0 5 ^( b# j- ?3 R0 t. g+ i 根据所使用的操作系统选择下载程序。1 f* d7 u: o! }0 ^, b5 k2 @8 Q9 j! x- o" a' \5 S" S; q0 i" T 2、 如果是KEIL工具,就需要到 KEIL官网更新对应的工具开发包,下载地址链接:http://keilpack.azureedge.net/pack/Keil.STM32G4xx_DFP.1.1.0.pack ,如果下载太慢可以用其它下载工具进行下载,另外其它包如果缺失可以在STMCU.org论坛中,[Keil下载链接] 从keil的包下载非常慢,清单更新2019-10-28 帖子里根据对应地址下载最新的Keil包。' x/ R, t4 b t. U2 D* j$ X 3、Workbench for STM32(AC6) 是在Eclipse的开发环境,在官网http://www.openstm32.org 下载System Workbench for STM32(需要注册),下载界面如下:STM32G431RB开发板在将ST-LINK的主控芯片升级为STM32F723IEK6后,相应的ST-LINK固件也更新称为ST-LINK-V3E,ST官方提供的stsw-link007也做了相应升级,通过USB接口可直接升级板载固件。7 i( R: K( J6 `0 Z 该项目地址:http://www.st.com/en/development-tools/stsw-link007.html $ L4 o9 O5 n4 e; C& G7 h7 Q 二、软件的调试和Helloworld代码以上几款软件相比之下,集成度最高还是STM32CubeIDE,插件的使用也是最新的;keil的包管理虽然方便但其在线更新比较慢,要下载对应的包手工升级,确实比较麻烦;Workbench for STM32(AC6)最后的版本更新在2019年4月,最新的G4xx开发包V 1.1.0的版本并不支持。 这里先用STM32CubeIDE开发HelloWorld验证一下相关包和软硬件环境,步骤如下:& E9 i! C+ ?, h( y; k" S 1、新建一个STM32 Project工程, New>>>>选择STM32 Project; 5 S4 v+ Y2 t% a: u2 o3 u 2、在系统Download MCU的列表清单后,进入CubeMX的页面;. P O+ S5 B* i2 |% J0 `, R, I, m# ~; x( s 5、在系统自动创建成功后,在打开关联透视图提示菜单中,点击“Yes”,带有Helloworld.ioc文件的STM32工程就建好了:(关联菜单)2 x$ M8 R* k$ v% ~ (项目初始界面)6 s8 {* m1 u7 w' ~0 M# B ( a/ h- Q }- q% t 7、选择所需功能组件的顺序如下:1)RCC,选择晶振 9 M! S7 J3 [) B- O3 a) t$ w 2)因板子带时钟晶振,激活RTC时钟功能# F( |3 c4 Q# t# b; R$ G 4)选择MCU对应的引脚PIN功能,如下图:引脚功能设置要参考Nucleo-G431RB的原理图:( h8 y: n/ x3 T$ X- e7 | 4 M5 s9 I& X, E3 _' |) h1 I% M 5)相关的功能设置,如下:a、GPIO设置参数:. F; l' H9 e- n+ W e、中断配置:% l" q# M& s) E! {% K; ?9 H; C1 D5 Ug、主频配置最大的170MHz 3 _: O5 G2 w, S- L' k# e. e main.h 添加的代码内容如下:
//设置亮灯和关% h' _6 }) v: H6 Y #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 */…… ▲ 左右移动,查看完整代码 # L+ m f8 T2 t0 [( h0 }' o$ z" h main.cint main(void){ /* USER CODE BEGIN 1 */ uint8_t sta = ON; /* USER CODE END 1 */……+ z5 k5 ] m. ~, D" J8 v1 G3 w /* 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__ */7 M9 B0 V- y9 b- }- G /** * @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 */ ▲ 左右移动,查看完整代码 3 s; \0 h( v2 X K9 h7 l5 N; `4 r 编译后,连接开发板,在STM32CubeIDE中用Debug方式将代码下载到Nucleo-G431RB开发板中。& ]# E% j, A! V' z2 q2 n (LED2交替闪烁) - j# M( l; V) s2 b# ~6 D, W$ O% k+ F 开发环境和板子的搭配验证完成,实现可控、可编辑的,为后面的试验提供基础支撑。 |
STM32G系列RS485自动收发控制以及自适应波特率实战
【学习指南】基于STM32G474VET6 开发板实验经验分享(三)
【学习指南】基于STM32G474VET6 开发板实验经验分享(二)
【学习指南】基于STM32G474VET6 开发板基础实验经验分享一
【学习指南】基于STM32G474软件平台安装与使用教程
【学习指南】基于STM32G474VET6 开发板硬件资源解析
STM32 Explore | 基于STM32G474的STM32Cube生态系统线下培训
STM32固件库分享,超全系列整理
STM32G47x 双 Bank 模式下在线升级
基于STM32G473ZET6开发板设计经验分享
STM32G4板卡分享-软件工具及环境搭建 - 知乎 (zhihu.com)
原文