
一、开发环境相关软件包 STM32G4系列芯片是ST最新的推出的产品,与芯片、板卡配套的软件开发工具还有待逐步完善。目前我手边能获取到的软件开发环境的有STM32CubeIDE 1.1.0、KEIL 以及AC6。这几款开发工具都做了更新,各自的便利性对比如下,各位根据自己现有的系统环境进行相关程序的下载和搭建:( ^, ^& w4 Z( [$ S1、 首先说STM32CubeIDE,最新的版本更新到1.1.0 9 _4 m! J2 \( @# a 在www.ST.com 官网的Search中输入STM32CubeIDE,在“Tools & Software”,选择“STM32CubeIDE”,![]() ![]() ![]() ![]() " _$ X* w/ u' }1 Q 目前最新的版本是:April 12, 2019 at 16:41:04 的V2.9。4 u) ^8 }7 v8 w7 _5 L5 o" b* l![]() ; f4 x: O0 p2 f! @# }" A 4、ST-LINK固件更新:; r% V6 ?6 D" k! ^STM32G431RB开发板在将ST-LINK的主控芯片升级为STM32F723IEK6后,相应的ST-LINK固件也更新称为ST-LINK-V3E,ST官方提供的stsw-link007也做了相应升级,通过USB接口可直接升级板载固件。$ A. o) D# X! m# a& k 该项目地址:http://www.st.com/en/development-tools/stsw-link007.html ! Z x9 Q: Q( T/ {5 ~/ ?# I7 X4 y 二、软件的调试和Helloworld代码8 ]4 i! e* }; P ~2 a2 n以上几款软件相比之下,集成度最高还是STM32CubeIDE,插件的使用也是最新的;keil的包管理虽然方便但其在线更新比较慢,要下载对应的包手工升级,确实比较麻烦;Workbench for STM32(AC6)最后的版本更新在2019年4月,最新的G4xx开发包V 1.1.0的版本并不支持。& w# y* `8 m' R) ^& L 这里先用STM32CubeIDE开发HelloWorld验证一下相关包和软硬件环境,步骤如下:$ s" y/ h6 o- d( K' h! p 1、新建一个STM32 Project工程, New>>>>选择STM32 Project; ![]() ; n' `# {: [# O1 K 2、在系统Download MCU的列表清单后,进入CubeMX的页面;6 L) E5 j T, m3 ~![]() ) c$ ^7 o6 n! b, P9 j 3、在CubeMX初始页面选择工程所需的MCU型号后,点击下一步:![]() ![]() ![]() ![]() (关联菜单)9 N0 K/ f% b8 n' M# a" `$ V ![]() (项目初始界面) ![]() 2 z# W2 X( }$ N* {: v* b& M 7、选择所需功能组件的顺序如下:1)RCC,选择晶振 ![]() ![]() 4 `% L, P& E8 U& {5 i 3)根据电路图得知,与ST-LINK3芯片关联的VCP(虚拟串口)是LPUART1低功耗串口1;![]() ![]() ![]() $ b, d( z/ L$ x ![]() ![]() ![]() ![]() ![]() 6 o) j9 C7 \* F, [ d、ST-LINK接口配置:![]() , p2 E2 o( S J" j e、中断配置:7 j' @" }+ L" }7 E![]() * a7 e6 t1 i/ r* A" r% @% D4 k4 c f、RTC时钟配置为LSE:![]() A/ _$ ?* x V g、主频配置最大的170MHz ![]() ![]() ![]() 1 ^( e f, V* @ main.h 添加的代码内容如下://设置亮灯和关 #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 */…… ▲ 左右移动,查看完整代码 ; S+ m$ f: |7 v5 h) N& Z- _ main.c
int main(void){ /* USER CODE BEGIN 1 */ uint8_t sta = ON; /* USER CODE END 1 */…… /* 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__ */+ k$ O' {: Y) F& f /** * @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 */ ▲ 左右移动,查看完整代码 ![]() ![]() ![]() ![]() (LED2交替闪烁) 9 O& a4 h5 m# J: i! } 开发环境和板子的搭配验证完成,实现可控、可编辑的,为后面的试验提供基础支撑。& `: N# ?$ z4 S( N |
STM32固件库分享,超全系列整理
STM32G系列RS485自动收发控制以及自适应波特率实战
【学习指南】基于STM32G474VET6 开发板实验经验分享(三)
【学习指南】基于STM32G474VET6 开发板实验经验分享(二)
【学习指南】基于STM32G474VET6 开发板基础实验经验分享一
【学习指南】基于STM32G474软件平台安装与使用教程
【学习指南】基于STM32G474VET6 开发板硬件资源解析
STM32 Explore | 基于STM32G474的STM32Cube生态系统线下培训
STM32G47x 双 Bank 模式下在线升级
基于STM32G473ZET6开发板设计经验分享
STM32G4板卡分享-软件工具及环境搭建 - 知乎 (zhihu.com)
原文